我正在使用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搜索的“功能”。它甚至可能吗?
答案 0 :(得分:0)
首先,不需要域名:
var principalContext = new PrincipalContext(ContextType.Domain);
但这对你没有帮助。我认为你需要建立一个域名列表。然后,您可以使用S.DS.AM搜索每个域。您可以使用S.DS.ActiveDirectory Forest对象构建域列表。或者您可以使用GC://名字对象使用S.DS.DirectorySearcher进行GC搜索。