我使用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搜索相同的“功能”。这有可能吗?
发布于 2011-02-16 17:12:31
首先,domain不是必填项:
var principalContext = new PrincipalContext(ContextType.Domain);但这对你没有帮助。我认为你需要建立一个域名列表。然后,您可以使用S.DS.AM搜索每个域。您可以使用S.DS.ActiveDirectory森林对象构建您的域列表。或者,您可以使用GC://名字对象使用S.DS.DirectorySearcher进行GC搜索。
https://stackoverflow.com/questions/3208540
复制相似问题