为什么此代码不限于OU?

时间:2012-02-29 11:30:39

标签: asp.net active-directory

我正在尝试查询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范围内的用户..

有什么问题?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

也许我错了,但你两次覆盖变量searcher1:

如果你想使用第一个覆盖,那么第二次覆盖是无用的......

searcher1 = new DirectorySearcher("objectClass=user");

答案 1 :(得分:1)

小心使用过滤器"objectClass=user",您将收集更好用的用户和计算机:

(&(objectCategory=person)(objectClass=user))