0

我正在使用 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 搜索。甚至可能吗?

4

1 回答 1

0

首先,不需要域:

var principalContext = new PrincipalContext(ContextType.Domain);

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

于 2011-02-16T09:12:30.737 回答