Entwickeln von Eigenschaftenhandlern für Windows Search

Microsoft Windows Search verwendet Eigenschaftenhandler, um die Werte von Eigenschaften aus Elementen zu extrahieren und das Eigenschaftssystemschema zu verwenden, um zu bestimmen, wie eine bestimmte Eigenschaft indiziert werden soll. Zum Lesen und Indizieren von Eigenschaftswerten werden Eigenschaftenhandler von Windows Search außerhalb des Prozesses aufgerufen, um die Sicherheit und Stabilität zu verbessern. Im Gegensatz dazu werden Eigenschaftenhandler vom Windows-Explorer zum Lesen und Schreiben von Eigenschaftswerten im Prozess aufgerufen.

Dieses Thema ergänzt das Thema Eigenschaftssystem durch spezifische Informationen für Windows Search und enthält die folgenden Abschnitte:

 

Entwurfsentscheidungen für Eigenschaftenhandler

Das Implementieren von Eigenschaftenhandlern umfasst die folgenden Schritte:

  1. Treffen von Entwurfsentscheidungen zu den Eigenschaften, die Sie unterstützen möchten.
  2. Erstellen einer Eigenschaftsbeschreibungsdatei (.propdesc) für Eigenschaften, die noch nicht im Eigenschaftensystem vorhanden sind.
  3. Implementieren und Testen des Eigenschaftenhandlers.
  4. Installieren und Registrieren der Eigenschaftenhandler- und Eigenschaftenbeschreibungsdateien.
  5. Testen der Installation und Registrierung von Eigenschaftenhandlern.

Bevor Sie beginnen, müssen Sie die folgenden Entwurfsfragen berücksichtigen:

  • Welche Eigenschaften unterstützt/soll das Dateiformat unterstützen?
  • Befinden sich diese Eigenschaften bereits im Systemschema?
  • Kann ich einen vorhandenen, vom System bereitgestellten Eigenschaftenhandler verwenden?
  • Welche Eigenschaften können Endbenutzern angezeigt werden?
  • Welche Eigenschaften können Benutzer bearbeiten?
  • Sollte die Unterstützung für die Volltextsuche von einem Eigenschaftenhandler oder einem Filter stammen?
  • Muss ich ältere Anwendungen unterstützen? Wenn ja, was muss ich implementieren?

Hinweis

Bevor Sie fortfahren, lesen Sie die Verwendung von systemseitig bereitgestellten Eigenschaftenhandlern, um festzustellen, ob Sie einen vom System bereitgestellten Eigenschaftenhandler verwenden können, sodass Sie Zeit- und Entwicklungsressourcen sparen können.

 

Nachdem Sie diese Entscheidungen getroffen haben, können Sie formale Beschreibungen Ihrer benutzerdefinierten Eigenschaften schreiben, damit die Windows-Suchmaschine mit der Indizierung Ihrer Dateien und Eigenschaften beginnen kann. Diese formalen Beschreibungen sind XML-Dateien, die im Eigenschaftsbeschreibungsschema beschrieben werden.

Eigenschaftsentscheidungen

Wenn Sie überlegen, welche Eigenschaften Sie unterstützen sollen, sollten Sie die Indizierungs- und Suchanforderungen Ihrer Benutzer ermitteln. Beispielsweise können Sie möglicherweise hundert potenziell nützliche Eigenschaften für Ihren Dateityp ermitteln, aber die Benutzer sind vielleicht nur an der Suche nach einer Handvoll Eigenschaften interessiert. Darüber hinaus möchten Sie möglicherweise eine andere, größere oder kleinere Gruppe dieser Eigenschaften für Benutzer in Windows-Explorer anzeigen und Benutzern erlauben, nur eine Teilmenge dieser angezeigten Eigenschaften zu bearbeiten.

Ihr Dateityp kann alle benutzerdefinierten Eigenschaften unterstützen, die Sie definieren, sowie eine Reihe von systemdefinierten Eigenschaften. Bevor Sie eine benutzerdefinierte Eigenschaft erstellen, bitte überprüfen Sie die Systemeigenschaften, um festzustellen, ob die zu unterstützende Eigenschaft bereits von einer Systemeigenschaft definiert ist. Achten Sie immer darauf, die wichtigsten vom System definierten Eigenschaften zu unterstützen.

Es wird empfohlen, eine Matrix zu verwenden, mit der Sie Ihre Eigenschaften entwerfen können:

Name der Eigenschaft Ist indizierbar? Kann angezeigt werden? Ist bearbeitbar?
property1 Y Y N
Eigenschaft... Y Y N
propertyn N N N

 

Für jede dieser Eigenschaften müssen Sie bestimmen, welche Attribute sie enthalten sollen, und diese dann formal in Eigenschaftsbeschreibungs-XML-Dateien (.propdesc) beschreiben. Zu den Attributen gehören der Datentyp, die Bezeichnung, die Hilfszeichenfolge und vieles mehr. Bei indizierbaren Eigenschaften sollten Sie besonders auf die folgenden Eigenschaftsattribute achten, die sich im searchInfo-XML-Element der Eigenschaftsbeschreibungsdatei befinden.

attribute BESCHREIBUNG
inInvertedIndex Optional. Gibt an, ob ein Zeichenfolgeneigenschaftswert in Wörter zerlegt und jedes Wort im invertierten Index gespeichert werden soll. Der invertierte Index ermöglicht die effiziente Suche nach Wörtern und Ausdrücken über den Eigenschaftswert mithilfe von CONTAINS oder FREETEXT (z. B. SELECT ... WHERE CONTAINS „sometext“). Wenn dieser Wert auf FALSE festgelegt ist, werden Suchvorgänge für die gesamte Zeichenfolge durchgeführt. Die meisten Zeichenfolgeneigenschaften sollten diesen Wert auf TRUE festgelegt haben. Nicht-Zeichenfolgeneigenschaften sollten diesen Wert auf FALSE festlegen. Der Standardwert lautet FALSE.
isColumn Optional. Gibt an, ob die Eigenschaft in der Windows Search-Datenbank als Spalte gespeichert werden soll. Das Speichern der Eigenschaft als Spalte ermöglicht das Abrufen, Sortieren, Gruppieren und Filtern (d. h. mithilfe eines beliebigen Prädikats mit Ausnahme von CONTAINS oder FREETEXT) für den gesamten Spaltenwert. Bei Eigenschaften, die dem Benutzer angezeigt werden, sollte dieser Wert auf TRUE festgelegt werden, es sei denn, es handelt sich um eine sehr große Texteigenschaft (z. B. den Textkörper eines Dokuments), die im invertierten Index durchsucht werden würde. Der Standardwert lautet FALSE.
isColumnSparse Optional. Gibt an, ob eine Eigenschaft keinen Platz benötigt, wenn der Wert NULL ist. Eine Nicht-Sparse-Eigenschaft benötigt Platz für jedes Element, auch wenn der Wert NULL ist. Wenn die Eigenschaft mehrwertige Werte aufweist, ist dieses Attribut immer TRUE. Dieses Attribut sollte nur FALSE sein, wenn für jedes Element ein Wert vorhanden ist. Der Standardwert ist TRUE.
columnIndexType Optional. Um die Abfrage zu optimieren, kann die Windows-Suchmaschine sekundäre Indizes für Eigenschaften erstellen, die isColumn=TRUE aufweisen. Dies erfordert mehr Verarbeitung und Speicherplatz während der Indizierung, verbessert aber die Leistung während der Abfrage. Wenn die Eigenschaft häufig von Benutzern sortiert, gruppiert oder gefiltert wird (d. h. mit =, !=, <, >, LIKE, MATCHES), sollte dieses Attribut auf „OnDisk“ festgelegt werden. Der Standardwert ist „Nicht indiziert“. Die folgenden Werte sind gültig:
  • NotIndexed: Es wird kein sekundärer Index erstellt.
  • OnDisk: Erstellen und Speichern eines sekundären Indizes auf dem Datenträger.
MaxSize Optional. Gibt die maximale Größe an, die für den in der Windows-Suchdatenbank gespeicherten Eigenschaftswert zulässig ist. Dieser Grenzwert gilt für die individuellen Elemente eines Vektors, nicht für den gesamten Vektor. Werte, die über diese Größe hinausgehen, werden abgeschnitten. Der Standardwert ist „128“ (Bytes).
Derzeit verwendet Windows Search die maxSize nicht, wenn es die Datenmenge berechnet, die es von einer Datei akzeptiert. Stattdessen ist die Beschränkung, die Windows Search verwendet, das Produkt der Größe der Datei und der MaxGrowFactor (Dateigröße N * MaxGrowFactor) aus der Registrierung bei HKEY_LOCAL_MACHINE->Software->Microsoft->Windows Search->Gathering Manager->MaxGrowFactor. Der standardmäßige MaxGrowFactor ist vier (4). Wenn ihr Dateityp tendenziell klein ist, aber größere Eigenschaften aufweist, akzeptiert Windows Search möglicherweise nicht alle Eigenschaften, die Sie ausgeben möchten. Sie können den MaxGrowFactor jedoch entsprechend Ihren Anforderungen erhöhen.

 

Hinweis

Beim Attribut columnIndexType muss der Vorteil schnellerer Abfragen gegen die höhere Indizierungszeit und die Platzkosten abgewogen werden, die durch die sekundären Indizes entstehen können. Diese Kosten werden jedoch nur für Elemente bezahlt, die einen Wert ungleich Null aufweisen, sodass für die meisten Eigenschaften dieses Attribut auf „OnDisk“ festgelegt werden kann.

 

Volltextunterstützung

Im Allgemeinen wird die Volltextsuche von Komponenten unterstützt, die als Filter bezeichnet werden. Bei textbasierten Dateitypen mit unkomplizierten Dateiformaten können Eigenschaftenhandler diese Funktionalität jedoch mit weniger Entwicklungsaufwand bereitstellen. Sie sollten den Abschnitt Volltextinhalte auf einen Vergleich der Filter- und Eigenschaftenhandlerfunktionen überprüfen, um zu entscheiden, was für Ihren Dateityp am besten geeignet ist. Besonders wichtig ist die Tatsache, dass Filter mehrere Sprachcodebezeichner (LCIDs) pro Datei verarbeiten können, während dies bei Eigenschaftenhandlern nicht möglich ist.

Hinweis

Da Eigenschaftenhandler den Inhalt nicht wie Filter in Stück zerlegen können, müssen große Dateien (auch wenn sie unkomplizierte Dateiformate sind) vollständig in den Speicher geladen werden.

 

Überlegungen zur Implementierung des Betriebssystems

Implementierungsinformationen für Windows 7

In Windows 7 und höher gibt es ein neues Verhalten beim Registrieren eines Eigenschaftenhandlers, IFilters oder einer neuen Erweiterung. Wenn ein neuer Eigenschaftenhandler und/oder IFilter installiert ist, werden Dateien mit den entsprechenden Erweiterungen automatisch neu indiziert.

In Windows 7 wird empfohlen, dass ein IFilter in Verbindung mit den entsprechenden Eigenschaftenhandlern installiert wird und dass der IFilter vor dem Eigenschaftenhandler registriert wird. Die Registrierung des Eigenschaftenhandlers initiiert die sofortige Neuindizierung bereits indizierter Dateien, ohne dass ein Neustart erforderlich ist, und nutzt alle zuvor registrierten IFilter zum Zweck der Inhaltsindizierung.

Wenn nur ein IFilter ohne einen entsprechenden Eigenschaftenhandler installiert ist, erfolgt die automatische Neuindizierung entweder nach einem Neustart des Indizierungsdiensts oder einem Neustart des Systems.

Beschreibungskennzeichnungen für Eigenschaften, die für Windows 7 spezifisch sind, finden Sie in den folgenden Referenzthemen:

Implementierungsinformationen für Windows Vista und frühere Versionen

Vor Windows Vista haben Filter Unterstützung für die Analyse und Aufzählung von Dateiinhalten und -eigenschaften bereitgestellt. Mit der Einführung des Eigenschaftensystems behandeln Eigenschaftenhandler Dateieigenschaften, während Filter Dateiinhalte behandeln. Für Windows Vista müssen Sie nur eine partielle Implementierung der IFilter-Schnittstelle in Abstimmung mit einem Eigenschaftenhandler entwickeln, wie in den Bewährten Methoden zum Erstellen von Filterhandlern in der Windows-Suche beschrieben.

Während das Eigenschaftensystem auch in der Windows Search-Installation für Windows XP enthalten ist, erfordern Drittanbieter- und ältere Anwendungen möglicherweise, dass Filter sowohl Inhalte als auch Eigenschaften behandeln. Wenn Sie daher auf der Windows XP-Plattform entwickeln, sollten Sie eine vollständige Filterimplementierung sowie einen Eigenschaftenhandler für den Dateityp oder die benutzerdefinierte Eigenschaft bereitstellen.

 

Beschreibungsdateien für die Schreibeigenschaft

Die Struktur der XML-Dateien der Eigenschaftsbeschreibung (.propdesc) wird im Thema propertyDescription beschrieben. Von besonderem Interesse für die Suche sind die Attribute des searchInfo-Elements. Nachdem Sie entschieden haben, welche Eigenschaften unterstützt werden sollen, müssen Sie Eigenschaftenbeschreibungsdateien für die einzelnen Eigenschaften erstellen und registrieren. Wenn Sie Ihre .propdesc-Dateien registrieren, werden sie in die Liste der Eigenschaftsbeschreibungen des Schemas aufgenommen und zu Spaltennamen im Eigenschaftsspeicher der Suchmaschine.

Sie können Ihre benutzerdefinierten Eigenschaftsbeschreibungen mithilfe der PSRegisterPropertySchema-Funktion registrieren, einer Wrapper-API, die das IPropertySystem des Schemas aufruft::RegisterPropertySchema. Diese Funktion informiert das Schema-Subsystem über das Hinzufügen von Eigenschaftsbeschreibungs-Schemadateien (.propdesc) mithilfe von Dateipfaden zu den .propdesc-Dateien auf dem lokalen Computer, in der Regel das Installationsverzeichnis der Anwendung unter „Anwendungsdateien“. In der Regel ruft ein Setup oder eine Anwendung (z. B. ihr Eigenschaftshandler-Installationsprogramm) diese Methode nach der Installation der .propdesc-Datei(n) auf.

 

Implementieren von Eigenschaftenhandlern

Das Entwickeln eines Eigenschaftenhandlers umfasst die Implementierung der folgenden Schnittstellen:

  • IInitialzeWithStream: Stellt streambasierte Initialisierung des Eigenschaftenhandlers bereit.
  • IPropertyStore: Aufzählen, Abrufen und Festlegen von Eigenschaftswerten.
  • IPropertyStoreCapabilities: Optional. Gibt an, ob Benutzer eine Eigenschaft über eine Benutzeroberfläche bearbeiten können.

IInitializeWithStream

Wie im Thema Eigenschaftensystem beschrieben, wird dringend empfohlen, Eigenschaftenhandler mit IInitializeWithStream zu implementieren, um streambasierte Initialisierungen auszuführen. Wenn Sie sich entschieden haben, IInitializeWithStream nicht zu implementieren, muss der Eigenschaftenhandler die Ausführung im Isolationsprozess deaktivieren, indem sie das DisableProcessIsolation-Flag auf den Registrierungsschlüssel des Eigenschaftenhandlers festlegen. Die Deaktivierung der Prozessisolation ist in der Regel nur für Legacy-Eigenschaftenhandler vorgesehen und sollte bei neuem Code tunlichst vermieden werden.

IPropertyStore

Zum Erstellen eines Eigenschaftenhandlers müssen Sie die IPropertyStore-Schnittstelle mit den folgenden Methoden implementieren.

Methode Beschreibung
Commit Speichert eine Eigenschaftsänderung in der Datei.
GetAt Ruft einen Eigenschaftsschlüssel aus dem Array von Eigenschaften eines Elements ab.
GetCount Ruft die Anzahl der an die Datei angefügten Eigenschaften ab.
GetValue Ruft Daten für eine bestimmte Eigenschaft ab.
SetValue Legt einen neuen Eigenschaftswert fest oder ersetzt oder entfernt einen vorhandenen Wert.

 

 

 

Wichtige Überlegungen zur Implementierung dieser Schnittstelle sind in der IPropertyStore-Dokumentation enthalten.

Hinweis

Wenn der Eigenschaftenhandler mehrere Werte für dieselbe Eigenschaft für ein bestimmtes Element ausgibt, wird nur der letzte ausgegebene Wert im Katalog gespeichert.

 

 

IPropertyStoreCapabilities

Eigenschaftenhandler können diese Schnittstelle optional implementieren, um die Möglichkeit eines Benutzers zum Bearbeiten bestimmter Eigenschaften zu deaktivieren. Diese Eigenschaften können normalerweise auf der Seite „Details“ und im Bereich bearbeitet werden, aber die Bearbeitung ist im Rahmen des implementierenden Eigenschaftenhandlers nicht zulässig. Die ordnungsgemäße Implementierung dieser Schnittstelle bietet eine bessere Benutzererfahrung als die Alternative – ein einfacher Laufzeitfehler aus der Shell.

 

Sicherstellen, dass Ihre Elemente indiziert werden

Nachdem Sie den Eigenschaftenhandler implementiert haben, möchten Sie sicherstellen, dass die Elemente, für die Ihr Handler registriert ist, indiziert werden. Sie können den Katalog-Manager verwenden, um eine erneute Indizierung zu initiieren, und Sie können auch den Durchforstungsbereichs-Manager verwenden, um Standardregeln einzurichten, welche die URLs angeben, die der Indexer durchforsten soll. Eine weitere Option besteht darin, das ReIndex-Codebeispiel in den Windows-Suchcodebeispielen zu befolgen.

Weitere Informationen finden Sie unter Verwenden des Katalog-Managers und Verwenden des Durchforstungsbereichs-Managers.

 

Installieren und Registrieren von Eigenschaftenhandlern

Nachdem der Eigenschaftenhandler implementiert wurde, muss er registriert und seine Dateinamenerweiterung mit dem Handler verknüpft werden. Das folgende Beispiel zeigt die Registrierungsschlüssel und -werte, die hierfür erforderlich sind.

HKEY_CLASSES_ROOT
   CLSID
      {<CLSID for property handler>}
         (Default) = <Property Handler Name>
         InProcServer32
            (Default) = <full path to property handler dll>
            ThreadingModel = <your threading model>
HKEY_LOCAL_MACHINE
   SOFTWARE
      Microsoft
         Windows
            CurrentVersion
               PropertySystem
                  PropertyHandlers
                     <.fileextention>
                        (Default) = {<CLSID for property handler>}

 

Testung und Problembehandlung von Eigenschaftenhandlern

Die folgende Liste enthält Ratschläge zu den Arten von Tests, die Sie ausführen sollten:

  • Testen Sie, wie Sie die Ausgabe jeder einzelnen Eigenschaft abrufen, die vom Dateityp unterstützt wird.
  • Verwenden Sie große Eigenschaftswerte, z. B. ein großes Metatag in HTML-Dokumenten.
  • Überprüfen Sie, ob der Eigenschaftenhandler keine Dateihandles durchläuft, indem Sie ihn nach der Ausgabe des Eigenschaftenhandlers bearbeiten oder ein Tool wie oh.exe vor und nach der Aufzählung der Dateieigenschaften verwenden.
  • Testen Sie alle Dateitypen, die dem Eigenschaftenhandler zugeordnet sind. Überprüfen Sie beispielsweise, ob der HTML-Filter mit .htm- und HTML-Dateitypen funktioniert.
  • Testen sie mit beschädigten Dateien. Der Eigenschaftenhandler sollte ordnungsgemäß fehlschlagen.
  • Wenn eine Anwendung Verschlüsselung unterstützt, testen Sie, ob der Eigenschaftenhandler keinen verschlüsselten Text ausgibt.
  • Wenn ihr Eigenschaftenhandler die Volltextsuche unterstützt:
    • Verwenden Sie mehrere Sonderzeichen in den Dateiinhalten und testen Sie deren Ausgabe.
    • Testen Sie die Behandlung sehr großer Dokumente, um sicherzustellen, dass der Eigenschaftenhandler erwartungsgemäß funktioniert.

Installations- und Setuptests

Schließlich müssen Sie Ihre Installations- und Deinstallationsroutinen testen.

  • Die Installation muss bei fehlgeschlagenen Installationen wiederhergestellt werden (z. B. beim Abbrechen und anschließenden Neustart des Setups).
  • Die Deinstallation muss alle Dateien löschen, die dem Eigenschaftenhandler zugeordnet sind.
  • Die Deinstallation darf keine Dateien löschen, die mit der Installation des Eigenschaftenhandlers verbunden sind.
  • Registrierungsschlüssel, die dem Eigenschaftenhandler zugeordnet sind, müssen beim Deinstallieren entfernt werden.
  • Die Deinstallation muss auch dann funktionieren, wenn Dateien aus dem Installationsverzeichnis gelöscht werden.

Problembehandlung bei Eigenschaftenhandlern

Im Folgenden finden Sie einige häufige Fehler beim Entwickeln von Eigenschaftenhandlern:

  • Installieren von .propdesc-Dateien oder DLLs unter einem Benutzerverzeichnis.
  • Registrieren von Komponenten mithilfe relativer Pfade.
  • Registrieren von Komponenten unter HKEY_CURRENT_USER anstelle von HKEY_LOCAL_MACHINE.
  • Vergessen Sie, „DisableProcessIsolation“ für Nicht-Stream-Handler festzulegen.
  • Platzieren der Testdatei an einem nicht indizierten Speicherort.

Wenn Sie Probleme beim Arbeiten mit dem Eigenschaftenhandler mit dem Indexer haben, finden Sie hier einige Tipps, die Ihnen bei der Problembehandlung helfen:

  • Vergewissern Sie sich, dass Ihre Eigenschaftsbeschreibungen (.propdesc-Dateien) als isColumn=„true“, isViewable=„true“ und isQueryable=„true“ entsprechend gekennzeichnet sind.
  • Stellen Sie sicher, dass sich Ihre .propdesc-Dateien an einem globalen Speicherort befinden.
  • Vergewissern Sie sich, dass Sie Ihre .propdesc-Dateien mit absoluten Pfaden registriert haben.
  • Stellen Sie sicher, dass im Ereignisprotokoll keine Fehler beim Registrieren Ihrer .propdesc-Datei aufgezeichnet wurden.
  • Stellen Sie sicher, dass sich Ihre DLLs an einem globalen Speicherort befinden (und nicht unter Ihrem Benutzerprofil).
  • Stellen Sie sicher, dass Ihre DLLs unter HKEY_LOCAL_MACHINE\Software\Classes registriert sind.
  • Vergewissern Sie sich, dass Ihre DLLs unter Verwendung vollständiger Pfade (oder REG_EXPAND_SZ-Zeichenfolgen, die unter Verwendung der dem Systemkonto bekannten Umgebungsvariablen zu absoluten Pfaden erweitert werden) registriert sind.
  • Stellen Sie sicher, dass der Eigenschaftenhandler unter Windows Explorer funktioniert.
  • Wir empfehlen zwar die Verwendung von IInitializeWithStream, aber wenn Sie IInitializeWithFile oder IInitializeWithItem verwenden müssen, stellen Sie sicher, dass Sie DisableProcessIsolation angeben.
  • Überprüfen Sie, ob Ihr Dateityp in der Systemsteuerung für Indizierungsoptionen als indizierter Dateityp aufgeführt ist.
  • Überprüfen Sie, ob sich die Testdatei an einem indizierten Speicherort befindet.
  • Überprüfen Sie, ob die Testdatei seit der Installation Ihres Eigenschaftenhandlers geändert wurde.

Wenn sich die Testdatei an einem indizierten Speicherort befindet und der Indexer diesen Speicherort bereits durchforstet hat, müssen Sie die Datei auf irgendeine Weise ändern, um eine erneute Indizierung der Datei auszulösen.

 

Verwenden von systemseitig bereitgestellten Eigenschaftenhandlern

Windows enthält eine Reihe von systemseitig bereitgestellten Eigenschaftenhandlern, die Sie verwenden können, wenn das Format Ihres Dateityps kompatibel ist. Wenn Sie eine neue Dateierweiterung definieren, die eines dieser Formate verwendet, können Sie die vom System bereitgestellten Handler verwenden, indem Sie den Handlerklassenbezeichner (CLSID) für die Dateierweiterung registrieren.

Sie können die in der folgenden Tabelle aufgeführte CLSID verwenden, um die vom System bereitgestellten Eigenschaftenhandler für den Dateiformattyp zu registrieren.

Format CLSID
OLE DocFile {8d80504a-0826-40c5-97e1-ebc68f953792}
Speichern von Spiel-XML {ECDD6472-2B9B-4b4b-AE36-F316DF3C8D60}
XPS/OPC-Handler {45670FA8-ED97-4F44-BC93-305082590BFB}
XML {c73f6f30-97a0-4ad1-a08f-540d4e9bc7b9}

 

Bevor Sie eine benutzerdefinierte Eigenschaft erstellen, sollten Sie sicherstellen, dass es keine systemdefinierte Eigenschaft gibt, die Sie stattdessen verwenden können. Sie können die vom System definierten Eigenschaften aufzählen, indem Sie PSEnumeratePropertyDescriptions aufrufen oder das Befehlszeilentool prop.exe verwenden.

Das Systemschema definiert, wie diese Eigenschaften mit dem Indexer interagieren, und Sie können dies nicht ändern. Darüber hinaus muss die Anwendung, die Sie zum Erstellen, Bearbeiten und Speichern Ihres Dateityps verwenden, auch bestimmtem Verhalten entsprechen. Wenn die Anwendung beispielsweise das sichere Speichern implementiert (wobei eine temporäre Datei während der Bearbeitung erstellt wird und dann ReplaceFile() zum Austauschen der neuen Version für die alte verwendet wird), muss sie alle Eigenschaften aus der ursprünglichen Datei in die neue Datei übertragen. Andernfalls verliert die Datei die von Benutzern oder anderen Anwendungen hinzugefügten Eigenschaften.

 

Beispiel

Die folgende Abbildung zeigt die Registrierung des vom System bereitgestellten OLE DocFile-Handlers für einen Dateityp mit der Erweiterung .OLEDocFile.

HKEY_CLASSES_ROOT
   SystemFileAssociations
      .OLEDocFile
         shellex
            {BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
               (Default) = {9DBD2C50-62AD-11d0-B806-00C04FD706EC}

Im Folgenden wird die Registrierung der Eigenschaftslisteninformationen gezeigt, so dass die Eigenschaften von .OLEDocFile-Dateien auf der Registerkarte „Details“ und im Fensterbereich angezeigt werden.

HKEY_CLASSES_ROOT
   SystemFileAssociations
      .OLEDocFile
         ExtendedTileInfo = prop:System.ItemType;System.Size;System.DateModified;System.Author;System.OfflineAvailability
         FullDetails = prop:System.PropGroup.Description;System.Title;System.Subject;
System.Keywords;System.Category;System.Comment;System.PropGroup.Origin;
System.Author;System.Document.LastAuthor;System.Document.RevisionNumber;
System.Document.Version;System.ApplicationName;System.Company;System.Document.Manager;
System.Document.DateCreated;System.Document.DateSaved;System.Document.DatePrinted;
System.Document.TotalEditingTime;System.PropGroup.Content;System.ContentStatus;
System.ContentType;System.Document.PageCount;System.Document.WordCount;
System.Document.CharacterCount;System.Document.LineCount;
System.Document.ParagraphCount;System.Document.Template;System.Document.Scale;
System.Document.LinksDirty;System.Language;System.PropGroup.FileSystem;
System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;
System.DateCreated;System.DateModified;System.Size;System.FileAttributes;
System.OfflineAvailability;System.OfflineStatus;System.SharedWith;
System.FileOwner;System.ComputerName
         InfoTip = prop:System.ItemType;System.Size;System.DateModified;System.Document.PageCoun
         PerceivedType = document
         PreviewDetails = prop:*System.DateModified;System.Author;System.Keywords;
*System.Size;System.Title;System.Comment;System.Category;
*System.Document.PageCount;System.ContentStatus;System.ContentType;
*System.OfflineAvailability;*System.OfflineStatus;System.Subject;
*System.DateCreated;*System.SharedWith

 

Referenz

Eigenschaftenzuordnungen

Konzept

Bewährte Methoden zum Erstellen von Filterhandlern in der Windows-Suche

Der Indizierungsprozess

Entwickeln von Protokollhandlern

Systemdefinierte Eigenschaften für benutzerdefinierte Dateiformate

Weitere Ressourcen

Eigenschaftensystem

Systemeigenschaften

Windows Search-Codebeispiele