我正在使用DirectoryEntry class
尝试阅读特定OU和Sub OU的所有用户。
以下代码是任务的一部分
using(DirectoryEntry dEntry = new DirectoryEntry(dn))
using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry))
{
dSearcher.SearchScope = SearchScope.Subtree;
dSearcher.Filter = "(&(objectClass=user) (objectCategory=person))";
foreach(SearchResult in dSearcher.FindAll())
{
//Do something...
}
}
一些Sub OU受到保护,免受当前用户的阅读。我得到了任务例外"一个或多个错误"我正在寻找方法来检查OU是否无法访问并跳过它。并写出该ou进行记录。我尝试以下内容:
public void GetOu(List<MyUser> list, string path)
{
using (DirectoryEntry dEntry = new DirectoryEntry(path))
using(DirectorySearcher dSearcher = new DirectorySearcher(dEntry))
{
dSearcher.SearcherScope = SearchScope.Subtree;
dSearcher.Filter = "(objectClass=organizationalUnit)";
foreach(SearchResult result in dSearcher.FindAll())
{
GetUsersFromOU(list,result.GetDirectoryEntry());
}
}
}
public void GetUsersFromOU(List<MyUser> list,DirectoryEntry ou)
{
using (DirectorySearcher dSearcher = new DirectorySearcher(ou);
dSearcher.SearchScope = SearchScope.OneLevel;
dSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";
foreach (Search result in dSearcher.FindAll())
{
//Do something.... update list...
}
}
现在没有例外,跳过无法访问。1.但仍然找不到什么是"坏"2.运行时间是灾难性的...
您必须确保运行该过程的用户具有适当的权限来执行查找。这将是您的Windows帐户在桌面应用程序中,并且在ASP.NET应用程序中运行应用程序池的帐户。