Службы каталогов, Поиск всех доступных поставщиков - PullRequest
1 голос
/ 12 июля 2010

У меня есть следующий метод, используемый для поиска группы пользователей на локальном компьютере (сначала выполняется) или в текущем лесу.

public string FindUserGroup(string group)
    {
        //Search local computer
        using (DirectorySearcher searcher = new DirectorySearcher(new DirectoryEntry()))
        {
            searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))";
            SearchResult result = searcher.FindOne();
            if (result != null)
                return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path);
        }

        //Search current forest
        Forest forest = Forest.GetCurrentForest();
        foreach (Domain domain1 in forest.Domains)
        {
            using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry()))
            {
                searcher.Filter = "(&(objectClass=group)(|(cn=" + group + ")(dn=" + group + ")))";
                SearchResult result = searcher.FindOne();
                if (result != null)
                    return TranslateDirectoryEntryPath(result.GetDirectoryEntry().Path);
            }
        }

        return string.Empty;
    }

Моя проблема в том, что у нас в качестве примера есть «domain.local» и «mydomain.local», а мой текущий логин привязан к «domain.local», поэтому использование ниже не сможет найти «mydomain.local», даже если я через пользовательский интерфейс Windows могу.

Как я могу искать всех просматриваемых провайдеров с точки зрения моих компьютеров, если я не знаю их всех? Должен ли я ДЕЙСТВИТЕЛЬНО выполнять работу реестра самостоятельно?


Edit:

Одним из отличий в двух доменах является «уровень», на котором они находятся, когда я в диалоговом окне обозревателя объектов выбирает «Местоположения», он выглядит следующим образом:

  • Компьютер
  • Все направление
    • domain.local
  • mydomain.local

Таким образом, "mydomain.local" существует вне того, что называется "Весь каталог", но мой компьютер может найти его, если это имеет какое-то значение?

1 Ответ

0 голосов
/ 11 февраля 2011

Я не вижу проблемы, так как этот код уже был бы привязан к другим доменам.

foreach (Domain domain1 in forest.Domains)
{
    using (DirectorySearcher searcher = new DirectorySearcher(domain1.GetDirectoryEntry()))
    {

Вы пытаетесь сказать, что позже вы привязываете DirectoryEntry самостоятельно и не можете найти объекты из другого домена?

...