目录服务,搜索所有可用的提供商

时间:2010-07-12 11:05:53

标签: c# active-directory ldap directoryservices domaincontroller

我有以下方法用于在本地计算机(先完成)或当前林中搜索用户组。

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用户界面也能够。

如果我不知道所有可查看的提供商,我怎样才能从我的计算机角度搜索所有可查看的提供商?我真的必须自己完成注册工作吗?


编辑:

当我在对象浏览器对话框中选择“位置”时,2个域中的一个区别是它们所处的“级别”,它布局为:

  • 计算机
  • 整个方向
    • domain.local
  • mydomain.local

所以“mydomain.local”在所谓的“整个目录”之外出现,但我的计算机可以找到它,如果这有什么区别吗?

1 个答案:

答案 0 :(得分:0)

我没有看到问题,因为此处的代码已经绑定到其他域。

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

您是否试图说明以后您自己绑定DirectoryEntry,并且无法从其他域中找到对象?