System.DirectoryServices.AccountManagementを使用して、ユーザールックアップ機能を提供しています。
このビジネスには、AMR、EUR、JPNなどの地域固有のADドメインがいくつかあります。
以下はEURドメインで機能しますが、他のドメインからのユーザーを(当然のことながら)返しません。
var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com");
var query = new UserPrincipal(GetContext());
query.Name = "*Bloggs*";
var users = new PrincipalSearcher(query).FindAll().ToList();
ただし、ディレクトリ全体をターゲットにすると、リージョン固有のドメインのいずれからもユーザーが返されません。
var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com");
ディレクトリ全体を検索するにはどうすればよいですか?
アップデート
「ActiveDirectory検索のしくみ」を読んでください。
http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx
サーバー名にポート3268の接尾辞を付けると、グローバルカタログが検索されます。
var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com");
しかし、それは非常に、非常に遅いです。パフォーマンスを改善する方法について何か提案はありますか?