我有以下方法用於在本地計算機(先完成)或當前林中搜索用戶組。目錄服務,搜索所有可用的提供商
public string FindUserGroup(string group)
{
//Search local computer
using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry()))
{
searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))";
SearchResult result = searcher.FindOne();
if (result != null)
return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path);
}
//Search current forest
Forest forest = Forest.GetCurrentForest();
foreach (Domain domain1 in forest.Domains)
{
using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry()))
{
searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))";
SearchResult result = searcher.FindOne();
if (result != null)
return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path);
}
}
return string.Empty;
}
我的問題是,我們作爲一個例子也說「domain.local」和「mydomain.local」,和我的當前登錄勢必「domain.local」,然後用下面將無法找到「mydomain.local」中的任何內容,即使我通過Windows用戶界面也能夠。
我怎麼能從我的電腦的角度來搜索所有可見的提供者,當我不知道他們都是?我真的必須自己做註冊工作嗎?
編輯:
一位在2個域的區別是「水平」,他們當我在對象瀏覽器對話框中選擇「位置」上,其佈局爲:
- 電腦
- 整套方向
- domain.local
- mydomain.local
所以「mydomain.local」之外什麼被稱爲「整個目錄」,但我的電腦可以找到它,如果有什麼差別excists?
您只需搜索本地計算機,然後在Gobal目錄上搜索。如果您的目錄林沒有全局目錄,那麼您必須逐個搜索每個域。 – 2011-01-06 06:05:46
@Harvey Kwok:那隻能通過註冊表來訪問?...因爲「對象瀏覽器對話框」列出了計算機對其的一些知識。我似乎回憶起在註冊表中找到了一些關於它的內容,但希望我不必在那裏挖掘它。 – Jens 2011-09-08 11:22:17
你的意思是一個完整的域名列表?它通常來自Active Directory。 Active Directory存儲哪個域信任哪個域。檢查CN = System容器並找出所有的trustedDomain對象。 – 2011-09-09 04:51:38