![]() |
Wer hat welche Berechtigungen in einem Verzeichnis
Ich wollte ermitteln welcher Benutzer Schreib- und Leserechte in einem angegebenen Verzeichnis auf NT ff. Systemen hat. Sprich, ich gebe ein Verzeichnis an und bekomme zurück, wer lesend und wer schreibend darauf zugreifen kann.
Ich habe hier schon nach ![]() Edit1: Im SwissDelphiCenter habe ich auchn ichts brauchbares gefunden. Edit2: Ziel ist es ein Programm zu schreiben, um sein System auf Lücken zu untersuchen, was die Vergabe von Rechten angeht. Eventuell das ganze auch andersrum, dass man der Benutzer angibt und eine Liste bekommt3 aufwelche Verzeichnisse er wie zugreifen kann. |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Hai Luckie,
ich bin mir nicht ganz sicher ob Dir das hilft, aber suche mal im PSDK nach FSCTL_SECURITY_ID_CHECK. Eventuell hilft dir das weiter. |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Nein, es muss irgendwas mit GetSecurityInfo sein. damit bekomme ich wohl eien DACL für das Objekt (Datei). Nur wie geht es dann weiter? Besser ist für mich wohl noch GetFileSecurity, da es mir ja nur um Dateien geht.
|
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Liste der Anhänge anzeigen (Anzahl: 1)
Auf SysInternals habe ich genau das Programm gefunden, was das macht, was ich will, sogar mit Source. Nur leider steige ich bei dem C/C++ Gewusel einfach nicht durch. ich weiß noch nicht mal wo was anfängt bzw. in welcher Reihenfolge ich mir welche Infos holen muss um an die Berechtigungen dranzukommen.
Ich hänge es mal an. |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
So, in einem WinAPI Forum wurde mir jetzt etwas weitergeholfen:
![]() Ich versuche das gerade in Code umzusetzten:
Delphi-Quellcode:
Aber es will nicht so recht. PAclInformation kennt er nicht und hier:
uses
AclAPI; procedure TForm1.Button1Click(Sender: TObject); var psd: PSECURITY_DESCRIPTOR; dwLen: DWORD; psdc: SECURITY_DESCRIPTOR_CONTROL; dwDummy: DWORD; DaclPresent, DaclDefaulted: LongBool; dacl: PACL; aclinfo: PAclInformation; begin dwLen := 0; psd := nil; GetFileSecurity('c:\boot.ini', DACL_SECURITY_INFORMATION, psd, 0, dwLen); psd := AllocMem(dwLen); try if GetFileSecurity('c:\boot.ini', DACL_SECURITY_INFORMATION, psd, dwLen, dwLen) then begin GetMem(dacl, sizeof(PACL)); try if GetSecurityDescriptorDacl(psd, DaclPresent, @dacl, DaclDefaulted) then begin if GetAclInformation(PAdacl, ) then begin end; end; finally Freemem(dacl, sizeof(PACL)); end; end; finally FreeMem(psd, dwLen); end; end;
Delphi-Quellcode:
sagt er mir jetzt schon:
if GetAclInformation(dacl, ) then
Zitat:
|
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Zitat:
![]() ![]() Zitat:
|
Re: Wer hat welche Berechtigungen in einem Verzeichnis
ist der Datentyp PACL ein Pointer auf ein Record?
Zwar ne dumme Frage, ist mir aber auch schon des öfteren passiert ;) |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Hier fängt es im MSDN an
![]() |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Hi Luckie,
den ersten Parameter bei GetAclInformation musst du glaub ich so schreiben:
Delphi-Quellcode:
Dann müsste die Fehlermeldung eigentlich weg sein :gruebel: weiß es aber nicht genau.
GetAclInformation(dacl^,)
Tschüß Markus |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Genau das meinte ich ja mit dem "Pointer auf einen Record"...
und aus der MSDN seite wurd ich (leider) net schlauer :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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 by Thomas Breitkreuz