![]() |
SetSecurity - Ausführungszeiten
Hallo,
ich möchte gerne die NTFS-Rechte von Verzeichnissen ändern, was so weit auch klappt.
Delphi-Quellcode:
Rufe ich jedoch ACL.Free auf kommt es zur Schutzverletzung.
...
ACL := TAccessControlList.Create; try FO := TNTFileObject.Create(Folders.Strings[FI]); try if FO.GetDiscretionaryAccessList(ACL) then begin ACLC := ACL.ElementCount - 1; ASL := TAccessControlList.Create; try ASL.AddElement(ACE); for ACLI := 0 to ACLC do begin FNP := ACL.Element[ACLI].Name; if POS(User.memberOf, FNP) = 0 then ASL.AddElement(ACL.Element[ACLI]); end; FO.SetDiscretionaryAccessList(ASL); Result := True; finally ASL.Free; end; end; finally FO.Free; end; finally ACL.Free; // <- entfällt und damit der try finally - Block end; ... Eine Überprüfung der NTFS-Rechte ergibt dann, das nocht nicht alle Rechte gesetzt wurden. Ein Sleep(10000) vor ACL.Free bewirkt das alle Rechte gesetzt sind, daher die Frage: Wie kann ich feststellen ob 'SetSecurity' ordnungsgemäß beendet ist? Gruss Antwort: Garnicht, ACL darf nur nicht mit ACL.Free freigegeben werden, da es von FO freigegeben wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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