Si vous utilisez .Net 3.0 ou supérieur, il y a une jolie bibliothèque qui le fait pratiquement écrire lui-même. System.DirectoryServices.AccountManagement a un objet UserPrincipal qui obtient exactement ce que vous recherchez et vous n'avez pas besoin de vous tromper avec LDAP ou de passer aux appels système pour le faire. Voici tout ce qu'il prendrait:
Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal principal = (WindowsPrincipal)Thread.CurrentPrincipal;
// or, if you're in Asp.Net with windows authentication you can use:
// WindowsPrincipal principal = (WindowsPrincipal)User;
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
UserPrincipal up = UserPrincipal.FindByIdentity(pc, principal.Identity.Name);
return up.DisplayName;
// or return up.GivenName + " " + up.Surname;
}
Remarque: vous n'avez pas réellement besoin principal si vous avez déjà le nom d'utilisateur, mais si vous êtes en cours d'exécution dans le contexte de l'utilisateur, il est tout aussi facile de tirer de Là.
AFAIK, ses pas. – Nate