![]() |
Dateizugriffsrechte herausfinden
Gibt es eine einfache Möglichkeit von einer Datei oder einem Ordner abzufragen, welche Benutzer darauf welche Rechte haben. Irgendwie habe ich da nichts gefunden.
Hintergrund: Ich möchte mir ein kleines Programm schreiben, dass auf einem Ordner und sämtlichen Unterordner prüft, ob Benutzer xy auf irgendeine Datei, Ordner zugreifen oder nicht zugreifen kann. Danke Sven |
Re: Dateizugriffsrechte herausfinden
Entweder durch ausprobieren:
![]() Oder den Sicherheitsbeschreiber auslesen: ![]() |
Re: Dateizugriffsrechte herausfinden
Danke, ich hatte zwar gehofft, dass es vielleicht etwas einfache geht, aber dann mache ich ich mal so an die Sache ran. Vielleicht ist es ja doch nicht so viel.
Grüße Sven |
Re: Dateizugriffsrechte herausfinden
Vielleicht hilft das?
![]() |
Re: Dateizugriffsrechte herausfinden
Nimm CreateFile und für desired ACCESS parameter entsprechende Rechte die du verwenden willst.
Wenn der Rückgabewert INVALIDE_HANLDE_VALUE und GetLastError 5 ergibt, dann wurde der Zugriff verweigert. Das meinte Luckie mit "Ausprobieren". |
Re: Dateizugriffsrechte herausfinden
So kann man es natürlich auch machen, aber ich meinte schon dass er zum Ausprobieren die von mir verlinkte Methode von Nico nimmt.
|
Re: Dateizugriffsrechte herausfinden
Die AccessCheck Funktion könnte übrigens ein falsches Ergebnis unter Windows Vista liefern. Es wird nicht das "Integrity Level" überprüft.
Es handelt sich dabei um einen Eintrag (ACE) in der SACL. Lesen kann man es über LABEL_SECURITY_INFORMATION. Die Konstanten und die ACE SIDs sind so definiert.
Delphi-Quellcode:
{@Name includes the integrity ACE into the security descriptor string.
See [url]http://msdn2.microsoft.com/en-us/library/aa376397.aspx[/url] } LABEL_SECURITY_INFORMATION = $0000010; //wenn man es mal braucht SECURITY_MANDATORY_UNTRUSTED_RID = $0; SECURITY_MANDATORY_LOW_RID = $1000; SECURITY_MANDATORY_MEDIUM_RID = $2000; SECURITY_MANDATORY_HIGH_RID = $3000; SECURITY_MANDATORY_SYSTEM_RID = $4000; SECURITY_MANDATORY_PROTECTED_PROCESS_RID = $5000; LowIL = 'S-1-16-4096'; MediumIL = 'S-1-16-8192'; HighIL = 'S-1-16-12288'; SystemIL = 'S-1-16-16384'; ProtectedProcessIL = 'S-1-16-20480'; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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