2010-10-08 66 views
1

如果正在運行的mahine是林的一部分,此代碼將枚舉Active Directory域。如何枚舉C#中的每個林Active Directory域?

public static ArrayList EnumerateDomains() 
{ 
    ArrayList alDomains = new ArrayList(); 
    Forest currentForest = Forest.GetCurrentForest(); 
    DomainCollection myDomains = currentForest.Domains; 

    foreach (Domain objDomain in myDomains) 
    { 
     alDomains.Add(objDomain.Name); 
    } 
    return alDomains; 
} 

枚舉某些其他森林的域名是否可行?

森林和全球目錄有什麼區別?

回答

1

如果您將currentForest的設置替換爲Forest.GetForest的標識您希望枚舉其域的林的設置,則上述邏輯應起作用(提供的權限正常)。

DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, 
    "dns-name-of-target-forest"); 
Forest currentForest = Forest.GetForest(context); 

如果您沒有權限,但很清楚誰做,有DirectoryContext constructor overrides,允許您指定備用名和密碼。

全球目錄與森林的關係詳述爲here。簡而言之,森林是用於分組AD對象的Active Directory(AD)抽象。全局編錄(如果林有一個)是一個分佈式數據存儲庫,爲了在該林上完成某些類型的操作,需要該存儲庫。

+0

謝謝你的回答,我會試試這個。 – Primoz 2010-10-08 14:07:38

+0

@Primoz - 好的,祝你好運 – 2010-10-08 14:10:56

相關問題