从 PrincipalContext 获取域名

Get domain name from PrincipalContext

假设我们有这个上下文

private static readonly PrincipalContext Context = 
    new PrincipalContext(ContextType.Domain, "255.255.255.252",
                         "OU=TestOrgUnit,DC=as,DC=asf",
                         "blabla", "12345");

我正在搜索此域中的用户。我得到他们的名字 SomeNickName,但他们应该是 DomainName\SomeNickName

是否可以从 PrincipalContext 对象中获取 DomainName?我找到了 DirectoryEntry 的解决方案,但无法将 PrincipalContext 转换成它。

这个代码

DirectoryEntry deBase = new DirectoryEntry("255.255.255.252", "AdminLogin", "PWD"); 

和这个代码

DirectoryEntry deBase = new DirectoryEntry("255.255.255.252://OU=TestOrgUnit,DC=as,DC=asf", "AdminLogin", "PWD");

抛出异常并且不起作用。

所以从技术上讲,您在为连接 OU (DC=as,DC=asf) 指定的 DN 中拥有域信息。第一个 DC 是 pre-Win2K 名称,这似乎是您要查找的名称。

就包含域信息的 PrincipalContext 本身而言,它似乎没有。

如果您想使用 DE 获取更多属性或进行用户搜索,您需要像这样创建它:

var deBase = new DirectoryEntry("LDAP://255.255.255.252/OU=TestOrgUnit,DC=as,DC=asf", "AdminLogin", "PWD")