Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Sicherheitseinstellungen von Dateien ändern (https://www.delphipraxis.net/7432-sicherheitseinstellungen-von-dateien-aendern.html)

oki 21. Aug 2003 09:21

Re: Sicherheitseinstellungen von Dateien ändern
 
Hi,
wo nun weiter, mit LookUpAccountName / LookUpAccountSID oder mit

GetAce, GetLengthSid, GetAclInformation?

Gruß oki

Tpercon 21. Aug 2003 09:29

Re: Sicherheitseinstellungen von Dateien ändern
 
GetAce, GetLengthSid, GetAclInformation? brauchen wir um die Infos weiter auslesen zu können. Nur bekomm ich immer die Meldung "security descriptor does not contain...", egal bei welcher Datei. Ist das bei dir auch so?

LookUpAccountName / LookUpAccountSID brauchen wir nur füür das GetSecurityDescriptorGroup. Hast du damit schon mal gearbeitet?

Tpercon 25. Aug 2003 08:26

Re: Sicherheitseinstellungen von Dateien ändern
 
Nachdem ich jetzt wieder versucht habe weiterzukommen, nur alles gescheitert ist (irgendwie hat jede Datei keine ACL), bin ich code mäßig wieder bei dem Stand von letzter Woche. Hat keiner ne Idee, wie ich mit dem AUslesen weiterkommen könnte?

Mackhack 29. Sep 2007 19:36

Re: Sicherheitseinstellungen von Dateien ändern
 
Hallo Christian,

warum ueberpruefst du denn hier

Delphi-Quellcode:
if (psdc and SE_DACL_AUTO_INHERITED) = SE_DACL_AUTO_INHERITED then Memo1.Lines.Add('SE_DACL_AUTO_INHERITED');
psdc auf SE_DACL_AUTO_INHERITED und SE_DACL_AUTO_INHERITED selbst auf SE_DACL_AUTO_INHERITED?

Woher weis ich denn dass man beide auf das selbe pruefen muss!

Dezipaitor 29. Sep 2007 23:25

Re: Sicherheitseinstellungen von Dateien ändern
 
mit dem If-Ausdruck wird überprüft, ob ein Bit gesetzt wurde.
Das macht man, indem man eine Zahl (die aus Bits besteht) mit einer anderen Zahl, die nur ein bestimmtes Bit gesetzt hat, verundet.

nehmen wir diese Zahl :
1011 und wir wollen das erste Bit von rechts (wir starten beim Zählen mit 0!) herausfinden, ob es gesetzt ist.

also 1011 and 0010 = 0010
Das Ergebnis ist genau dieselbe Zahl, die auf der rechten Seite von and steht.

Wenn das gesuchte Bit nicht gesetzt ist, so ergibt sich das:
1011 and 0100 = 0000 - da hier eine andere Zahl als die rechts von and als Ergebnis rauskommt, wissen wir, dass das gesuchte Bit nicht gesetzt ist.


SE_DACL_AUTO_INHERITED wird übrigens nur gesetzt, wenn automatische Vererbung unterstützt wird. Ist es aktiv, bedeutet es, dass Änderungen automatisch auf Unterobjekte weitergegeben werden, wenn diese erben.

P.S.
mir ist aufgefallen, dass im obrigen Code nur der Besitzer der Datei ausgelesen wird.
Delphi-Quellcode:
GetFileSecurity(PChar(FiName),OWNER_SECURITY_INFORMATION,psd,0,dwLen);
Das müsste eigentlich so gehen:
Delphi-Quellcode:
GetFileSecurity(PChar(FiName),OWNER_SECURITY_INFORMATION or DACL_SECURITY_INFORMATION,psd,0,dwLen);
Um die ÜberwachungsACL lesen zu können muss man dann eben noch SACL_SECURITY_INFORMATION dazunehmen. Zusätzlich muss man noch das Privileg SE_SECURITY_NAME aktivieren. Das Privileg haben aber nur Administratoren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz