如何检查 C# 中的 OU 可访问性,DirectoryEntry?
How to check OU accessability in C # , DirectoryEntry?
我正在使用 DirectoryEntry class
正在尝试从特定 OU 和子 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...
}
}
当前用户无法读取某些子 OU。
我得到了任务异常 "one or more error accured"
我正在寻找方法来检查 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...
}
}
现在没有异常并跳过不可访问的 OU。
1.But 仍然找不到 "bad ou" 是什么
2.run时间是灾难性的...
您必须确保进程的用户 运行 具有执行查找的适当权限。这将是您在桌面应用程序中的 Windows 帐户以及 ASP.NET 应用程序中的应用程序池帐户 运行。
我正在使用 DirectoryEntry class
正在尝试从特定 OU 和子 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...
}
}
当前用户无法读取某些子 OU。 我得到了任务异常 "one or more error accured" 我正在寻找方法来检查 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...
}
}
现在没有异常并跳过不可访问的 OU。 1.But 仍然找不到 "bad ou" 是什么 2.run时间是灾难性的...
您必须确保进程的用户 运行 具有执行查找的适当权限。这将是您在桌面应用程序中的 Windows 帐户以及 ASP.NET 应用程序中的应用程序池帐户 运行。