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