OU's списка Active Directory

У меня в настоящее время есть этот код,

        string defaultNamingContext;

        DirectoryEntry rootDSE = new DirectoryEntry("LDAP://RootDSE");
        defaultNamingContext = rootDSE.Properties["defaultNamingContext"].Value.ToString();
        rootDSE = new DirectoryEntry("LDAP://" + defaultNamingContext);
        //DirectoryEntry domain = new DirectoryEntry((string)"LDAP://" + defaultNamingContext);

        DirectorySearcher ouSearch = new DirectorySearcher(rootDSE,"(objectCategory=Organizational-Unit)", 
                                 null, SearchScope.Subtree);

        MessageBox.Show(rootDSE.Path.ToString());
        try
        {
            SearchResultCollection collectedResult = ouSearch.FindAll();
            foreach (SearchResult temp in collectedResult)
            {
                comboBox1.Items.Add(temp.Properties["name"][0]);
                DirectoryEntry ou = temp.GetDirectoryEntry();
            }
        }

То, когда я использую отладчик i, видит, что rootDSE.Path, заражают указывающий на правильное место, в этом случае DC=g-t-p,DC=Local но искатель каталога не находит результатов. Кто-либо может помочь?

6
задан marc_s 25 May 2010 в 16:33
поделиться

1 ответ

Стивен - у меня плохо - почему-то поиск с использованием objectCategory не работает.

Несмотря на то, что objectCategory отображается как CN = Organizational-Unit , для поиска вам все равно нужно использовать то же значение, что и для objectClass:

Поэтому попробуйте используйте фильтр (objectCategory = organizationUnit) - это определенно работает для меня!

ОБНОВЛЕНИЕ: , чтобы получить некоторые свойства в результатах поиска (чтобы отображать их в поле со списком), вам необходимо включить их при создании DirectorySearcher:

DirectorySearcher ouSearch = new DirectorySearcher(rootDSE);
ouSearch.Filter = "(objectCategory=Organizational-Unit)";
ouSearch.SearchScope = SearchScope.Subtree;

ouSearch.PropertiesToLoad.Add("name");
// add more properties if you want to ...

При этом вам определенно следует иметь возможность получить temp.Properties ["name"] [0] и вставить его в список элементов поля со списком.

Я действительно не понимаю, что вам нужно в строке

DirectoryEntry ou = temp.GetDirectoryEntry();

после получения свойства name .....

8
ответ дан 16 December 2019 в 21:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: