Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SetSecurity - Ausführungszeiten (https://www.delphipraxis.net/86296-setsecurity-ausfuehrungszeiten.html)

Alter Mann 12. Feb 2007 12:13


SetSecurity - Ausführungszeiten
 
Hallo,

ich möchte gerne die NTFS-Rechte von Verzeichnissen ändern, was so weit auch klappt.

Delphi-Quellcode:
...
      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;
...
Rufe ich jedoch ACL.Free auf kommt es zur Schutzverletzung.
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