Freigeben über


Durchsuchen von Verzeichnissen

Zu den häufigsten Verzeichnisaufgaben zählen Suchvorgänge. Das DirectoryEntry-Objekt kann für einfache Suchvorgänge verwendet werden, z. B. Suchen eines einzelnen Verzeichnisobjekts, das für eine einfache Operation wie das Binden an die Domäne erforderlich ist. Komplexe Suchvorgänge oder die Rückgabe von umfangreichen Ergebnissen sind damit jedoch nicht möglich.

Verwenden Sie das DirectorySearcher-Objekt, um eine stabile Suchoperation zur Anwendung hinzuzufügen. Das DirectorySearcher-Objekt stellt mehrere Eigenschaften und Methoden bereit, mit denen Sie mehrere Suchkriterien auswählen können, z. B. Suchbereich, Filter, Platzhalterzeichenfolgen, Seitengrößen für Ergebnisse und Sortierung.

Dieser Abschnitt enthält die folgenden Themen:

Vor dem Durchführen einer Suche müssen Sie mit dem DirectorySearcher-Objekt und den Verzeichnissuchkonzepten vertraut sein. Wenn Sie zuvor ADSI verwendet haben, kennen Sie eventuell bereits die COM-Schnittstelle IDirectorySearch. Das DirectorySearcher-Objekt ist ein Wrapper für IDirectorySearch. Weitere Informationen zu dieser Schnittstelle finden Sie im Thema "IDirectorySearch" in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252.

Zum Durchführen einer Suche muss die Anwendung zuerst an einen Stamm im Verzeichnis gebunden werden. Wählen Sie einen Stammpunkt aus, der das kleinste Resultset liefert, um die Leistung zu optimieren. Konfigurieren Sie DirectorySearcher so, dass die folgenden Parameter für die Suchoperation bereitgestellt werden:

  • Ein Suchfilter, der die Suche auf einen bestimmten Objekttyp eingrenzt
  • Ein Bereich von Objekten für die Suche
  • Eine Liste von Attributen, die mit dem Objekt zurückgegeben werden sollen

Beim Konfigurieren dieser Suche müssen Sie entscheiden, nach welchem Objekttyp gesucht werden soll, und anschließend einen Suchfilter für den betreffenden Objekttyp erstellen. Das DirectorySearcher-Objekt stellt eine Filter-Eigenschaft bereit, die eine Zeichenfolge mit LDAP-Syntax als Filterzeichenfolge erfordert.

Danach müssen Sie entscheiden, ob der Filter für die Basis des Knotens, an den die Anwendung gebunden ist, für eine Ebene oder für die Unterstruktur gültig ist. Dieser Parameter wird mit der SearchScope-Eigenschaft festgelegt. Schließlich müssen Sie entscheiden, welche Eigenschaftennamen und Werte mit dem Objekt zurückgegeben werden sollen.

Optional können Sie ein DirectorySynchronization-Objekt verwenden, um eine synchronisierte Verzeichnissuche auszuführen. Dabei kann die Anwendung eine Suche durchführen, alle Ergebnisse durchlaufen, andere Funktionen ausführen, die sich nicht auf den Suchvorgang beziehen, oder für einen Augenblick inaktiv werden. Die Anwendung führt schließlich dieselbe Suche erneut aus, um ggf. neue Ergebnisse für die Suche abzurufen. Auf diese Weise kann eine Anwendung alle Aktualisierungen der Active Directory-Domänendienste ermitteln, die die in der Suche angegebenen Kriterien erfüllen.

Im folgenden Diagramm wird eine Suche veranschaulicht, die an den Container Sales gebunden ist.

Such-Beispiel

DirectorySearcher gibt ein einziges Ergebnis mit den zugehörigen Eigenschaften in einem SearchResult-Objekt zurück. Resultsets werden als SearchResultCollection zurückgegeben. Dabei handelt es sich um einen Container für alle SearchResult-Objekte, die von der Suche zurückgegeben werden.

DirectorySearcher stellt die beiden folgenden Methoden bereit, um die Suche durchzuführen:

  • FindOne gibt ein einzelnes Element zurück.
  • FindAll gibt eine Auflistung von Elementen zurück.

Weitere Informationen und eine Vorgehensweise zum Erstellen einer einfachen Suchanwendung finden Sie im Thema Searching Active Directory Hierarchies in der MSDN Library unter https://go.microsoft.com/fwlink/?LinkID=27252 (möglicherweise in englischer Sprache).

Siehe auch

Referenz

System.DirectoryServices
DirectoryEntry
DirectorySearcher
SearchScope
DirectorySynchronization

Konzepte

Erste Schritte in System.DirectoryServices

Send comments about this topic to Microsoft.

Copyright © 2007 Microsoft Corporation. Alle Rechte vorbehalten.