如何获取当前登录用户的AD显示名称

12

考虑以下在Active Directory中为用户设置的属性:

enter image description here

在我的winforms应用程序中,我想显示当前登录并使用该应用程序的用户的显示名称。 我应该如何检索此信息?

2个回答

27

既然您使用的是.NET 4,您可以使用System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。点击此链接了解更多信息:

基本上,您可以定义一个域上下文并轻松地查找AD中的用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find currently logged in user
UserPrincipal user = UserPrincipal.Current;

string displayName = user.DisplayName;    

新的S.DS.AM使在AD中玩弄用户和组变得非常容易。


1
你为什么要获取ctx而不使用它?(我在处理AD时遇到了问题,偶然看到了这个答案) - Kevin Fischer
我想知道为什么你不使用ctx。 - Jannik
1
@Jannik:这是来自一个更大示例的代码,我在那里使用了ctx - 对于这个单独的语句来说并不是必需的。 - marc_s
谢谢,伙计。自你写下这篇文章以来已经过了很长时间了,感谢你的评论。 - Jannik
The LDAP server is unavailable. - AgentFire

12

经过几个小时的寻找,我终于找到了最简单的方法。

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

我希望让更多像我一样的人知道这件事。


这正是我需要的,用于PowerShell脚本。太好了。 - xan
工作得很好。我唯一无法从中获取的是用户的经理? - Kieran Quinn
2
当我这样做时,我会得到“将类型为'System.DirectoryServices.AccountManagement.GroupPrincipal'的转换对象转换为类型'System.DirectoryServices.AccountManagement.UserPrincipal”的错误...” - jroyce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接