【问题标题】:How to enumerate per-Forest Active Directory domains in C#?如何在 C# 中枚举每个林的 Active Directory 域?
【发布时间】:2011-04-22 19:34:13
【问题描述】:

如果正在运行的机器是森林的一部分,则此代码会枚举 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;
}

是否可以枚举属于其他森林的域?

林和全局编录有什么区别?

【问题讨论】:

    标签: c# .net active-directory dns


    【解决方案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) 抽象。全局目录(如果林有)是一个分布式数据存储库,在该林上执行某些类型的操作时需要它。

    【讨论】:

    • 谢谢你的回答,我试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多