tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von rd4eva
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1292
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von WiZdooM
    WiZdooM WiZdooM ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Hessen
    Beiträge
    344
    Hallo,

    ich programmiere gerade ein kleines Werkzeug, dass in einem rekursiven Aufruf alle Unterverzeichnisse eines gegebenen Verzeichnisses auflistet. So far no problem.

    Nun soll ich damit aber für jedes Verzeichnis alle NTFS-Berechtigungen für die zugewiesenen Gruppen und Benutzer auslesen. Ich hab nur keine Peilung wie, oder zumindest nicht die richtige Peilung.

    Es gibt eine DirectorySecurity Klasse die mit GetAccessControl ein Verzeichnis-Objekt ausliest. Aber ich weiß nicht wie ich jetzt von dort an den sAMAccountName bzw. Gruppennamen und die jeweiligen Berechtigungen komme.

    Hat da jemand in der Richtung schonmal was gemacht und kann mir einen Tip geben?

    Edit:
    Ich habe eine Lösung gefunden. Mit Hilfe des DirectorySecurity Objekts lassen sich die Berechtigungen wie folgt für ein gegebenes Verzeichnis auslesen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    DirectorySecurity directorySecurity = Directory.GetAccessControl(currentDirectory);
    foreach (FileSystemAccessRule fileSystemAccessRule in directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
    {
           string userName = fileSystemAccessRule.IdentityReference.Value;
           string userRights = fileSystemAccessRule.FileSystemRights.ToString();
           Console.Writeline(userName+": "+userRights);
    }
    Geändert von WiZdooM (15.12.10 um 12:55 Uhr)
     
    Gruß

    Wizzy

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Du bist doch schon fast am Ziel:
    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    DirectorySecurity ds = Directory.GetAccessControl(dir);
                    AuthorizationRuleCollection arc = ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
                    foreach (FileSystemAccessRule fsar in arc)
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine("Identity : " + fsar.IdentityReference.Value);
                        sb.AppendLine("AccessControlType : " + fsar.AccessControlType);
                        sb.AppendLine("FileSystemRights : " + fsar.FileSystemRights);                                      
                        sb.AppendLine("Inherited : " + fsar.IsInherited);
                        sb.AppendLine("PropagationFlags : " + fsar.PropagationFlags);
                        sb.AppendLine("InheritanceFlags : " + fsar.InheritanceFlags);
                        
                        MessageBox.Show(sb.ToString());
                    }

    Die FileSystemAccessRule Objekte halten im Prinzip alle Informationne die du brauchst.
    Geändert von rd4eva (15.12.10 um 08:47 Uhr)
     
    In order to understand recursion, one must first understand recursion.

  3. #3
    Avatar von WiZdooM
    WiZdooM WiZdooM ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Hessen
    Beiträge
    344
    Hallo rd4eva

    Danke für den Schnipsel Code. Der ist etwas detaillierter als mein Part.

    Danke!
     
    Gruß

    Wizzy

  4. #4
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Was vorallem bei deinem Schnippsel fehlt ist die AccessControlType Eigenschaft. Ohne die bringen dir die FileSystemRights nicht sonderlich viel, da AccessControlType die Werte allow und deny annehmen kann und somit erst tatsächlich bestimmt ob der Benutzer die jeweiligen FileSystemRights darf oder eben nicht darf.
    WiZdooM bedankt sich. 
    In order to understand recursion, one must first understand recursion.

  5. #5
    Avatar von WiZdooM
    WiZdooM WiZdooM ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Hessen
    Beiträge
    344
    Ja, ist richtig. Danke nochmal!
     
    Gruß

    Wizzy

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 05.12.05, 16:50
  2. Win2k3 Server NTFS Berechtigungen
    Von MastaDaDesasta im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 08.03.04, 19:57
  3. Antworten: 4
    Letzter Beitrag: 04.02.04, 18:42
  4. Alle Dateien eines Verzeichnisses auslesen
    Von fMr im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 0
    Letzter Beitrag: 27.05.02, 19:02
  5. Antworten: 0
    Letzter Beitrag: 27.05.02, 19:00

Stichworte