Moin, moin,
Delphi-Quellcode:
//
// STEP 5: Get size information for DACL.
//
AclInfo.AceCount := 0;
// Assume NULL DACL.
AclInfo.AclBytesFree := 0;
AclInfo.AclBytesInUse := sizeof(
ACL);
// if ptrACL = nil then [b]<-------- muss raus,[/b]
// fDaclPresent := FALSE; [b]<--- geht bei leeren Dir's schief[/b]
// ist eigentlich auch Unsinn, das geholte Ergebniss wieder zu überschreiben
// If not NULL DACL, gather size information from DACL.
if Not fDaclPresent
then
Bei der Gelegenheit sind mir ein paar misteriöse Dinge aufgefallen:
1.) Rechte mit einem Domänen-Admin auf 'Jeder' setzen geht schief, wenn nur Berechtigungen für lokale Benutzer vergeben sind, auch wenn's nur auf '\\dieserPC\Gast' gestzt ist.
2.) Rechte mit einem Domänen-Admin auf 'Jeder' setzen geht sporadisch schief, wenn bereits ein Domänenuser Vollzugriff hat, insbesondere dann, wenn dieser eigentlich nur stark eingeschränkte Benutzerrechte hat.
MS empfiehlt dies als "Allheilmittel" um "Vollzugriff Jeder" zu bekommen:
SetNamedSecurityInfo(PAnsiChar(FileName), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NIL, NIL, NIL, NIL);
Leider werden dabei gelegentlich ALLE Berechtigungen und Besitzer ge-killt.