GetNamedSecurityInfo schlägt fehl
-
Hallo,
ich kämpfe mit GetNamedSecurityInfo(...). Dabei habe ich das
Problem, dass der Befehl bei der Anwendung auf Dateien
wunderbar funktioniert, aber wenn ich ihn auf die Registry
anwende schlägt er fehl. Hat von Euch jemand eine Idee?
Hier mein verwendeter Code:// Hier angewendet auf Dateien, funktioniert if( true ) { PACL pOldDACL = NULL, pNewDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; LPTSTR pFileName = _T("C:\\Temp"); DWORD dwRes = GetNamedSecurityInfo( pFileName, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDACL, NULL, &pSD ); // ERROR: GetNamedSecurityInfo() failed if( ERROR_SUCCESS != dwRes) { AfxMessageBox(_T("\"SE_FILE_OBJECT\" hat NICHT Funktioniert")); } } // Hier angewendet auf die Registry, funktioniert nicht, // Rueckgabewert ist 87 ==> Falsche Parameter if( true ) { PACL pOldDACL = NULL, pNewDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; LPTSTR pFileName = _T("HKEY_LOCAL_MACHINE\SYSTEM\\ControlSet001\\UllisTest"); DWORD dwRes = GetNamedSecurityInfo( pFileName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDACL, NULL, &pSD ); // ERROR: GetNamedSecurityInfo() failed if( ERROR_SUCCESS != dwRes) { // ich lande hier AfxMessageBox(_T("\"SE_FILE_OBJECT\" hat NICHT Funktioniert")); } }Noch zur Umgebung: Visual Studio 6.0 und Windows Xp Sp2
Gruss Ulli
-
Erstmal fehlt ein Backslash nach HKEY_LOCAL_MACHINE, aber das man so auf die Registry zugreifen kann ist mir neu. Ich hätte wahrscheinlich versucht den Key in ein MemFile zu schreiben.
-
connan schrieb:
Erstmal fehlt ein Backslash nach HKEY_LOCAL_MACHINE
Uups, hast natuerlich recht, an dem liegts aber leider nicht.
Danke fuer die Antwort
-
Im Zweifel ist es einfach immer wieder gut, die Dokumentation zu lesen...

Siehe http://msdn.microsoft.com/en-us/library/aa379593(VS.85).aspx
SE_REGISTRY_KEY
Indicates a registry key. A registry key object can be in the local registry, such as CLASSES_ROOT\SomePath or in a remote registry, such as \\ComputerName\CLASSES_ROOT\SomePath.The names of registry keys must use the following literal strings to identify the predefined registry keys: "CLASSES_ROOT", "CURRENT_USER", "MACHINE", and "USERS".
-
Martin Richter schrieb:
Im Zweifel ist es einfach immer wieder gut, die Dokumentation zu lesen...

Oh nein! Megapeinlich
!
Kaum macht mans richtig schon funktionierts, poste mal
nachfolgend den funktinierenden code:PACL pOldDACL = NULL, pNewDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; // hier der funktionierende Key LPTSTR pFileName = _T("MACHINE\\SYSTEM\\ControlSet001\\UllisTest");; DWORD dwRes = GetNamedSecurityInfo( pFileName, SE_REGISTRY_KEY, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDACL, NULL, &pSD );Danke Martin!