2010-10-08 63 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

相关问题