2010-07-08 17 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搜索。