![]() |
[Gelöst] BuildExplicitAccessWithName - LIMIT_CONTROL: Wie rückgängig machen ?
Mit der 1. Procedure wird der Zugriff auf eine USB-HDD gesperrt.
Mit der 2. Procedure soll der Zugriff wieder möglich werden. Geht aber nicht...wo ist der Fehler?
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject); //LIMIT_CONTROL
const FULL_CONTROL = $001F01FF; READ_EXEC_CONTROL = $001200A9; LIMIT_CONTROL = $001000A9; MODIFY_CONTROL = $001301BF; var path: string; pNewDACL : PACL; EA : array [0..5] of EXPLICIT_ACCESS; begin path:='G:\'; ZeroMemory(@EA,6*Sizeof(EXPLICIT_ACCESS)); BuildExplicitAccessWithName(@EA[0], PChar('USER'), LIMIT_CONTROL , SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); BuildExplicitAccessWithName(@EA[2], PChar('IUSR_<COMPUTERNAME>'), MODIFY_CONTROL , SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); // access for other user BuildExplicitAccessWithName(@EA[4], PChar('SYSTEM'),LIMIT_CONTROL , SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); SetEntriesInAcl(1, @EA[0], nil, pNewDACL); SetEntriesInAcl(1, @EA[2], pNewDACL, pNewDACL); SetEntriesInAcl(1, @EA[4], pNewDACL, pNewDACL); SetNamedSecurityInfo(PChar(path), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NIL, NIL, pNewDACL, NIL); end; procedure TForm1.Button6Click(Sender: TObject); //FULL_CONTROL const FULL_CONTROL = $001F01FF; READ_EXEC_CONTROL = $001200A9; LIMIT_CONTROL = $001000A9; MODIFY_CONTROL = $001301BF; var path: string; pNewDACL : PACL; EA : array [0..5] of EXPLICIT_ACCESS; begin path:='G:\'; ZeroMemory(@EA,6*Sizeof(EXPLICIT_ACCESS)); BuildExplicitAccessWithName(@EA[0], PChar('USER'), FULL_CONTROL,SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); BuildExplicitAccessWithName(@EA[2], PChar('IUSR_<COMPUTERNAME>'), MODIFY_CONTROL , SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); // access for other user BuildExplicitAccessWithName(@EA[4], PChar('SYSTEM'),FULL_CONTROL,SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); SetEntriesInAcl(1, @EA[0], nil, pNewDACL); SetEntriesInAcl(1, @EA[2], pNewDACL, pNewDACL); SetEntriesInAcl(1, @EA[4], pNewDACL, pNewDACL); SetNamedSecurityInfo(PChar(path), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NIL, NIL, pNewDACL, NIL); end; |
AW: BuildExplicitAccessWithName - LIMIT_CONTROL: Wie rückgängig machen
Einige der APIs haben ein Result, daß einem sagt, was sie nicht mochten. :stupid:
PS: Der Compiler meckert nicht zufällig über eine der Variablen? :wink: Zitat:
|
AW: BuildExplicitAccessWithName - LIMIT_CONTROL: Wie rückgängig machen
Das sind die Rückgabe-Werte der letzten 4 Zeilen bei BEIDEN Prozeduren:
1332 1332 0 0 ------------------------- Error 1332 is ERROR_NONE_MAPPED "No mapping between account names and security IDs was done." (winerror.h) Die 1. Proc funktioniert, das heisst: USB-HDD ist "tot". In der Datenträgerverwaltung wird die USB-HDD normal angezeigt. |
AW: BuildExplicitAccessWithName - LIMIT_CONTROL: Wie rückgängig machen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe nun einen Code, mit dem der Zugriff wieder möglich ist.
Wer selbst experimentieren möchte, sollte UNBEDINGT eine leere HDD oder eine mit nutzlosen Daten nehmen!
Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject); //FULL_CONTROL for Everyone
var TmpString: String; pSD : Pointer; NewDacl, OldDacl: PACl; EA: array [0..5] of EXPLICIT_ACCESS; ret : Cardinal; begin TmpString := 'G:\'; GetNamedSecurityInfo(PChar(TmpString), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, @OldDacl, nil, pSD); BuildExplicitAccessWithName(@EA, PChar('Everyone'), GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT); SetEntriesInAcl(1, @EA, OldDacl, NewDacl); ret:= SetNamedSecurityInfo(PChar(TmpString), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, NewDacl, nil); if ret= ERROR_SUCCESS then ShowMessage('Bei diesem Objekt wurden keine Objekttypen zugeordnet.'+#13#10+ 'Achtung: Dies ist ein mögliches Sicherheitsrisiko, weil jeder,'+#13#10+ 'der Zugriff auf dieses Objekt hat, dieses besitzen kann.'+#13#10+ 'Der Besitzer dieses Objekts sollte so bald wie möglich'+#13#10+ 'Berechtigungen zuordnen.'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz