C# 获取与域关联的其他ldap查询字符串
我在Softerra LDAP管理中有如下内容: 服务器:blah.govC# 获取与域关联的其他ldap查询字符串,c#,active-directory,C#,Active Directory,我在Softerra LDAP管理中有如下内容: 服务器:blah.gov OU=域控制器等… ldap://subdomain.blah.gov 我不知道如何在C#中获取其他ldap子域查询字符串 我不知道如何解释它,所以问一些问题,我会尽力澄清 更新:这就是Softerra LDAP管理员的外观。底部附近的ldap查询不是上述节点的子节点,但不知何故,程序知道它们并在GUI中链接它们。如果我能想出办法,那就可以解决我的问题了 查看我的BeaverTail LDAP浏览器-它是免费的,采用10
OU=域控制器等…
ldap://subdomain.blah.gov 我不知道如何在C#中获取其他ldap子域查询字符串 我不知道如何解释它,所以问一些问题,我会尽力澄清 更新:这就是Softerra LDAP管理员的外观。底部附近的ldap查询不是上述节点的子节点,但不知何故,程序知道它们并在GUI中链接它们。如果我能想出办法,那就可以解决我的问题了
查看我的BeaverTail LDAP浏览器-它是免费的,采用100%C#代码,可在以下位置获得: 最有趣的LDAP地址之一是
LDAP://RootDSE
——它将向您显示有关广告林和其他有趣内容的大量信息。如果单击my Beavertail浏览器中的根树节点,您将看到该有趣系统节点的内容
Beavertail还将向您展示AD层次结构,并向您展示组成该层次结构的LDAP路径
这有帮助吗???查看我的BeaverTail LDAP浏览器-它是免费的,采用100%C代码,可在此处获得: 最有趣的LDAP地址之一是
LDAP://RootDSE
——它将向您显示有关广告林和其他有趣内容的大量信息。如果单击my Beavertail浏览器中的根树节点,您将看到该有趣系统节点的内容
Beavertail还将向您展示AD层次结构,并向您展示组成该层次结构的LDAP路径
这有帮助吗???您应该使用全局目录对整个森林进行全局搜索。如果将DirectorySearcher绑定到全局编录,则它应提供包括子域在内的所有对象 如果您的林没有任何全局编录,或者您没有绑定到全局编录的权限(非常罕见),则必须枚举林中的所有域,逐个执行LDAP查询,并自行聚合结果 这是我起草的一个示例函数,供您参考
IEnumerable<SearchResult> Search(string domain, string filter)
{
DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, domain);
Forest forest = Forest.GetForest(context);
GlobalCatalog gc = null;
try
{
gc = forest.FindGlobalCatalog();
}
catch (ActiveDirectoryObjectNotFoundException)
{
// No GC found in this forest
}
if (gc != null)
{
DirectorySearcher searcher = gc.GetDirectorySearcher();
searcher.Filter = filter;
foreach (SearchResult result in searcher.FindAll())
{
yield return result;
}
}
else
{
foreach (Domain d in forest.Domains)
{
DirectorySearcher searcher = new DirectorySearcher(d.GetDirectoryEntry(), filter);
foreach (SearchResult result in searcher.FindAll())
yield return result;
}
}
}
IEnumerable搜索(字符串域、字符串过滤器)
{
DirectoryContext=新的DirectoryContext(DirectoryContextType.Forest,域);
Forest-Forest=Forest.GetForest(上下文);
GlobalCatalog gc=null;
尝试
{
gc=forest.FindGlobalCatalog();
}
捕获(ActiveDirectoryObjectNotFoundException)
{
//在此林中未找到GC
}
如果(gc!=null)
{
DirectorySearcher search=gc.GetDirectorySearcher();
searcher.Filter=过滤器;
foreach(searcher.FindAll()中的SearchResult)
{
收益结果;
}
}
其他的
{
foreach(林中的域d.Domains)
{
DirectorySearcher search=新的DirectorySearcher(d.GetDirectoryEntry(),过滤器);
foreach(searcher.FindAll()中的SearchResult)
收益结果;
}
}
}
您应该使用全局目录对整个林进行全局搜索。如果将DirectorySearcher绑定到全局编录,则它应提供包括子域在内的所有对象
如果您的林没有任何全局编录,或者您没有绑定到全局编录的权限(非常罕见),则必须枚举林中的所有域,逐个执行LDAP查询,并自行聚合结果
这是我起草的一个示例函数,供您参考
IEnumerable<SearchResult> Search(string domain, string filter)
{
DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, domain);
Forest forest = Forest.GetForest(context);
GlobalCatalog gc = null;
try
{
gc = forest.FindGlobalCatalog();
}
catch (ActiveDirectoryObjectNotFoundException)
{
// No GC found in this forest
}
if (gc != null)
{
DirectorySearcher searcher = gc.GetDirectorySearcher();
searcher.Filter = filter;
foreach (SearchResult result in searcher.FindAll())
{
yield return result;
}
}
else
{
foreach (Domain d in forest.Domains)
{
DirectorySearcher searcher = new DirectorySearcher(d.GetDirectoryEntry(), filter);
foreach (SearchResult result in searcher.FindAll())
yield return result;
}
}
}
IEnumerable搜索(字符串域、字符串过滤器)
{
DirectoryContext=新的DirectoryContext(DirectoryContextType.Forest,域);
Forest-Forest=Forest.GetForest(上下文);
GlobalCatalog gc=null;
尝试
{
gc=forest.FindGlobalCatalog();
}
捕获(ActiveDirectoryObjectNotFoundException)
{
//在此林中未找到GC
}
如果(gc!=null)
{
DirectorySearcher search=gc.GetDirectorySearcher();
searcher.Filter=过滤器;
foreach(searcher.FindAll()中的SearchResult)
{
收益结果;
}
}
其他的
{
foreach(林中的域d.Domains)
{
DirectorySearcher search=新的DirectorySearcher(d.GetDirectoryEntry(),过滤器);
foreach(searcher.FindAll()中的SearchResult)
收益结果;
}
}
}
你提到了C。你想用C#中的哪个类?你想干什么?您提到了子域查询字符串。您正在尝试编写LDAP查询字符串吗?或者您正在尝试为System.DirectoryServices命名空间中的LDAP查询类(包括DirectorySearcher)指定路径。我正在尝试以编程方式编写多个LDAP字符串,使用递归方法来跟踪树,或者编写一个LDAP查询来搜索子域Active Directory服务器。还有,“巴斯路径”?对不起,输入错误-我是指你提到的“基本路径”。你想用C#中的哪个类?你想干什么?您提到了子域查询字符串。您正在尝试编写LDAP查询字符串吗?或者您正在尝试为System.DirectoryServices命名空间中的LDAP查询类(包括DirectorySearcher)指定路径。我正在尝试以编程方式编写多个LDAP字符串,使用递归方法来跟踪树,或者编写一个LDAP查询来搜索子域Active Directory服务器。还有“巴斯路径”?对不起,输入错误-我是说“基本路径”,我喜欢它,但这个森林非常复杂,有超过50万用户。这是我的问题的答案,但由于时间限制,我们将不得不走一段路