我正在尝试查询Active目录以获取我的asp.net/C#应用程序中的用户列表。
我有这段代码:
adProvider = "LDAP";
adPath = "DC00.Domain.prv/OU=Sub,OU=Users,OU=Test,DC=Domain,DC=prv";
entry = new DirectoryEntry(string.Format("{0}://{1}", adProvider, adPath),"AD","ThePwd");
DirectorySearcher searcher1 = new DirectorySearcher(entry);
searcher1 = new DirectorySearcher("objectClass=user");
SearchResultCollection results1;
results1 = searcher1.FindAll();
var list = new List<string>();
for (int i = 0; i < results1.Count; i++)
{
list.Add(results1[i].Properties["cn"][0].ToString());
}
return list;
它正在工作,因为我从用户那里获得了1000个“通用名称”的列表,但事实上Test/Users/Sub
OU只有一个用户..似乎请求正在搜索所有AD范围内的用户..
有什么问题?
感谢您的帮助
答案 0 :(得分:2)
也许我错了,但你两次覆盖变量searcher1:
如果你想使用第一个覆盖,那么第二次覆盖是无用的......
searcher1 = new DirectorySearcher("objectClass=user");
答案 1 :(得分:1)
小心使用过滤器"objectClass=user"
,您将收集更好用的用户和计算机:
(&(objectCategory=person)(objectClass=user))