如何在C#中枚举每个林的Active Directory域?

时间:2010-10-08 10:00:58

标签: c# .net active-directory dns

此代码枚举Active Directory域,如果正在运行的mahine是林的一部分。

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 个答案:

答案 0 :(得分:1)

如果您通过调用Forest.GetForest替换currentForest的设置来识别您希望枚举其域的林,则上述逻辑应该有效(提供权限正常)。

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

如果您没有权限但知道有人这样做,则DirectoryContext constructor overrides允许您指定备用名称和密码。

全局目录与森林的关系详细here。简而言之,林是用于对AD对象进行分组的Active Directory(AD)抽象。全局编录(如果林有一个)是一个分布式数据存储库,需要在该林上完成某些类型的操作。