我有以下方法用于在本地计算机(首先完成)或当前林中搜索用户组。
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”存在于所谓的“整个目录”之外,但我的计算机可以找到它,如果这有什么不同吗?