Einzelnen Beitrag anzeigen

Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
948 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

SetSecurity - Ausführungszeiten

  Alt 12. Feb 2007, 12:13
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.
  Mit Zitat antworten Zitat