我使用以下代码来获取给定域中所有用户的列表。
DirectoryEntry dirEntry = new DirectoryEntry( "LDAP://domainname", userName, password );
System.DirectoryServices.DirectorySearcher dirSearcher = new System.DirectoryServices.DirectorySearcher( dirEntry );
dirSearcher.Filter = "(&(objectClass=user)(objectCategory=person))";
foreach ( SearchResult resEnt in dirSearcher.FindAll( ) )
{
//Access searchResult
}
但返回的结果是部分的,并不反映域中的所有注册用户。我在这里错过了什么吗?
提前致谢,
巴拉斯。
答案 0 :(得分:3)
愚蠢的问题,你回来了多少?有可能在1000或2000左右吗?
AD对一个简单查询中返回的搜索结果数量有默认限制。您可以对结果进行分页,或更改限制,但如果您在1000或2000左右获得这将是一个死的赠品。
在这种情况下,Uwe使用外部LDAP浏览器进行测试的答案将显示相同的结果。 (我个人使用LBE或ApacheDS。LBE是600K且轻量级。
答案 1 :(得分:2)
通常情况下,我使用Softerra LDAP Browser的免费版本搜索这些问题(请务必使用版本2.6,这是免费的,通常仍然足够)。
答案 2 :(得分:2)
听起来你需要将PageSize设置为非零值。优秀的概述here。