Question

Y at-il un:

  

string name =   System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;

équivalence dans .NET Framework 2.0? Il utilise la référence System.DirectoryServices.AccountManagement (ver 3.5). J'ai essayé d'utiliser ce fichier sur un NET Framework 2.0 mais sans résultat.

En fait, je veux récupérer le nom d'utilisateur complet (prénom et nom) de l'utilisateur Windows (pas Request.ServerVariables [ « REMOTE_USER »] qui ne donne que nom_utilisateur_windows)

Était-ce utile?

La solution

L'espace de noms S.DS.AM a été introduit dans .NET 3.5, et malheureusement, il n'y a pas de version 2.0 de celui-ci.

Vous pouvez interroger l'utilisateur Windows dans une application ASP.NET à l'aide WindowsIdentity.GetCurrent () Nom -.. Cela vous donne DOMAIN \ UserName

Ensuite, vous auriez à faire une recherche d'utilisateur dans AD pour cet utilisateur avec un objet DirectorySearcher afin de trouver le DirectoryEntry correspondant. Cela vous donnera tous les morceaux de cet utilisateur.

    string currentUser = WindowsIdentity.GetCurrent().Name;

    string[] domainUserName = currentUser.Split('\\');
    string justUserName = domainUserName[1];

    DirectoryEntry searchRoot = new DirectoryEntry("LDAP://dc=(yourcompany),dc=com");

    DirectorySearcher ds = new DirectorySearcher(searchRoot);

    ds.SearchScope = SearchScope.Subtree;

    ds.PropertiesToLoad.Add("sn");
    ds.PropertiesToLoad.Add("givenName");

    ds.Filter = string.Format("(&(objectCategory=person)(samAccountName={0}))", justUserName);

    SearchResult sr = ds.FindOne();

    if (sr != null)
    {
        string firstName = sr.Properties["givenName"][0].ToString();
        string lastName = sr.Properties["sn"][0].ToString();
    }

Il est un peu compliqué et impliqué dans .NET 2.0 - ne peut pas changer cela: - (

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top