DirectorySearcher 的不同结果
Different result with DirectorySearcher
我写了一个小程序来查看AD组成员。当我在我的电脑上执行以下代码时,它运行良好,SearchResult 包含 "member" 属性,但是当我 运行 服务器或另一台计算机上的相同 exe "member" 属性 丢失。 usnchanged 和 usncreated 也会不同。我 运行 在每台电脑上使用相同用户的 exe。这是什么原因造成的?
...
using (DirectorySearcher searcher = new DirectorySearcher())
{
searcher.CacheResults = false;
searcher.Filter = "(&(objectClass=group)(cn=" + ADName + "))";
searcher.SizeLimit = int.MaxValue;
searcher.PageSize = int.MaxValue;
if (!DirectoryEntry.Exists(ADPath))
{
return null;
}
searcher.SearchRoot = new DirectoryEntry(ADPath);
using (SearchResultCollection collection = searcher.FindAll())
{
if (collection.Count == 1)
{
return collection[0];
}
}
}
...
组成员身份数据未复制到全局编录。如果您碰巧使用实际成员数据连接到域控制器,查询有时可能会起作用。在其他计算机上,您可能连接到不同域的其他域控制器,但信息不可用。
您可能想要连接到实际域中的域控制器,而不是全局编录。
我写了一个小程序来查看AD组成员。当我在我的电脑上执行以下代码时,它运行良好,SearchResult 包含 "member" 属性,但是当我 运行 服务器或另一台计算机上的相同 exe "member" 属性 丢失。 usnchanged 和 usncreated 也会不同。我 运行 在每台电脑上使用相同用户的 exe。这是什么原因造成的?
...
using (DirectorySearcher searcher = new DirectorySearcher())
{
searcher.CacheResults = false;
searcher.Filter = "(&(objectClass=group)(cn=" + ADName + "))";
searcher.SizeLimit = int.MaxValue;
searcher.PageSize = int.MaxValue;
if (!DirectoryEntry.Exists(ADPath))
{
return null;
}
searcher.SearchRoot = new DirectoryEntry(ADPath);
using (SearchResultCollection collection = searcher.FindAll())
{
if (collection.Count == 1)
{
return collection[0];
}
}
}
...
组成员身份数据未复制到全局编录。如果您碰巧使用实际成员数据连接到域控制器,查询有时可能会起作用。在其他计算机上,您可能连接到不同域的其他域控制器,但信息不可用。
您可能想要连接到实际域中的域控制器,而不是全局编录。