2010-07-08 19 views
0

我正在使用System.DirectoryServices.AccountManagement类来查询Active Directory。使用Sys.AD.AM .Net 3.5类时的全局编录的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

首先,不需要域名:

var principalContext = new PrincipalContext(ContextType.Domain); 

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