1

我有以下方法用於在本地計算機(先完成)或當前林中搜索用戶組。目錄服務,搜索所有可用的提供商

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?

+0

您只需搜索本地計算機,然後在Gobal目錄上搜索。如果您的目錄林沒有全局目錄,那麼您必須逐個搜索每個域。 – 2011-01-06 06:05:46

+0

@Harvey Kwok:那隻能通過註冊表來訪問?...因爲「對象瀏覽器對話框」列出了計算機對其的一些知識。我似乎回憶起在註冊表中找到了一些關於它的內容,但希望我不必在那裏挖掘它。 – Jens 2011-09-08 11:22:17

+0

你的意思是一個完整的域名列表?它通常來自Active Directory。 Active Directory存儲哪個域信任哪個域。檢查CN = System容器並找出所有的trustedDomain對象。 – 2011-09-09 04:51:38

回答

0

我沒有看到問題,因爲此處的代碼已經綁定到其他域。

foreach (Domain domain1 in forest.Domains) 
{ 
    using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry())) 
    { 

你是不是想說你以後自己綁定了一個DirectoryEntry,並且你找不到其他域的對象?

+0

不,我說的代碼是行不通的。 - - 我們的計算機綁定到2個域...但使用代碼我無法在其中一個域中找到任何對象。 - - 我無法通過代碼找到對象,但我可以在例如使用對象瀏覽器對話框時輕鬆找到對象。添加權限共享文件夾等等等等... - - 所以我的電腦顯然可以看到我所說的「mydomain.local」,但我的代碼不能... – Jens 2011-02-11 09:49:41

+0

我已經添加了一些「新」信息我以前沒有注意到,不確定它們是否有所作爲,代碼仍然不起作用。 – Jens 2011-02-11 09:59:41

+0

這部分代碼肯定適合我。我可以通過這種方式訪問​​其他域。它可能是其他原因,如搜索過濾器或什麼?或者也許可以嘗試(cn = *)並列出所有對象。 – user607455 2011-02-11 10:43:39