【问题标题】:Active Directory List OU'sActive Directory 列出 OU
【发布时间】:2010-05-25 15:39:13
【问题描述】:

我目前有这个代码,

        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();
            }
        }

当我使用调试器时,我可以看到 rootDSE.Path 实际上指向了正确的位置,在本例中为 DC=g-t-p,DC=Local,但目录搜索器没有找到任何结果。有人可以帮忙吗?

【问题讨论】:

    标签: c# active-directory ldap directoryservices


    【解决方案1】:

    Stephen - 我的错 - 由于某种原因,使用 objectCategory 的搜索不起作用。

    即使objectCategory 显示为CN=Organizational-Unit,您仍然需要使用与objectClass 相同的值:

    所以尝试使用过滤器(objectCategory=organizationalUnit) - 这绝对适合我!

    更新:为了在搜索结果中获取一些属性(以便在组合框中显示它们),您需要在创建 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属性后.....

    【讨论】:

    • 天啊,这么简单的东西,在我几个小时的反复试验编码之后,我因为没有尝试过而自责:@我不认为它是我最近效率最高的......跨度>
    • 我是否正确地收集了搜索对象以将它们添加到组合框项目中?
    • +1 在自己测试并准备写答案后,我得出了相同的确切结论。
    • @Stephen Murby:更新了我的答案-我想您必须指定要在搜索结果中包含哪些属性,否则我认为您将只有 .Path 属性
    • 谢谢你们,非常感谢!很抱歉,我对组合框的主要问题是它抛出了一个未处理的 COMException“未知错误(0x80005000)”,我认为这是一个未知错误,我肯定在做一些愚蠢的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多