Développement des gestionnaires de propriétés pour Windows Search

Microsoft Windows Search utilise des gestionnaires de propriétés pour extraire les valeurs des propriétés des éléments et utilise le schéma du système de propriétés pour déterminer comment une propriété spécifique doit être indexée. Pour lire et indexer les valeurs des propriétés, les gestionnaires de propriétés sont invoqués en dehors du processus par Windows Search afin d’améliorer la sécurité et la robustesse. En revanche, les gestionnaires de propriétés sont invoqués en cours de processus par l’explorateur Windows pour lire et écrire les valeurs des propriétés.

Cette rubrique complète la rubrique Système de propriétés avec des informations spécifiques à Windows Search et contient les sections suivantes :

 

Décisions de conception pour les gestionnaires de propriétés

L’implémentation de gestionnaires de propriétés implique les étapes suivantes :

  1. Prendre des décisions de conception concernant les propriétés que vous souhaitez prendre en charge.
  2. Création d’un fichier description de propriété (.propdesc) pour les propriétés qui ne se trouvent pas déjà dans le système de propriétés.
  3. Implémentation et test du gestionnaire de propriétés.
  4. Installation et inscription du gestionnaire de propriétés et des fichiers de description des propriétés.
  5. Test de l’installation et de l’inscription du gestionnaire de propriétés.

Avant de commencer, vous devez prendre en compte les questions de conception suivantes :

  • Quelles propriétés sont/devraient être prises en charge par le format de fichier ?
  • Ces propriétés existent-elles déjà dans le schéma du système ?
  • Puis-je utiliser un gestionnaire de propriété existant fourni par le système ?
  • Quelles sont les propriétés qui peuvent être affichées aux utilisateurs finaux ?
  • Quelles propriétés peuvent être modifiées par les utilisateurs ?
  • La prise en charge de la recherche en texte intégral doit-elle provenir d’un gestionnaire de propriétés ou d’un filtre ?
  • Dois-je prendre en charge les applications héritées ? Dans l’affirmative, que dois-je implémenter ?

Remarque

Avant de continuer, consultez Utilisation des gestionnaires de propriétés fournis par le système pour savoir si vous pouvez utiliser un gestionnaire de propriétés fourni par le système, ce qui vous permettra de gagner du temps et d’économiser des ressources de développement.

 

Après avoir pris ces décisions, vous pouvez rédiger des descriptions formelles de vos propriétés personnalisées afin que le moteur de recherche de Windows puisse commencer à indexer vos fichiers et vos propriétés. CCes descriptions formelles sont des fichiers XML, décrits dans le Schéma de description de propriété.

Décisions relatives aux propriétés

Pour déterminer les propriétés à prendre en charge, vous devez identifier les besoins d’indexation et de recherche de vos utilisateurs. Par exemple, vous pouvez être en mesure d’identifier une centaine de propriétés potentiellement utiles pour votre type de fichier, mais les utilisateurs ne seront intéressés que par quelques-unes d’entre elles. Par ailleurs, vous souhaitez peut-être afficher un groupe différent, plus ou moins important, de ces propriétés aux utilisateurs dans l’explorateur Windows et leur permettre de modifier uniquement un sous-ensemble de ces propriétés affichées.

Votre type de fichier peut prendre en charge toutes les propriétés personnalisées que vous définissez, ainsi qu’un ensemble de propriétés définies par le système. Avant de créer une propriété personnalisée, consultez les Propriétés système pour vérifier si la propriété que vous souhaitez prendre en charge est déjà définie par une propriété du système. Veillez à toujours prendre en charge les propriétés les plus importantes définies par le système.

Nous vous recommandons d’utiliser une matrice pour vous aider à concevoir vos propriétés :

Nom de la propriété Est-elle indexable ? Peut-elle être affichée ? Est-elle modifiable ?
propriété1 O Y N
popriété... O Y N
propriétén N N N

 

Pour chacune de ces propriétés, vous devez déterminer les attributs qui doivent lui être associés et les décrire formellement dans des fichiers XML de description des propriétés (.propdesc). Les attributs comprennent le type de données de la propriété, l’étiquette, la chaîne d’aide, etc. Pour les propriétés indexables, vous devez prêter une attention particulière aux attributs de propriété suivants qui se trouvent dans l’élément XML searchInfo du fichier Property Description.

Attribut Description
inInvertedIndex facultatif. Indique si une valeur de propriété de type chaîne doit être décomposée en mots et si chaque mot doit être stocké dans l’index inversé. L’index inversé permet de rechercher efficacement des mots et des expressions sur la valeur de propriété à l’aide de CONTAINS ou FREETEXT (par exemple, SELECT ... WHERE CONTAINS « sometext »). Si la valeur est FALSE, les recherches sont effectuées sur l’ensemble de la chaîne. La plupart des propriétés de type chaîne doivent avoir cette valeur définie sur TRUE ; les propriétés de type non chaîne doivent avoir cette valeur définie sur FALSE. La valeur par défaut est FALSE.
isColumn facultatif. Indique si la propriété doit être stockée dans la base de données Windows Search sous forme de colonne. Le stockage de la propriété en tant que colonne permet de récupérer, de trier, de regrouper et de filtrer (autrement dit, à l’aide de n’importe quel prédicat, à l’exception de CONTAINS ou FREETEXT) sur l’ensemble de la valeur de colonne. Les propriétés affichées aux utilisateurs doivent avoir la valeur TRUE, à moins qu’il ne s’agisse d’une propriété textuelle très volumineuse (comme le corps d’un document) qui ferait l’objet d’une recherche dans l’index inversé. La valeur par défaut est FALSE.
isColumnSparse facultatif. Indique si une propriété ne prend pas d’espace si la valeur est NULL. Une propriété non éparse occupe de l’espace pour chaque élément, même si la valeur est NULL. Si la propriété est à valeurs multiples, cet attribut a toujours la valeur TRUE. Cet attribut doit être FALSE uniquement si une valeur est présente pour chaque élément. La valeur par défaut est TRUE.
columnIndexType facultatif. Pour optimiser les recherches, le moteur de recherche Windows peut créer des index secondaires pour les propriétés pour lesquelles isColumn=TRUE. Cela nécessite davantage de traitement et d’espace disque lors de l’indexation, mais améliore les performances lors de l’interrogation. Si la propriété a tendance à être triée, groupée ou filtrée (c’est-à-dire en utilisant =, !=, <, >, LIKE, MATCHES) fréquemment par les utilisateurs, cet attribut doit être défini sur « OnDisk ». La valeur par défaut est « NotIndexed ». Les valeurs suivantes sont valides :
  • NotIndexed : aucun index secondaire n’est créé.
  • OnDisk : Créer et stocker un index secondaire sur le disque.
maxSize facultatif. Indique la taille maximale autorisée pour la valeur de la propriété stockée dans la base de données de la recherche Windows. Cette limite s’applique aux éléments individuels d’un vecteur, et non au vecteur dans son ensemble. Les valeurs supérieures à cette taille sont tronquées. La valeur par défaut est « 128 » (octets).
Actuellement, Windows Search n’utilise pas la taille maximale lorsque la quantité de données acceptées d’un fichier est calculée. Au lieu de cela, la limite utilisée par Windows Search est le produit de la taille du fichier et du MaxGrowFactor (taille du fichier N * MaxGrowFactor) lu à partir du registre dans HKEY_LOCAL_MACHINE->Software->Microsoft->Windows Search->Gathering Manager->MaxGrowFactor. La valeur par défaut de MaxGrowFactor est quatre (4). Par conséquent, si votre type de fichier a tendance à être de petite taille mais à avoir des propriétés plus importantes, Windows Search peut ne pas accepter toutes les données de propriété que vous souhaitez émettre. Toutefois, vous pouvez augmenter la valeur du facteur MaxGrowFactor en fonction de vos besoins.

 

Remarque

Pour l’attribut columnIndexType, l’avantage de requêtes plus rapides doit être mis en balance avec le temps d’indexation plus long et les coûts d’espace que les index secondaires peuvent entraîner. Cependant, ce coût est uniquement payé pour les éléments qui ont une valeur non null, de sorte que pour la plupart des propriétés, cet attribut peut être défini sur « OnDisk ».

 

Prise en charge du texte intégral

En règle générale, la recherche en texte intégral est prise en charge par les composants appelés filtres. Toutefois, pour les types de fichiers textuels dont le format est peu complexe, les gestionnaires de propriétés peuvent être en mesure de fournir cette fonctionnalité avec un effort de développement moindre. Nous vous conseillons de consulter la sectionContenu de texte intégral pour comparer les fonctionnalités des filtres et des gestionnaires de propriétés afin de vous aider à déterminer ce qui convient le mieux à votre type de fichier. Il est particulièrement important de noter que les filtres peuvent gérer plusieurs identificateurs de paramètres régionux (LCID) par fichier, ce qui n’est pas le cas des gestionnaires de propriétés.

Remarque

Étant donné que les gestionnaires de propriétés ne peuvent pas fragmenter le contenu comme le font les filtres, les fichiers volumineux (même s’il s’agit de formats de fichiers peu complexes) doivent être entièrement chargés en mémoire.

 

Considérations relatives à l’implémentation du système d’exploitation

Informations d’implémentation pour Windows 7

Dans Windows 7 et les versions ultérieures, l’inscription d’un gestionnaire de propriétés, d’un filtre IFilter ou d’une nouvelle extension s’accompagne d’un nouveau comportement. Lorsqu’un nouveau gestionnaire de propriétés et/ou un nouveau filtre IFilter est installé, les fichiers avec les extensions correspondantes sont automatiquement réindexés.

Sous Windows 7, il est recommandé d’installer un filtre IFilter conjointement avec les gestionnaires de propriétés correspondants, et d’inscrire le filtre IFilter avant le gestionnaire de propriétés. L’enregistrement du gestionnaire de propriétés déclenche la réindexation immédiate des fichiers précédemment indexés, sans nécessiter de redémarrage préalable, et tire parti de tous les filtres IFilter(s) précédemment inscrits aux fins de l’indexation du contenu.

Si seul un filtre IFilter est installé, sans gestionnaire de propriétés correspondant, la réindexation automatique se produit soit après un redémarrage du service d’indexation, soit après un redémarrage du système.

Pour les indicateurs de description des propriétés spécifiques à Windows 7, consultez les rubriques de référence suivantes :

Informations sur l’implémentation pour Windows Vista et les versions antérieures

Avant Windows Vista, les filtres permettaient d’analyser et d’énumérer le contenu et les propriétés des fichiers. Avec l’introduction du système de propriétés, les gestionnaires de propriétés gèrent les propriétés des fichiers tandis que les filtres gèrent le contenu des fichiers. Pour Windows Vista, vous devez développer uniquement une implémentation partielle de l’interface IFilter en coordination avec un gestionnaire de propriétés, comme décrit dans Meilleures pratiques pour la création de gestionnaires de filtres dans Windows Search.

Bien que le système de propriétés soit également inclus dans l’installation de Windows Search pour Windows XP, des applications tierces et anciennes peuvent exiger que les filtres gèrent à la fois le contenu et les propriétés. Par conséquent, si vous développez sur la plateforme Windows XP, vous devez fournir une implémentation complète du filtre ainsi qu’un gestionnaire de propriété pour votre type de fichier ou votre propriété personnalisée.

 

Rédaction des fichiers de description des propriétés

La structure des fichiers XML de description des propriétés (.propdesc) est décrite dans la rubrique propertyDescription. Les attributs de l’élément searchInfo sont particulièrement intéressants pour la recherche. Une fois que vous avez décidé des propriétés à prendre en charge, vous devez créer et inscrire des fichiers de description des propriétés pour chacune d’entre elles. Lorsque vous inscrivez vos fichiers .propdesc, ils sont inclus dans la liste des descriptions de propriétés du schéma et deviennent des noms de colonnes dans le magasin de propriétés du moteur de recherche.

Vous pouvez enregistrer vos descriptions de propriétés personnalisées à l’aide de la fonctionPSRegisterPropertySchema, une API enveloppante qui appelle la fonction IPropertySystem::RegisterPropertySchema du sous-système de schéma. Cette fonction informe le sous-système de schéma de l’ajout de fichiers de schéma de description de propriété (.propdesc), en utilisant le ou les chemins d’accès au(x) fichier(s) .propdesc sur la machine locale, généralement le répertoire d’installation de l’application sous « Program Files ». En règle générale, un programme d’installation ou une application (par exemple, le programme d’installation de votre gestionnaire de propriétés) appelle cette méthode après avoir installé le ou les fichiers .propdesc.

 

Implémentation de gestionnaires de propriétés

Le développement d’un gestionnaire de propriété implique l’implémentation des interfaces suivantes :

  • IInitialzeWithStream : Permet d’initialiser votre gestionnaire de propriétés à l’aide d’un flux.
  • IPropertyStore : Énumère, obtient et définit des valeurs de propriété.
  • IPropertyStoreCapabilities : Facultatif. Indique si les utilisateurs peuvent modifier une propriété à partir d’une interface utilisateur.

IInitializeWithStream

Comme décrit dans la rubrique Système de propriétés, nous recommandons fortement d’implémenter les gestionnaires de propriété avec IInitializeWithStream pour effectuer une initialisation basée sur le flux. Si vous avez choisi de ne pas implémenter IInitializeWithStream, le gestionnaire de propriétés doit choisir de ne pas s’exécuter dans le processus d’isolation en définissant l’indicateur DisableProcessIsolation sur la clé de registre du gestionnaire de propriétés. La désactivation de l’isolation des processus est généralement prévue uniquement pour les anciens gestionnaires de propriétés et doit être rigoureusement évitée pour tout nouveau code.

IPropertyStore

Pour créer un gestionnaire de propriétés, vous devez implémenter l’interface IPropertyStore avec les méthodes suivantes.

Méthode Description
Validation Enregistre une modification de propriété dans le fichier.
GetAt Récupère une clé de propriété dans le tableau de propriétés d’un élément.
GetCount Obtient le nombre de propriétés jointes au fichier.
GetValue Récupère les données d’une propriété spécifique.
SetValue Définit une nouvelle valeur de propriété ou remplace ou supprime une valeur existante.

 

 

 

Les considérations importantes relatives à l’implémentation de cette interface sont incluses dans la documentation IPropertyStore.

Remarque

Si votre gestionnaire de propriété émet plusieurs valeurs pour la même propriété pour un élément donné, seule la dernière valeur émise est stockée dans le catalogue.

 

 

IPropertyStoreCapabilities

Les gestionnaires de propriétés peuvent éventuellement implémenter cette interface pour désactiver la capacité d’un utilisateur à modifier des propriétés spécifiques. Ces propriétés sont normalement modifiables dans la page et le volet Détails, mais leur modification n’est pas autorisée dans le cadre du gestionnaire de propriétés d’implémentation. L’implémentation adéquate de cette interface offre une meilleure expérience à l’utilisateur que l’alternative, à savoir une simple erreur d’exécution de la part de l’interpréteur de commandes.

 

S’assurer que vos éléments sont indexés

Maintenant que vous avez implémenté votre gestionnaire de propriétés, vous devez vous assurer que les éléments pour lesquels votre gestionnaire est inscrit sont indexés. Vous pouvez utiliser le Gestionnaire de catalogue pour lancer la réindexation, et vous pouvez également utiliser le Gestionnaire d’étendue d’analyse pour définir des règles par défaut indiquant les URL que vous souhaitez que l’indexeur explore. Une autre option consiste à suivre l’exemple de code ReIndex dans les Exemples de code Windows Search.

Pour plus d’informations, reportez-vous aux sections Utilisation du gestionnaire de catalogue et Utilisation du gestionnaire de l’étendue d’analyse.

 

Installation et inscription des gestionnaires de propriété

Une fois le gestionnaire de propriétés implémenté, il doit être inscrit et son extension de nom de fichier doit être associée au gestionnaire. L’exemple suivant présente les clés et les valeurs du registre nécessaires à cette opération.

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>}

 

Test et dépannage des gestionnaires de propriétés

La liste suivante fournit des conseils sur les types de tests à effectuer :

  • Testez l’obtention de la sortie de chaque propriété unique prise en charge par le type de fichier.
  • Utilisez des valeurs de propriété volumineuses, par exemple, utilisez un métatag volumineux dans des documents HTML.
  • Vérifiez que le gestionnaire de propriétés ne laisse pas échapper de descripteurs de fichiers en le modifiant après avoir obtenu la sortie du gestionnaire de propriétés, ou en utilisant un outil comme oh.exe avant et après l’énumération des propriétés de fichiers.
  • Testez tous les types de fichiers associés au gestionnaire de propriétés. Par exemple, vérifiez que le filtre HTML fonctionne avec les types de fichiers .htm et .html.
  • Testez avec des fichiers endommagés. Le gestionnaire de propriété devrait échouer correctement.
  • Si une application prend en charge le chiffrement, testez que le gestionnaire de propriétés ne génère pas de texte chiffré.
  • Si votre gestionnaire de propriétés prend en charge la recherche en texte intégral :
    • Utilisez plusieurs caractères Unicode spéciaux dans le contenu du fichier et testez leur sortie.
    • Testez la gestion des documents très volumineux pour vous assurer que le gestionnaire de propriétés fonctionne comme prévu.

Tests d’installation et de configuration

Enfin, vous devez tester vos routines d’installation et de désinstallation.

  • L’installation doit être récupérée à partir d’installations ayant échoué (par exemple, à partir de l’annulation, puis du redémarrage de l’installation).
  • La désinstallation doit supprimer tous les fichiers associés au gestionnaire de propriétés.
  • La désinstallation ne doit pas supprimer les fichiers autres que ceux associés à l’installation du gestionnaire de propriétés.
  • Les clés de Registre associées au gestionnaire de propriétés doivent être supprimées lors de la désinstallation.
  • La désinstallation doit fonctionner même si les fichiers sont supprimés du répertoire d’installation.

Dépannage des gestionnaires de propriétés

Voici quelques erreurs courantes commises lors du développement des gestionnaires de propriété :

  • Installation de fichiers .propdesc ou de DLL dans un répertoire utilisateur.
  • Inscription de composants à l’aide de chemins relatifs.
  • Inscription de composants sous HKEY_CURRENT_USER au lieu de HKEY_LOCAL_MACHINE.
  • Omission d’activer DisableProcessIsolation pour les gestionnaires qui ne sont pas des flux.
  • Placement du fichier de test dans un emplacement non indexé.

Si vous avez des difficultés à faire fonctionner votre gestionnaire de propriétés avec l’indexeur, voici quelques conseils pour vous aider à résoudre le problème :

  • Vérifiez que vos descriptions de propriétés (fichiers .propdesc) sont marquées isColumn=« true », isViewable=« true », et isQueryable=«true » selon le cas.
  • Vérifiez que vos fichiers .propdesc se trouvent dans un emplacement global.
  • Vérifiez que vous avez inscrit vos fichiers .propdesc en utilisant des chemins d’accès absolus.
  • Vérifiez que le journal des événements n’a pas enregistré d’échec lors de l’inscription de votre fichier .propdesc.
  • Vérifiez que vos DLL se trouvent dans un emplacement global (et non sous votre profil d’utilisateur).
  • Vérifiez que vos DLL sont inscrites sous HKEY_LOCAL_MACHINE\Software\Classes.
  • Vérifiez que vos DLL sont inscrites à l’aide de chemins complets (ou des chaînes REG_EXPAND_SZ qui s’étendent vers des chemins absolus à l’aide de variables d’environnement connues par le compte système).
  • Vérifiez que votre gestionnaire de propriétés fonctionne sous l’Explorateur Windows.
  • Bien que nous recommandions d’utiliser IInitializeWithStream, si vous devez utiliser IInitializeWithFile ou IInitializeWithItem, assurez-vous de bien spécifier DisableProcessIsolation.
  • Vérifiez que les options d’indexation Panneau de configuration répertorient votre type de fichier en tant que type de fichier indexé.
  • Vérifiez que le fichier de test se trouve dans un emplacement indexé.
  • Vérifiez que le fichier de test a été modifié depuis que vous avez installé votre gestionnaire de propriétés.

Si votre fichier de test se trouve dans un emplacement indexé et que l’indexeur a déjà analysé cet emplacement, vous devez modifier le fichier d’une manière ou d’une autre afin de déclencher une réindexation du fichier.

 

Utilisation des gestionnaires de propriétés fournis par le système

Windows inclut un certain nombre de gestionnaires de propriétés fournis par le système que vous pouvez utiliser si le format de votre type de fichier est compatible. Si vous définissez une nouvelle extension de fichier qui utilise l’un de ces formats, vous pouvez utiliser les gestionnaires fournis par le système en inscrivant l’identificateur de classe de gestionnaire (CLSID) pour votre extension de fichier.

Vous pouvez utiliser le CLSID répertorié dans le tableau suivant pour inscrire les gestionnaires de propriétés fournis par le système pour votre type de format de fichier.

Mettre en forme CLSID
OLE DocFile {8d80504a-0826-40c5-97e1-ebc68f953792}
Enregistrer le code XML du jeu {ECDD6472-2B9B-4b4b-AE36-F316DF3C8D60}
Gestionnaire XPS/OPC {45670FA8-ED97-4F44-BC93-305082590BFB}
XML {c73f6f30-97a0-4ad1-a08f-540d4e9bc7b9}

 

Avant de créer une propriété personnalisée, vous devez vous assurer qu’il n’existe pas une propriété définie par le système que vous pouvez utiliser à la place. Vous pouvez énumérer les propriétés définies par le système en appelant PSEnumeratePropertyDescriptions ou à l’aide de l’outil en ligne de commande prop.exe.

Le schéma du système définit la manière dont ces propriétés interagissent avec l’indexeur, et vous ne pouvez pas le modifier. Par ailleurs, l’application que vous utilisez pour créer, modifier et enregistrer votre type de fichier doit également se conformer à certains comportements. Par exemple, si l’application implémente l’enregistrement sécurisé (un fichier temporaire est créé pendant l’édition, puis ReplaceFile() est utilisé pour échanger la nouvelle version contre l’ancienne), elle doit transférer toutes les propriétés du fichier d’origine vers le nouveau fichier. Dans le cas contraire, le fichier perd les propriétés ajoutées par les utilisateurs ou d’autres applications.

 

Exemple

L’exemple suivant présente l’enregistrement du gestionnaire OLE DocFile fourni par le système pour un type de fichier portant l’extension .OLEDocFile.

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

L’illustration suivante présente l’enregistrement des informations de la liste des propriétés afin que les propriétés des fichiers .OLEDocFile soient affichées dans l’onglet et le volet Détails.

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

 

Référence

Mappages de propriété

Conceptuel

Meilleures pratiques pour la création de gestionnaires de filtres dans Windows Search

Processus d’indexation

Développer des gestionnaires de protocoles

Propriétés définies par le système pour les formats de fichiers personnalisés

Autres ressources

Système de propriétés

Propriétés système

Exemples de code Windows Search