Autor Beitrag
Larian
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 02.07.09 12:21 
Hallo,

ich habe folgendes Problem:

ich habe ein Tool programmiert, welches rukursiv den Verzeichnisbaum durchläuft und prüft, welche Rechte der aktuell eingeloggte Benutzer für die Dateien des Verzeichnissbaumes hat. Die SID des Benutzers und seiner Gruppen habe ich dabei über System.Security.Principal.WindowsIdentity.GetCurrent() herausgefunden und vergleiche diese mit den Rechten die seine SID auf den Verzeichnissen hat(herausbekommen über System.Security.AccessControl.FileSystemAccessRule).
Das funktioniert auch alles ohne Probleme.

Jetzt will ich allerdings mein Programm erweitern, so dass nicht die Rechte des aktuell eingeloggten Benutzers geprüft werden, sondern die eines vorgegebenen User. Habe zwar eine Methode gefunden, in welcher man über windowsidentity.impersonate() die Identität eines anderen Benutzers annehmen kann, aber dazu braucht man das Passwort des Benutzers, welches ich nicht unbedingt habe (ich will ja auch nur die Rechte für diesen Benutzer prüfen).
Gibt es zB eine Methode, wie ich für einen beliebigen Benutzer die SID herausfinden kann um diese dann mit den SID aus System.Security.AccessControl.FileSystemAccessRule zu vergleichen?

PS: Wenn jemand Code braucht poste ich den auch gerne noch.

Marcus
Larian Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 02.07.09 15:41 
Ok, habe das Problem selber gelöst, habe GetAccessRules statt auf SID auf NTAccount geändert und schon geht es ...

Jetzt habe ich aber noch das Problem: wenn ich GetAccessRules auf bestimmte Dateien im System anwende (zb pagefile.sys, hiberfil.sys, NTUER.dat ...) bekomme ich einen Ausnahmefehler:
"Unerwarteter Methodenfehler 32" - den kann ich zwar abfangen, aber von diesen Dateien kann ich dadurch immer noch nicht auslesen, ob ein bestimmter User (es geht mir um den User system, der ja bei diesen Dateien Zugriff hat) Rechte darauf hat.
Hat hier noch jemand ne Idee?