使用Sys.AD.AM .Net 3.5 Class时,Active Directory搜索全局编录

时间:2010-07-08 22:41:58

标签: c# .net active-directory directoryservices

我正在使用System.DirectoryServices.AccountManagement类来查询Active Directory。

我可以使用各种上下文来查询域名,但我发现的每个示例都需要一个域名。

string domain = "MYDOMAIN";
PrincipalContext ctx= new PrincipalContext(ContextType.Domain, domain);

通常这不是问题,但是,我们有一些用户存在于子域中。我找到了一种通过解析user.identity.name中的域信息来搜索其帐户详细信息的方法。

string loggedUser = User.Identity.Name;
string domain = loggedUser.Split(new char { '\\' })[0];
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain);
using (ctx) {
  // Do searches, etc. here
}

我们希望交换使用GUID作为我们的唯一标识符,因为我认为GUID在所有域中都是唯一的,而名称可以更改(婚姻,离婚等)

使用旧的目录搜索器Web服务,我们可以查询全局编录(GC)并查找用户,无论他们的域名或子域名,因为域名是可信的...我正在寻找相同的使用新的3.5 S.DS.AM类进行GC搜索的“功能”。它甚至可能吗?

1 个答案:

答案 0 :(得分:0)

首先,不需要域名:

var principalContext = new PrincipalContext(ContextType.Domain);

但这对你没有帮助。我认为你需要建立一个域名列表。然后,您可以使用S.DS.AM搜索每个域。您可以使用S.DS.ActiveDirectory Forest对象构建域列表。或者您可以使用GC://名字对象使用S.DS.DirectorySearcher进行GC搜索。