1

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

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 用户界面也可以。

当我不一定知道所有可查看的提供程序时,如何从计算机的角度搜索所有可查看的提供程序?我真的必须自己做注册表工作吗?


编辑:

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

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

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

4

1 回答 1

0

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

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

您是不是想说稍后您自己绑定了一个 DirectoryEntry,而您无法从其他域中找到对象?

于 2011-02-11T06:16:12.920 回答