Active Directory からすべてのユーザーを取得するために、LDAP クエリを使用して ADODB の recordset.open() コマンドを実行しています。
約 2600 人のユーザーがいますが、1000 人しか戻ってきません。
レコードセットの PageSize および MaxRecords プロパティを変更しようとしましたが、うまくいきませんでした。
余分なものがなければ、コードは次のようになります (接続の詳細を一般的なものにしました)。
ADODB.Connection conn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
rs.MaxRecords = 10000;
rs.PageSize = 10000;
conn.Open("Active Directory Provider","","",0);
string query = "SELECT cn FROM 'LDAP://OU=User Accounts,OU=TopLevel,DC=domainName,DC=local' where samAccountName = '*'"
rs.Open(query, conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, -1);
間違いなく 1000 レコードしか返されず (私が確認しました)、問題なくアクセスできます。
私が DirectorySearcher を使用していない理由は、これに比べて非常に遅いためです。