Samstag, 19. Juni 2010

Gruppen eines Benutzers auslesen

Mit C# .Net lassen sich die Gruppen, denen der aktuell angemeldete Benutzer angehört, über die WindowsIdentity Klasse, die schon im vorigen Post angesprochen wurde, auslesen:

foreach (System.Security.Principal.IdentityReference group in System.Security.Principal.WindowsIdentity.GetCurrent().Groups)
{
    MessageBox.Show(group.ToString());
}

Dieses Beispiel gibt aber nur kryptische Nummern, wie z.B. {S-1-1-0} aus.
Diese Nummern sind die sogennanten SIDs (Security Identifiers) der Gruppe.
Diese können glücklicherweise mittels der Funktion Translate() in einen anderen Typ umgewandelt werden, ein Typ aus der Klasse System.Security.Principal muss hierfür angegeben werden.
Nehmen wir den Typ NTAccount, werden die Gruppen in einem leserlichen Format angezeigt:

foreach (System.Security.Principal.IdentityReference group in System.Security.Principal.WindowsIdentity.GetCurrent().Groups)
{
    MessageBox.Show((group.Translate(typeof(System.Security.Principal.NTAccount))).ToString());
}

Obige Gruppe {S-1-1-0} wird so zu JEDER.

Keine Kommentare:

Kommentar veröffentlichen