web-dev-qa-db-fra.com

Obtenir le nom de l'utilisateur à partir d'Active Directory

Je dois afficher uniquement le nom d'un utilisateur d'Active Directory, j'utilise

 lbl_Login.Text = User.Identity.Name; //the result is domain\username

Cela montre le nom de l'utilisateur mais pas le vrai nom de l'utilisateur, j'ai vérifié d'autres questions et réponses liées ici mais je n'ai pas obtenu la solution.

Existe-t-il une propriété comme "User.Identity.Name" pour obtenir uniquement le nom de l'utilisateur?

9
Hans

Vous voulez le nom d'un utilisateur d'Active Directory. Essayez un code comme celui-ci:

string name ="";
using (var context = new PrincipalContext(ContextType.Domain))
{
    var usr = UserPrincipal.FindByIdentity(context, User.Identity.Name); 
    if (usr != null)
       name = usr.DisplayName;  
}

ou ceci de social.msdn.Microsoft.com :

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.Current;
string displayName = user.DisplayName;

ou peut-être:

System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;

L'espace de noms System.DirectoryServices.AccountManagement fournit un accès et une manipulation uniformes des principaux de sécurité des utilisateurs, des ordinateurs et des groupes à travers les multiples magasins principaux: services de domaine Active Directory (AD DS), services d'annuaire légers Active Directory (AD LDS) et Machine SAM (MSAM).

18
Denis Bubnov
using System.DirectoryServices.AccountManagement;

string fullName = null;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
    using (UserPrincipal user = UserPrincipal.FindByIdentity(context,"hajani"))
    {
        if (user != null)
        {
            fullName = user.DisplayName;
            lbl_Login.Text = fullName;
        }
    }
}
3
MethodMan