Freigeben über


Windows Search als Entwicklungsplattform

Zum Indizieren der Inhalte und Eigenschaften neuer Dateiformate und Datenspeicher muss Microsoft Windows Search um Add-Ins erweitert werden.

Bevor ein Drittanbieterentwickler neue Dateiformate und Datenspeicher abrufen kann, dass diese Formate und Speicher in Den Abfrageergebnissen in Windows Explorer angezeigt werden, muss der Entwickler die folgenden drei Schritte ausführen:

  • Implementieren Sie eine Shell-Datenquelle, um den Shell-Namespace zu erweitern.
  • Machen Sie Elemente in einem Datenspeicher verfügbar (wenn sie einen neuen Datenspeicher hinzufügen, da er indiziert werden muss).
  • Entwickeln Sie einen Protokollhandler, damit Windows Search auf die Daten für die Indizierung zugreifen kann.

Dieses Thema ist wie folgt organisiert:

Erste Schritte

Bevor Sie mit dem Erstellen einer Windows Search-Anwendung beginnen, denken Sie daran, dass die bevorzugte Methode dafür eine Shell-Datenquelle ist. Eine Shell-Datenquelle erweitert den Shell-Namespace und macht die Elemente in einem Datenspeicher verfügbar. Die Elemente im Datenspeicher können dann vom Windows Search-System mithilfe eines Protokollhandlers indiziert werden. Dieser indirekte Ansatz für den Zugriff auf Windows Search durch die Implementierung einer Shell-Datenquelle wird bevorzugt, da er Zugriff auf die vollständige Shell-Funktionalität bietet. Auf diese Weise wird eine angemessene Benutzerfreundlichkeit gewährleistet.

Wenn die Abfrageergebnisse in Windows Explorer angezeigt werden sollen, müssen Sie eine Shell-Datenquelle implementieren, bevor Sie einen Protokollhandler zum Erweitern des Indexes erstellen können. Wenn jedoch alle Abfragen programmgesteuert sind (z. B. über OLE DB) und vom Code der Anwendung anstelle der Shell interpretiert werden, ist ein Shell-Namespace weiterhin bevorzugt, aber nicht erforderlich.

Für Windows ist ein Protokollhandler erforderlich, um Kenntnisse über Dateiinhalte zu erhalten, z. B. Elemente in Datenbanken oder benutzerdefinierte Dateitypen. Während Windows Search den Namen und die Eigenschaften der Datei indizieren kann, hat Windows keine Kenntnis vom Inhalt der Datei. Daher können solche Elemente nicht in der Windows-Shell indiziert oder verfügbar gemacht werden. Wenn Sie einen benutzerdefinierten Protokollhandler implementieren, können Sie diese Elemente verfügbar machen. Eine Liste der Handler, die vom Entwicklerszenario identifiziert werden, das Sie erreichen möchten, finden Sie unter Übersicht über Handler.

Übersicht über Suchentwicklungsszenarien

Die häufigsten Entwicklungsszenarien in Windows Search sind:

Hinzufügen eines neuen Datenspeichers

Sie benötigen nur einen Shell-Datenspeicher für Windows Search, wenn Sie einen neuen Datenspeicher hinzufügen, der indiziert werden soll. Ein Datenspeicher ist ein Repository von Daten, die dem Shell-Programmiermodell als Container mithilfe einer Shell-Datenquelle verfügbar gemacht werden können. Die Elemente in einem Datenspeicher können dann vom Windows Search-System mithilfe eines Protokollhandlers indiziert werden. Der Protokollhandler implementiert das Protokoll für den Zugriff auf eine Inhaltsquelle im nativen Format. Die Schnittstellen ISearchProtocol und ISearchProtocol2 werden verwendet, um einen benutzerdefinierten Protokollhandler zu implementieren, um die Datenquellen zu erweitern, die indiziert werden können. Informationen zum Erstellen einer Shell-Datenquelle finden Sie unter Implementieren der Grundlegenden Ordnerobjektschnittstellen.

Hinzufügen eines neuen Dateiformats

Wenn Sie ein neues benutzerdefiniertes Dateiformat hinzufügen, müssen Sie entweder einen Filterhandler oder einen Eigenschaftenhandler entwickeln, aber nicht beides. Ein Filter ist eine Implementierung der IFilter-Schnittstelle . Es öffnet Dateien eines bestimmten Dateityps und filtert Eigenschaften und Textblöcke für den Indexer. Filter sind Dateitypen zugeordnet, die durch Dateinamenerweiterungen, MIME-Typen oder Klassenbezeichner (CLSIDs) gekennzeichnet sind. Obwohl ein Filter mehrere Dateitypen verarbeiten kann, funktioniert jeder Dateityp nur mit einem Filter.

Ein Eigenschaftenhandler übersetzt die in einer Datei gespeicherten Daten in ein strukturiertes Schema, das von Windows Explorer, Windows Search und anderen Anwendungen erkannt wird und darauf zugegriffen werden kann. Diese Systeme können dann mit dem Eigenschaftenhandler interagieren, um Eigenschaften in und aus einer Datei zu schreiben und zu lesen. Die übersetzten Daten umfassen Detailansicht, Infoinfos, Detailbereich, Eigenschaftenseiten usw. Jeder Eigenschaftenhandler ist einem bestimmten Dateityp zugeordnet, der durch die Dateinamenerweiterung identifiziert wird. Sie benötigen einen Eigenschaftenhandler, um Folgendes auszuführen:

  • Zeigen Sie nicht indizierte Elementeigenschaften auf der Benutzeroberfläche an.
  • Unterstützt das Schreiben von Eigenschaften.

Verwenden von Windows-Suchergebnissen

In den folgenden Abschnitten werden mehrere Möglichkeiten zum Nutzen von Windows Search-Ergebnissen beschrieben:

Abfrage von Daten

Entwickler, die Anwendungen über das kombinierte Windows Search- und Windows-Eigenschaftensystem schreiben, können unabhängig von Anwendung oder Dateityp auf Dateien und Elemente zugreifen. Es gibt zwei Möglichkeiten für Anwendungen, auf die Indexerdaten zuzugreifen:

  • Anwendungen kommunizieren direkt mit OLE DB, indem sie Windows Search strukturierte Abfragesprache -Abfragen (SQL) an den Windows Search-OLE DB-Anbieter senden, um Ergebnisse abzurufen. Abfragen können manuell oder mithilfe der ISearchQueryHelper-Schnittstelle erstellt werden, um sql aus Suchschlüsselwörtern und Advanced Query Syntax (AQS) zu generieren.
  • Anwendungen arbeiten über die Shellebene. Der Vorteil der Shell-Ebene ist, dass sie auch andere Quellen wie grep unterstützt. Der Nachteil ist jedoch, dass nicht alle Indexerfeatures verfügbar sind.

Eine weitere Option ist die Verwendung der Protokolle search-ms:// und search://, die URL-basierte Suchvorgänge ausführen, die über Windows Explorer gerendert werden. Diese Option ermöglicht die leichteste Entwicklung, gibt jedoch keine Ergebnisse oder Benutzerauswahlen aus der Ergebnisansicht an die aufrufende Anwendung zurück. Wie andere Protokolle können auch Suchanwendungen von Drittanbietern die Such- ms://- und search://-Protokolle übernehmen, wenn die Anwendungen dem erforderlichen Featuresatz entsprechen. Weitere Informationen zum Abfragen finden Sie unter Abfrageprozess in Windows Search und Programmgesteuertes Abfragen des Indexes.

In Windows 7 und höher bietet die Verbundsuche einen neuen Suchanbieter, der Remotedatenspeicher über Webserver über das OpenSearch-Protokoll abfragt und die Ergebnisse als RSS- oder Atom-XML-Feeds aufzählt. Suchconnectors sind Namespaceverbindungen, die das Ordnerverhalten mithilfe eines Suchanbieters simulieren. Weitere Informationen zum Suchverbund zu Remotedatenspeichern in Windows 7 finden Sie unter Verbundsuche in Windows.

Indizieren von Dateien und Elementen

Der Inhalt, der indiziert wird, basiert auf den Datei- und Datentypen, die durch in Windows Search enthaltene Add-Ins und die Standardeinschluss- und Ausschlussregeln für Ordner im Dateisystem unterstützt werden. Beispielsweise unterstützen die in der Fenstersuche enthaltenen Filter über 200 gängige Datentypen, darunter Microsoft Office-Dokumente, Microsoft Outlook-E-Mails (in Verbindung mit dem MAPI-Protokollhandler), Nur-Text-Dateien, HTML und vieles mehr. Eine vollständige Liste der nativ unterstützten Dateitypen finden Sie unter Was ist im Index enthalten.

Der Index kann mit Eigenschaftenhandlern und Filtern erweitert werden, um den Inhalt und die Eigenschaften neuer Dateiformate für den Index und windows Explorer verfügbar zu machen. Filter sind eine Implementierung der IFilter-Schnittstelle . Es gibt zwei Arten von Filtern: einen, der mit einzelnen Elementen wie Dateien interagiert, und einer, der mit Containern wie Ordnern interagiert. Filter sind vielseitig einsetzbar, da sie das Blöcken von Daten, Textinhalten, einigen Eigenschaften und mehreren Sprachen unterstützen.

Im Gegensatz dazu haben Eigenschaftenhandler einen spezifischeren Zweck: die Eigenschaften bestimmter Dateitypen verfügbar zu machen, die durch Dateinamenerweiterungen identifiziert werden. Ein Eigenschaftenhandler für einen Dateityp kann Get- und Festlegen von Eigenschaften aktivieren und die eigenschaften auflisten, die diesem Dateityp zugeordnet sind. Im Gegensatz zu Filtern unterstützen Eigenschaftenhandler das Chucking von Daten oder Textinhalten nicht, und Eigenschaftshandler können nicht angeben, in welcher Sprache sich eine Texteigenschaft befindet, es sei denn, sie unterstützen das Schreiben von Eigenschaften.

Indizieren eines Datenspeichers

Der Index kann mit Protokollhandlern erweitert werden, um den Zugriff auf proprietäre Datenspeicher zu ermöglichen. Beispielsweise erfordern Dateien und Elemente, die in Nicht-Dateisystem-Datenspeichern (z. B. Datenbanken und E-Mail-Speicher) enthalten sind, einen Protokollhandler, um eine URL einem Stream zuzuordnen. Protokollhandler können optional auch die richtigen Filter bestimmen, die zum Extrahieren von Informationen aus einem Stream verwendet werden sollen. Filter listet die Datenspeicher-URLs auf. Die Elemente werden dann mithilfe des richtigen Filter- und/oder Eigenschaftenhandlers einzeln indiziert. Weitere Informationen finden Sie unter Erweitern des Indexes.

Verwalten des Indizierungsprozesses

Anwendungsentwickler können den Umfang und die Häufigkeit der Windows Search-Indizierung mithilfe verschiedener Verwaltungsschnittstellen steuern. Diese Schnittstellen umfassen Funktionen zum Hinzufügen und Entfernen der Verzeichnisse, die vom Indexer auf Änderungen überprüft werden, zum manuellen Benachrichtigen des Indexes von Änderungen an Daten, zum Überprüfen der status des Indexers und zum Erzwingen einer erneuten Indizierung einiger oder aller Daten. Weitere Informationen finden Sie unter Verwalten des Indexes.

Integrieren des Windows-Eigenschaftensystems in Windows Search-Anwendungen

Das Windows-Eigenschaftensystem ist ein erweiterbares System mit Datendefinitionen mit Lese-/Schreibzugriff, das eine einheitliche Methode zum Ausdrücken von Metadaten zu Shellelementen bietet. Mit dem Windows-Eigenschaftensystem in Windows Vista und höher können Sie Metadaten für Shellelemente speichern und abrufen. Ein Shellelement ist ein beliebiger einzelner Inhalt, z. B. eine Datei, ein Ordner, eine E-Mail oder ein Kontakt. Eine Eigenschaft ist ein einzelner Teil von Metadaten, die einem Shellelement zugeordnet sind. Eigenschaftswerte werden als PROPVARIANT-Struktur ausgedrückt.

Eine umfangreiche Liste allgemeiner Eigenschaften ist für eine Reihe gängiger Elementtypen wie Fotos, Musik, Dokumente, Nachrichten, Kontakte und Dateien enthalten. Entwickler können auch ihre eigenen Eigenschaften auf der Plattform einführen, wenn keine vorhandene Eigenschaft ihren Anforderungen entspricht. Weitere Informationen zum Integrieren von Anwendungen in das Windows-Eigenschaftensystem finden Sie unter Entwickeln von Eigenschaftenhandlern.

Übersicht über Handler

Ein Handler ist ein COM-Objekt (Component Object Model), das Funktionen für ein Shellelement bereitstellt. Die meisten Shell-Datenquellen bieten ein erweiterbares System zum Binden von Handlern an Elemente. Der Dateisystemordner verwendet beispielsweise das Zuordnungssystem, um die Handler für einen bestimmten Dateityp zu suchen. Für jeden Dateityp ist ein bestimmter Handler erforderlich. Ein Filterhandler ist für den Dateityp Adobe Acrobat .pdf erforderlich, z. B. ist ein anderer Filterhandler für das .doc Dateiformat erforderlich usw.

Verschiedene Handler haben einige Gemeinsamkeiten. In Windows Vista und höher müssen alle Handler eine der folgenden Schnittstellen verwenden, um den Handler zu initialisieren: IInitializeWithStream, IInitializeWithItem oder IItinitializeWithFile.

In der folgenden Tabelle sind allgemeine Entwickleraufgaben aufgeführt, der Typ des Handlers, der für jede Aufgabe benötigt wird, und enthält einen Link zu konzeptionellen Informationen zur Ausführung der einzelnen Aufgaben.

Aufgabe Handler Konzeptionelle Informationen
Zugreifen auf die Eigenschaften einer Datei für die Indizierung Eigenschaftenhandler Entwickeln von Eigenschaftenhandlern
Systemdefinierte Eigenschaften für benutzerdefinierte Dateiformate
Hinzufügen von Zwischenablageformaten für das Datenobjekt (IDataObject) eines Elements (Datenobjekte werden in Drag-and-Drop- und Copy/Paste-Szenarien verwendet.) Datenobjekthandler Erstellen von Datenhandlern
Hinzufügen von Verben für ein Element, die häufig in einem Kontextmenü angezeigt werden Kontextmenühandler Erstellen von Kontextmenühandlern
Anpassen eines Kontextmenüs mithilfe dynamischer Verben
Zuordnen eines Dateityps zu einem bestimmten Symbol Symbolhandler Erstellen von Symbolhandlern
Erstellen von Eigenschaftenblättern mit Ui-Bildern und Steuerelementen, die eine benutzerdefinierte Interaktion mit einem Dateityp ermöglichen Eigenschaftenblatthandler Eigenschaftenblatthandler
Aktivieren eines Elementtyps zur Unterstützung von Drag-and-Drop- und Kopier-/Einfügeszenarien Drop-Handler Übertragen von Shellobjekten mit Drag-and-Drop und der Zwischenablage
Extrahieren von Text- und Dokumenteigenschaften für die Indizierung Filterhandler Entwickeln von Filterhandlern
Indizieren eines neuen Dateityps Filterhandler, Eigenschaftenhandler Entwickeln von Filterhandlern
Entwickeln von Eigenschaftenhandlern
Indizieren des Inhalts eines Datenspeichers Protokollhandler Entwickeln von Protokollhandlern
Vorschau einer vereinfachten Ansicht des Shellelements im Windows Explorer Vorschaubereich Vorschauhandler Vorschauhandler
Bereitstellen von Popuptext, wenn eine Maus über ein Benutzeroberflächenobjekt bewegt QuickInfo-Handler Erstellen von Shellerweiterungshandlern (Infotip-Anpassung)
Bereitstellen eines statischen Images zur Darstellung eines Shellelements Miniaturansichtshandler Miniaturansichtshandler

 

In der folgenden Tabelle sind Handler und die Schnittstellen für die Implementierung der einzelnen Handlertypen aufgeführt.

Handler Schnittstellen
Drop-Handler IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Datenobjekthandler IDataObject, IPersistFile
Filterhandler Ifilter
Symbolhandler IExtractIcon
Optional: IPersist, IPersistFile
QuickInfo-Handler IQueryInfo
Vorschauhandler IPreviewHandler
Eigenschaftenhandler Ipropertystore
Protokollhandler IFilter, ISearchProtocol, IUrlAccessor
Optional: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Eigenschaftenblatthandler IShellExtInit, IShellPropSheetExt
Kontextmenühandler IContextMenu, IExplorerCommand, IShellExtInit
Miniaturansichtshandler IThumbnailProvider

 

Hinweis

Ein Eigenschaftenhandler wird manchmal als Metadatenhandler verwendet. Eine Shell-Datenquelle wird manchmal als Shellnamespaceerweiterung bezeichnet. Ein Dateityphandler wird manchmal als Shellerweiterungshandler oder Shellerweiterung bezeichnet.

 

Weitere Informationen zum Erstellen von Handlern finden Sie unter Erstellen von Shellerweiterungshandlern. Weitere Informationen zu Eigenschaften finden Sie unter Windows-Eigenschaftensystem.

Richtlinien für das Add-In-Installationsprogramm

Verwenden Sie die folgenden Richtlinien beim Erstellen eines Add-In-Installationsprogramms:

  • Das Installationsprogramm muss entweder das EXE- oder MSI-Installationsprogramm verwenden.
  • Versionshinweise müssen bereitgestellt werden.
  • Für jedes installierte Add-In muss ein Eintrag "Software" erstellt werden.
  • Das Installationsprogramm muss alle Registrierungseinstellungen für den bestimmten Dateityp oder Den jeweiligen Speicher übernehmen, den das aktuelle Add-In versteht.
  • Wenn ein vorheriges Add-In überschrieben wird, sollte das Installationsprogramm den Benutzer benachrichtigen.
  • Wenn ein neueres Add-In ein vorheriges Add-In überschrieben hat, sollte der Benutzer in der Lage sein, die Funktionalität des vorherigen Add-Ins wiederherzustellen und es erneut zum Standard-Add-In für diesen Dateityp oder Speicher zu machen.

Hinweis für Implementierer

Vor dem Erstellen eines Filter- oder Eigenschaftenhandlers sollten Entwickler Folgendes in Betracht ziehen:

  • Bei diesen Handlern handelt es sich um prozessinterne Erweiterungen, die in Prozesse geladen werden, die Sie nicht steuern, z. B. den Filterdaemonprozess, Windows Explorer (grep search) und Hosts von Drittanbietern wie Windows Mail).
  • Sie müssen sicheren Code schreiben, der robust genug ist, um willkürlich beschädigte Formen Ihres Dateiformats zu behandeln, die zum Angriff auf das System erstellt wurden.
  • Ihr Add-In darf keine Ressourcen auslaufen, die Probleme für die Hostprozesse verursachen.
  • Ihr Add-In darf nicht abstürzen, da dadurch auch die Hostprozesse abstürzen und der Filtervorgang verlangsamt wird.
  • Da diese Handler in einem Hintergrundsystemprozess ausgeführt werden, müssen sie schnell mit einem Minimum an CPU- und E/A-Auslastung arbeiten, um die Leistungsanforderungen des Systems zu erfüllen.

Daher sollten diese Add-Ins von Entwicklern mit Erfahrung in der Erstellung von Code auf Systemebene geschrieben werden.

Zusätzliche Ressourcen

Übersicht über Windows Search

Von Windows Search unterstützte Sprachen

Verwenden von verwaltetem Code mit Shelldaten und Windows Search

Windows Search-Entwicklerhandbuch