从PrincipalContext获取域名

时间:2015-01-29 08:29:45

标签: c# .net authentication com active-directory

假设我们有这个背景

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

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

是否可以从DomainName对象获取PrincipalContext?我找到了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");

抛出异常并且无法正常工作。

1 个答案:

答案 0 :(得分:1)

从技术上讲,您在为连接OU指定的DN中有域信息(DC = as,DC = asf)。第一个DC是Win2K之前的名称,它似乎是您正在寻找的。

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

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

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