Hi,
Ich möchte über Delphi für ein bestimmtes Verzeichnis für die Gruppe "Jeder" alle Rechte setzen (GENERIC_ALL oder ähnliches).
Delphi-Quellcode:
procedure AddFileSecurity (
const fileName, userName :
string);
var
f : TNTFileObject;
acl : TAccessControlList;
begin
acl :=
Nil;
f := TNTFileObject.Create(fileName);
try
acl := TAccessControlList.Create;
f.GetDiscretionaryAccessList(
acl);
acl.AddElement(TAccessControlElement.Create(userName, aeAccessAllowed, (CONTAINER_INHERIT_ACE
or OBJECT_INHERIT_ACE), GENERIC_ALL));
f.SetDiscretionaryAccessList(
acl);
finally
acl.Free;
f.Free;
end
end;
Setz ich damit für das Verzeichnis C:\test die Rechte werden diese auch für das Verzeichnis übernommen, allerdings nicht für die Unterverzeichnisse sowie Dateien. D.h. Die Gruppe "Jeder" ist nur für C:\Test gesetzt, die Unterverzeichnisse haben immer noch die selben Rechte (Admin, SYSTEM usw..)
Ich muss zugeben dass ich in dem ganzen Rechtemanagement von Windows nicht richtig durchblick, ich vermute mal dass die Flags für die Rechten so nicht korrekt sind.
Zum Setzen der Rechte benutze ich die Komponente von
http://www.wilsonc.demon.co.uk/d6ntutils.htm
Was ich eigentlich brauch ist was altbekanntes aus der UNIX-Welt: 'chmod -R 777 C:\test'
Vielleicht hat sich hier ja schonmal jemand mit diesem grausigen Thema befasst