次の方法で共有


ディレクトリの検索

最も一般的なディレクトリ タスクは検索です。DirectoryEntry オブジェクトでは、単純な検索、たとえばドメインへのバインドなどの単純な処理に必要な 1 つのディレクトリ オブジェクトの検索を行えますが、複雑な検索を行ったり、大きな結果セットを返したりすることはできません。

アプリケーションに堅牢な検索処理を追加するには、DirectorySearcher オブジェクトを使用します。DirectorySearcher オブジェクトは、検索スコープ、フィルタ、ワイルドカード文字列、結果セットのページ サイズ、並べ替えなどの複数の検索基準の選択を可能にする一連のプロパティとメソッドを提供します。

ここでは、次のトピックについて説明します。

検索を実行する前に、DirectorySearcher オブジェクトとディレクトリ検索の概念に精通しておく必要があります。以前に ADSI を使用したことがある場合は、IDirectorySearch COM インターフェイスを使用した経験をお持ちかもしれません。DirectorySearcher オブジェクトは、IDirectorySearch のラッパーです。このインターフェイスの詳細については、MSDN ライブラリ (https://go.microsoft.com/fwlink/?LinkID=27252) で IDirectorySearch に関するトピックを参照してください。

検索を実行するには、アプリケーションは最初にディレクトリのルート ポイントにバインドする必要があります。パフォーマンスを最適にするには、結果セットが最も小さくなるポイントを選択します。DirectorySearcher を設定し、検索処理のための次のパラメータを提供する必要があります。

  • 特定の種類のオブジェクトに検索を絞り込む検索フィルタ
  • 検索するオブジェクトのスコープ
  • そのオブジェクトで返す属性の一覧

この検索を設定する場合、検索するオブジェクトの種類を決定し、その種類のオブジェクトの検索フィルタを作成する必要があります。DirectorySearcher オブジェクトは、フィルタ文字列として LDAP 構文を使用する文字列を必要とする Filter プロパティを提供します。

次に、フィルタのスコープを、アプリケーションがバインドしているノードのベースにするか、1 つのレベル全体にするか、サブツリー全体にするかを決定する必要があります。SearchScope プロパティを使用して、このパラメータを設定します。最後に、どのプロパティ名と値をそのオブジェクトで返すのかを決定する必要があります。

オプションで、DirectorySynchronization オブジェクトを使用して、ディレクトリ同期検索を実行できます。この検索によって、アプリケーションでは、検索を実行する、すべての結果を反復処理する、検索に関係しないその他の機能を実行する、または一定期間非アクティブにする、などのことが可能になります。アプリケーションでは、最終的にその検索に対する新しい結果を取得するために同じ検索が再度実行されます。このようにして、アプリケーションは、検索で指定された基準に一致する、Active Directory ドメイン サービスに対するすべての更新を追跡できます。

次の図は Sales コンテナにバインドする検索を示しています。

検索例

DirectorySearcher は、SearchResult オブジェクトで 1 つの結果とそのプロパティを返します。結果セットは、SearchResultCollection として返されます。これは、検索によって返されるすべての SearchResult オブジェクトのコンテナです。

DirectorySearcher は、検索を実行するための次の 2 つのメソッドを提供します。

  • FindOne は 1 つの項目を返します。
  • FindAll は項目のコレクションを返します。

基本的な検索アプリケーションの作成の詳細と手順については、MSDN ライブラリ (https://go.microsoft.com/fwlink/?LinkID=27252) で Active Directory 階層の検索に関するトピックを参照してください。

関連項目

リファレンス

System.DirectoryServices
DirectoryEntry
DirectorySearcher
SearchScope
DirectorySynchronization

概念

System.DirectoryServices の概要

Send comments about this topic to Microsoft.

Copyright © 2007 by Microsoft Corporation. All rights reserved.