Du rufst auch SetNamedSecurityInfo völlig falsch auf
Da wird garnicht SecurityAttributes verwendet, sondern nur Owner, Group, DACL und SACL. Nimm SetFileSecurity, wenn du mit ACLs experimentieren willst (die Funktion ist veraltet).
Ja, das war zu umständlich, kam noch vom Erstellen der Datei mit CreateFile. Jetzt verwende ich nur die DACL und damit kann ich die Datei auf ein NULL-DACL setzen.
Ist das in Ordnung so? Denn da würde ich jetzt weiter machen und die DACL mit anderen Einstellungen füttern. Dann hätte ich (endlich) die Möglichkeit Dateien zu erstellen oder zu ändern. Mit Verzeichnissen müsste das dann ja analog gehen.
Delphi-Quellcode:
SecurityDescriptor : TSecurityDescriptor;
locDACL : PACL;
filename : PAnsiChar;
errcode : integer;
begin
InitializeSecurityDescriptor(@SecurityDescriptor,SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(@SecurityDescriptor, true, nil, false);
locDACL := SecurityDescriptor.Dacl;
filename := PAnsiChar('C:\schrott.txt');
errcode:=SetNamedSecurityInfoA(filename, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, locDACL, nil);
if errcode <> 0 then
begin
ShowMessage(SysErrorMessage(errcode));
end;
end;
Grüße, Messie