![]() |
[GELÖST] JwSCL Berechtigungen ersetzen
Hallo DPler,
ich muss gerade eine große Anzahl von Verzeichnissen und Dateien mit neuen Berechtigungen "versorgen". Dazu möchte ich die JwSCL verwenden, was ansatzweise auch schon funktioniert. Problem: Einige Dateien in der Verzeichnisstruktur haben explizite Berechtigungen, die ich ersetzen müsste. Allerdings möchte ich das nicht für jede Datei einzeln machen sondern über Vererbung der Berechtigungen aus einem übergeordneten Verzeichnis. Würde funktionieren, wenn die Vererbung der Rechte dieser speziellen Dateien nicht entfernt worden wäre. Beim Setzen der Rechte über den Explorer gibt es die schöne Option "Alle Berechtigungen für untergeordnete Objekte durch vererbbare Berechtigungen von diesem Objekt ersetzen". Genau das brauche ich für die JwSCL. Weiß jemand, wie man das der JwSCL klar macht? :) Viele Grüße, Uwe P.S.: Meine bisherigen (erfolglosen) Versuche basieren in etwa auf diesem Code aus den Beispielen zur JwSCL:
Delphi-Quellcode:
if not DirectoryExists(Directory) then
exit; try JwInitWellKnownSIDs; UserToken := TJwSecurityToken.CreateTokenEffective(MAXIMUM_ALLOWED); Owner := UserToken.GetTokenOwner; User := TJwSecurityId.Create(_DOMAIN_MACHINE, Group); // 'Technische_Mitarbeiter' try FileObject := TJwSecureFileObject.Create(Directory); try //Make me owner if we cant access DACL if not FileObject.AccessCheck(WRITE_DAC)// and {For example purpose only. We don't have to check the owner because Accesscheck does it. } { not FileObject.Owner.EqualSid(Owner)} then begin //try to become owner JwEnablePrivilege(SE_TAKE_OWNERSHIP_NAME, pst_Enable); FileObject.Owner := Owner; end; DACL := FileObject.DACL; if ClearList then DACL.Clear; // Problem: AceFlags, Right und ProtState haben keinen Einfluss auf Dateien/Verzeichnisse deren Vererbung entfernt wurde! DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, AceFlags, Rights, User, false)); FileObject.SetDACL(DACL, ProtState); finally FileObject.Free; end; finally Owner.Free; UserToken.Free; User.Free; end; except On E: Exception do TB.Msg(E.Message, clRed); end; |
AW: JwSCL Berechtigungen ersetzen
Hat sich erledigt. ;)
Ich habe es erst noch mit TreeResetNamedSecurityInfo versucht, was aber nicht funktioniert hat. Mit TreeFileObjectSetNamedSecurityInfo und dem Parameter tstReset scheint es aber zu klappen. Setzt einen ganzen Tree auf die übergebene DACL. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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