Zitat:
if SetSecurityDescriptorDacl(aSa.lpSecurityDescriptor, True, nil, False) then begin
Du überprüfst die Funktion auf True und nicht auf False. Denn False gibt an, dass es einen Fehler gab.
Übrigens hat bei einer NULL-DACL, jeder VOLLEN Zugriff und kann daher alles damit anstellen.