Tipps und Tricks rund um .NET und Visual Studio

Den angemeldeten Benutzer ermitteln
Kommentare

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer teilen in der Kolumne „.NETversum“ ihr Expertenwissen rund um .NET-Tools und WPF mit.

Es gibt in .NET zahlreiche Wege, innerhalb einer Windows-Desktop-Anwendung den angemeldeten Windows-Benutzer bzw. bei einem Hintergrundprozess das Dienstkonto zu ermitteln. Für viele Entwickler sehr naheliegend ist System.Environment.UserName. Diese Eigenschaft liefert den Windows-Anmeldenamen, z. B. „HSchwichtenberg“. Die zugehörige Domäne erfährt man in System.Environment.UserDomainName (Listing 1).

Console.WriteLine(System.Environment.UserDomainName + @"" + System.Environment.UserName);
Console.WriteLine(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
Console.WriteLine(System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain().Name + @"" + UserPrincipal.Current.SamAccountName);

Alternativ kann man System.Security.Principal.WindowsIdentity.GetCurrent().Name bemühen. Hier erhält man den Kurznamen der Domäne und den Anmeldenamen zusammen, z. B. „ITVisionsHSchwichtenberg“.

Mehr über den Benutzer erfahren mit User.Principal.Current

Die dritte Option ist System.DirectoryServices.AccountManagement. UserPrincipal.Current.SamAccountName. Hier bekommt man wieder erst einmal nur den Anmeldenamen. UserPrincipal.Current verrät aber noch viele andere Dinge über den angemeldeten Benutzer, z. B. den LDAP-Pfad im Active Directory (DistinguishedName), Vor- und Nachname (GivenName, Surname), Beschreibungstext (Description), Security Identifier (Sid), Heimatlaufwerk (HomeDirectory), letzten Anmeldezeitpunkt (LastLogon), letzte Kennwortänderung (LastPasswordSet) und vieles mehr. Analog dazu erhält man Informationen aus der Domäne über System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain(). So liefert die Eigenschaft den Namen des vollständigen DNS-Domänennamens (z. B. IT-Visions.de), den Domänenmodus (DomainMode) und die Namen aller Domain-Controller (DomainControllers) (Listing 2).

 Console.WriteLine("Namen:");
   Console.WriteLine(UserPrincipal.Current.Name);
   Console.WriteLine(UserPrincipal.Current.SamAccountName);
   Console.WriteLine(UserPrincipal.Current.DistinguishedName);
   Console.WriteLine(UserPrincipal.Current.DisplayName);
   Console.WriteLine(UserPrincipal.Current.EmployeeId);
   Console.WriteLine(UserPrincipal.Current.GivenName);
   Console.WriteLine(UserPrincipal.Current.Surname);
   Console.WriteLine(UserPrincipal.Current.Description);
   Console.WriteLine(UserPrincipal.Current.Sid);

   Console.WriteLine("Adressen:");
   Console.WriteLine(UserPrincipal.Current.EmailAddress);
   Console.WriteLine(UserPrincipal.Current.VoiceTelephoneNumber);

   Console.WriteLine("Konfiguration:");
   Console.WriteLine(UserPrincipal.Current.HomeDirectory);
   Console.WriteLine(UserPrincipal.Current.HomeDrive);
   Console.WriteLine(UserPrincipal.Current.Enabled);

   Console.WriteLine("Anmeldungen:");
   Console.WriteLine(UserPrincipal.Current.LastLogon);
   Console.WriteLine(UserPrincipal.Current.BadLogonCount);
   Console.WriteLine(UserPrincipal.Current.LastPasswordSet);
   Console.WriteLine(UserPrincipal.Current.PasswordNeverExpires);
   Console.WriteLine(UserPrincipal.Current.UserCannotChangePassword);
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -