Как перечислить домены Active Directory для каждого леса в C #? - PullRequest
1 голос
/ 08 октября 2010

Этот код перечисляет домены 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 Ответ

1 голос
/ 08 октября 2010

Приведенная выше логика должна работать (при условии, что разрешения в порядке), если вы замените настройку currentForest на вызов Forest.GetForest , который идентифицирует лес, домены которого вы хотите перечислить.

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

Если у вас нет разрешения, но вы знаете кого-то, кто имеет, есть Переопределение конструктора DirectoryContext , которое позволяет вам указать альтернативное имя и пароль.

ОтношениеГлобальный каталог в лес подробно здесь .Короче говоря, лес - это абстракция Active Directory (AD) для группировки объектов AD.Глобальный каталог (если он есть в лесу) - это распределенный репозиторий данных, необходимый для выполнения определенных типов операций в этом лесу.

...