C# - 如何从 Active Directory 获取用户 "Web Page" 属性?
C# - How do I Get a users "Web Page" property from Active Directory?
using System.DirectoryServices.AccountManagement;
string WebPage = "";
using (var context = new PrincipalContext(ContextType.Domain))
{
var usr = UserPrincipal.FindByIdentity(context, System.Environment.UserName);
if (usr != null)
WebPage = usr.???????????;
}
我可以得到 GivenName 或 EmailAddress 之类的东西,但是网页 属性 不是一个选项。我只是使用网页 属性 来存储直接消息的用户 Slack 频道 ID,并且不想重新利用我可以获得并测试过的 VoiceTelephoneNumber 属性。提前致谢!
对于 UserPrincipal
class 未公开的任何属性,您可以使用 GetUnderlyingObject()
,其中 returns 底层 DirectoryEntry
对象,然后从 Properties
集合中获取属性。像这样:
WebPage = ((DirectoryEntry) usr.GetUnderlyingObject()).Properties["wWWHomePage"].Value;
这是我完全不关心 UserPrincipal
的原因之一。无论如何,我有时不得不求助于 DirectoryEntry
。但也因为性能,我写了一篇文章:Active Directory: Better performance
using System.DirectoryServices.AccountManagement;
string WebPage = "";
using (var context = new PrincipalContext(ContextType.Domain))
{
var usr = UserPrincipal.FindByIdentity(context, System.Environment.UserName);
if (usr != null)
WebPage = usr.???????????;
}
我可以得到 GivenName 或 EmailAddress 之类的东西,但是网页 属性 不是一个选项。我只是使用网页 属性 来存储直接消息的用户 Slack 频道 ID,并且不想重新利用我可以获得并测试过的 VoiceTelephoneNumber 属性。提前致谢!
对于 UserPrincipal
class 未公开的任何属性,您可以使用 GetUnderlyingObject()
,其中 returns 底层 DirectoryEntry
对象,然后从 Properties
集合中获取属性。像这样:
WebPage = ((DirectoryEntry) usr.GetUnderlyingObject()).Properties["wWWHomePage"].Value;
这是我完全不关心 UserPrincipal
的原因之一。无论如何,我有时不得不求助于 DirectoryEntry
。但也因为性能,我写了一篇文章:Active Directory: Better performance