web-dev-qa-db-ja.com

Active Directoryからユーザー名を取得する

Active Directoryのユーザーの名前のみを表示する必要があり、使用しています

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

ユーザー名は表示されますが、ユーザーの本名は表示されません。ここで関連する他の質問と回答を確認しましたが、解決策がわかりません。

ユーザーの名前のみを取得するための「User.Identity.Name」のようなプロパティはありますか?

9
Hans

Active Directoryのユーザーの名前が必要です。次のようなコードを試してください:

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

または、これは social.msdn.Microsoft.com から:

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

またはそれかもしれません:

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

System.DirectoryServices.AccountManagement名前空間 は、複数のプリンシパルストア(Active Directoryドメインサービス(AD DS)、Active Directoryライトウェイトディレクトリサービス(AD) LDS)、およびマシン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