Windows Search en tant que plateforme de développement

pour indexer le contenu et les propriétés de nouveaux formats de fichier et de banques de données, vous devez étendre la recherche Microsoft Windows à l’aide de compléments.

pour qu’un développeur tiers de nouveaux formats de fichier et de magasins de données puisse faire apparaître ces formats et magasins dans les résultats de la requête dans Windows Explorer, le développeur doit effectuer les trois opérations suivantes :

  • Implémentez une source de données Shell pour étendre l’espace de noms Shell.
  • Exposer des éléments dans un magasin de données (s’ils ajoutent un nouveau magasin de données, car il doit être indexé).
  • développez un gestionnaire de protocole afin que Windows recherche puisse accéder aux données pour l’indexation.

Cette rubrique est organisée comme suit :

Mise en route

avant de commencer à créer une application de recherche Windows, n’oubliez pas que la meilleure façon de procéder consiste à utiliser une source de données Shell. Une source de données Shell étend l’espace de noms Shell et expose les éléments dans un magasin de données. les éléments dans le magasin de données peuvent ensuite être indexés par le système de recherche Windows à l’aide d’un gestionnaire de protocole. cette approche indirecte permettant d’accéder à Windows recherche en implémentant une source de données shell est préférable, car elle permet d’accéder aux fonctionnalités complètes de l’interpréteur de commandes. Cela garantit une expérience utilisateur raisonnable.

si vous souhaitez que les résultats de la requête s’affichent dans l’explorateur de Windows, vous devez implémenter une source de données Shell avant de pouvoir créer un gestionnaire de protocole pour étendre l’index. Toutefois, si toutes les requêtes sont par programmation (par exemple OLE DB) et interprétées par le code de l’application plutôt que par le shell, un espace de noms Shell est toujours préféré, mais pas obligatoire.

un gestionnaire de protocole est requis pour Windows pour obtenir des informations sur le contenu d’un fichier, comme des éléments dans des bases de données ou des types de fichiers personnalisés. si Windows recherche peut indexer le nom et les propriétés du fichier, Windows n’a aucune connaissance du contenu du fichier. par conséquent, ces éléments ne peuvent pas être indexés ou exposés dans le Shell Windows. En implémentant un gestionnaire de protocole personnalisé, vous pouvez exposer ces éléments. Pour obtenir la liste des gestionnaires identifiés par le scénario de développement que vous essayez d’atteindre, consultez vue d’ensemble des gestionnaires.

Vue d’ensemble des scénarios de développement de recherche

les scénarios de développement les plus courants dans Windows Search sont les suivants :

Ajout d’un nouveau magasin de données

vous avez besoin d’un magasin de données Shell pour Windows la recherche uniquement si vous ajoutez un nouveau magasin de données à indexer. Un magasin de données est un référentiel de données qui peut être exposé au modèle de programmation de l’interpréteur de commandes en tant que conteneur à l’aide d’une source de données Shell. les éléments d’un magasin de données peuvent ensuite être indexés par le système de recherche Windows à l’aide d’un gestionnaire de protocole. Le gestionnaire de protocole implémente le protocole d’accès à une source de contenu dans son format natif. Les interfaces ISearchProtocol et ISearchProtocol2 permettent d’implémenter un gestionnaire de protocole personnalisé pour développer les sources de données qui peuvent être indexées. Pour plus d’informations sur la création d’une source de données Shell, consultez implémentation des interfaces d’objet de dossier de base.

Ajout d’un nouveau format de fichier

Si vous ajoutez un nouveau format de fichier personnalisé, vous devez développer un gestionnaire de filtres ou un gestionnaire de propriétés, mais pas les deux. Un filtre est une implémentation de l’interface IFilter . Il ouvre les fichiers d’un type de fichier particulier et filtre les propriétés et les blocs de texte de l’indexeur. Les filtres sont associés à des types de fichiers, tels qu’ils sont signalés par des extensions de nom de fichier, des types MIME ou des identificateurs de classe (CLSID). Bien qu’un filtre puisse gérer plusieurs types de fichiers, chaque type de fichier fonctionne avec un seul filtre.

un gestionnaire de propriétés traduit les données stockées dans un fichier dans un schéma structuré qui est reconnu par et est accessible par Windows Explorer, Windows Search et d’autres applications. Ces systèmes peuvent ensuite interagir avec le gestionnaire de propriétés pour écrire et lire des propriétés vers et à partir d’un fichier. Les données traduites comprennent la vue détails, info-bulles, le volet Détails, les pages de propriétés, etc. Chaque gestionnaire de propriétés est associé à un type de fichier particulier, identifié par l’extension de nom de fichier. Vous avez besoin d’un gestionnaire de propriétés pour effectuer les opérations suivantes :

  • Affichez les propriétés des éléments non indexés dans l’interface utilisateur.
  • Prise en charge de l’écriture des propriétés.

utilisation des résultats de la recherche Windows

les sections suivantes décrivent plusieurs manières de consommer Windows les résultats de la recherche :

Interrogation des données

les développeurs écrivant des applications en plus de la recherche de Windows et du système de propriétés Windows peuvent accéder aux fichiers et aux éléments, quel que soit le type d’application ou de fichier. Il existe deux façons pour les applications d’accéder aux données de l’indexeur :

  • les Applications communiquent directement avec OLE DB en envoyant des requêtes de langage SQL de recherche Windows (SQL) au fournisseur Windows de recherche pour récupérer les résultats. les requêtes peuvent être construites manuellement ou à l’aide de l’interface ISearchQueryHelper pour générer le SQL à partir de mots clés de recherche et de la syntaxe de requête avancée (AQS).
  • Les applications fonctionnent par le biais de la couche de Shell. L’avantage de la couche de Shell est qu’elle prend également en charge d’autres sources telles que grep. Toutefois, l’inconvénient est que toutes les fonctionnalités de l’indexeur ne sont pas disponibles.

une autre option consiste à utiliser les protocoles search-ms://et search://, qui exécutent des recherches basées sur les URL rendues via Windows Explorer. Cette option active le développement le plus clair, mais ne retourne pas les résultats ou les sélections de l’utilisateur de la vue des résultats à l’application appelante. De même, comme d’autres protocoles, les applications de recherche tierces peuvent reprendre les protocoles search-ms://et search://si les applications sont conformes à l’ensemble de fonctionnalités requis. pour plus d’informations sur l’interrogation, consultez processus d’interrogation dans Windows rechercher et interroger l’Index par programmation.

dans Windows 7 et versions ultérieures, la recherche fédérée offre un nouveau moteur de recherche qui interroge les magasins de données distants via des serveurs web, via le protocole OpenSearch , et énumère les résultats sous forme de flux RSS ou atom XML. Les connecteurs de recherche sont des jonctions d’espaces de noms qui simulent le comportement des dossiers à l’aide d’un moteur de recherche. pour plus d’informations sur la fédération des recherches aux magasins de données distants dans Windows 7, consultez recherche fédérée dans Windows.

Indexation des fichiers et des éléments

le contenu indexé est basé sur les types de fichiers et de données pris en charge par le biais des compléments inclus avec Windows recherche et les règles d’inclusion et d’exclusion par défaut pour les dossiers dans le système de fichiers. par exemple, les filtres inclus dans la recherche de fenêtre prennent en charge plus de 200 types de données courants, y compris les documents Microsoft Office, Microsoft Outlook la messagerie électronique (conjointement avec le gestionnaire de protocole MAPI), les fichiers en texte brut, le code HTML et bien plus encore. Pour obtenir la liste complète des types de fichiers pris en charge en mode natif, consultez ce qui est inclus dans l’index.

l’index peut être étendu à l’aide de gestionnaires de propriétés et de filtres pour exposer le contenu et les propriétés de nouveaux formats de fichier à l’index et à l’explorateur de Windows. Les filtres sont une implémentation de l’interface IFilter . Il existe deux types de filtres : un qui interagit avec des éléments individuels tels que des fichiers et un autre qui interagit avec des conteneurs tels que des dossiers. Les filtres sont polyvalents en ce sens qu’ils prennent en charge la segmentation des données, du texte, des propriétés et des langues multiples.

En revanche, les gestionnaires de propriétés ont un objectif plus spécifique : pour exposer les propriétés de types de fichiers spécifiques qui sont identifiés par les extensions de nom de fichier. Un gestionnaire de propriétés pour un type de fichier peut activer les propriétés obtenir et définir, et peut énumérer les propriétés associées à ce type de fichier. Contrairement aux filtres, les gestionnaires de propriétés ne prennent pas en charge le contenu de données ou de texte, et les gestionnaires de propriétés n’ont aucun moyen d’indiquer le langage dans lequel se trouve une propriété de texte, sauf s’ils prennent en charge l’écriture de propriétés.

Indexation d’un magasin de données

L’index peut être étendu à l’aide de gestionnaires de protocole pour fournir l’accès aux magasins de données propriétaires. Par exemple, les fichiers et les éléments contenus dans des magasins de données non-système de fichiers (tels que les bases de données et les magasins de courrier électronique) requièrent un gestionnaire de protocole pour mapper une URL vers un flux. Les gestionnaires de protocole peuvent également déterminer les filtres corrects à utiliser pour extraire des informations d’un flux. Les filtres énumèrent les URL du magasin de données. Les éléments sont ensuite indexés individuellement à l’aide du filtre et/ou du gestionnaire de propriétés approprié. Pour plus d’informations, consultez extension de l’index.

Gestion du processus d’indexation

les développeurs d’applications peuvent contrôler l’étendue et la fréquence de Windows l’indexation de la recherche à l’aide de différentes interfaces de gestion. Ces interfaces incluent des fonctionnalités permettant d’ajouter et de supprimer les répertoires dans lesquels l’indexeur analyse les modifications, de notifier manuellement l’index des modifications apportées aux données, de vérifier l’état de l’indexeur et de forcer la réindexation d’une partie ou de la totalité des données. Pour plus d’informations, consultez gestion de l’index.

intégration du système de propriétés Windows avec les Applications de recherche Windows

le système de propriétés Windows est un système extensible en lecture/écriture de définitions de données qui offre un moyen uniforme d’exprimer des métadonnées sur les éléments de l’interpréteur de commandes. le système de propriétés Windows dans Windows Vista et versions ultérieures vous permet de stocker et de récupérer des métadonnées pour les éléments de Shell. Un élément de Shell est un élément de contenu unique, tel qu’un fichier, un dossier, un message électronique ou un contact. Une propriété est un élément de métadonnées individuel associé à un élément de Shell. Les valeurs de propriété sont exprimées sous la forme d’une structure PROPVARIANT .

Une liste complète de propriétés communes est incluse pour un certain nombre de types d’éléments courants tels que des photos, de la musique, des documents, des messages, des contacts et des fichiers. Les développeurs peuvent également présenter leurs propres propriétés à la plateforme si aucune propriété existante ne répond à leurs besoins. pour plus d’informations sur l’intégration d’applications avec le système de propriétés Windows, consultez développement de gestionnaires de propriétés.

Vue d’ensemble des gestionnaires

Un gestionnaire est un objet COM (Component Object Model) qui fournit les fonctionnalités d’un élément de Shell. La plupart des sources de données Shell offrent un système extensible pour lier les gestionnaires aux éléments. Par exemple, le dossier de système de fichiers utilise le système d’association pour rechercher les gestionnaires pour un type de fichier particulier. Un gestionnaire spécifique est requis pour chaque type de fichier. Un gestionnaire de filtre est requis pour le type de fichier Adobe Acrobat .pdf, par exemple, un autre gestionnaire de filtres est requis pour le format de fichier .doc, et ainsi de suite.

Différents gestionnaires présentent des similitudes. dans Windows Vista et versions ultérieures, tous les gestionnaires doivent utiliser l’une des interfaces suivantes pour initialiser le gestionnaire : IInitializeWithStream, IInitializeWithItemou IItinitializeWithFile.

Le tableau suivant répertorie les principales tâches de développement, le type de gestionnaire requis pour chaque tâche et fournit un lien vers des informations conceptuelles sur l’exécution de chaque tâche.

Tâche Handler Informations conceptuelles
Accès aux propriétés d’un fichier pour l’indexation Gestionnaire de propriétés Développement de gestionnaires de propriétés
Propriétés définies par le système pour les formats de fichiers personnalisés
Ajout de formats de presse-papiers pour l’objet de données (IDataObject) d’un élément (les objets de données sont utilisés dans les scénarios de glisser-déplacer et de copier/coller.) Gestionnaire d'objets de données Création de gestionnaires de données
Ajout de verbes pour un élément qui sont généralement affichés dans un menu contextuel Gestionnaire de menu contextuel Création de gestionnaires de menu contextuel
Personnalisation d’un menu contextuel à l’aide de verbes dynamiques
Association d’un type de fichier à une icône spécifique Gestionnaire d’icône Créer des gestionnaires d’icône
Création de feuilles de propriétés avec des images et des contrôles d’interface utilisateur qui autorisent une interaction personnalisée avec un type de fichier Gestionnaire de feuille de propriétés Gestionnaires de feuille de propriétés
Activation d’un type d’élément pour prendre en charge les scénarios de glisser-déplacer et de copier/coller Supprimer le gestionnaire Transfert d’objets Shell avec glisser-déplacer et le presse-papiers
Extraction de segments de texte et de propriétés de document pour l’indexation Gestionnaire de filtres Développement de gestionnaires de filtres
Indexation d’un nouveau type de fichier Gestionnaire de filtres, gestionnaire de propriétés Développement de gestionnaires de filtres
Développement de gestionnaires de propriétés
Indexation du contenu d’un magasin de données Gestionnaire de protocole Développement de gestionnaires de protocole
aperçu d’une vue simplifiée de l’élément de Shell dans le volet de visualisation de l’explorateur de Windows Gestionnaire d’aperçus Gestionnaires d’aperçus
Fournir du texte contextuel quand une souris pointe sur un objet d’interface utilisateur Gestionnaire d'info-bulle Création de gestionnaires d’extension de Shell (personnalisation de l’info-bulle)
Fournir une image statique pour représenter un élément de Shell Gestionnaire de miniatures Gestionnaires de miniatures

Le tableau suivant répertorie les gestionnaires et les interfaces permettant d’implémenter chaque type de gestionnaire.

Handler Interfaces
Supprimer le gestionnaire IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Gestionnaire d'objets de données IDataObject, IPersistFile
Gestionnaire de filtres Filtres
Gestionnaire d’icône IExtractIcon
Facultatif : IPersist, IPersistFile
Gestionnaire d'info-bulle IQueryInfo
Gestionnaire d’aperçus IPreviewHandler
Gestionnaire de propriétés IPropertyStore
Gestionnaire de protocole IFilter, ISearchProtocol, IUrlAccessor
Facultatif : ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Gestionnaire de feuille de propriétés IShellExtInit, IShellPropSheetExt
Gestionnaire de menu contextuel IContextMenu, IExplorerCommand, IShellExtInit
Gestionnaire de miniatures IThumbnailProvider

Notes

Un gestionnaire de propriétés est parfois kown comme un gestionnaire de métadonnées. Une source de données Shell est parfois appelée extension d’espace de noms Shell. Un gestionnaire de type de fichier est parfois appelé gestionnaire d’extensions de Shell ou extension de Shell.

Pour plus d’informations sur la création de gestionnaires, consultez création de gestionnaires d’extension de Shell. pour plus d’informations sur les propriétés, consultez Windows système de propriétés.

Instructions du programme d’installation du complément

Pour créer un programme d’installation de complément, suivez les instructions ci-dessous :

  • Le programme d’installation doit utiliser le programme d’installation EXE ou MSI.
  • Des notes de publication doivent être fournies.
  • Une entrée Ajout/suppression de programmes doit être créée pour chaque complément installé.
  • Le programme d’installation doit prendre en charge tous les paramètres du Registre pour le type de fichier spécifique ou le magasin que le complément actuel comprend.
  • Si un complément précédent est remplacé, le programme d’installation doit avertir l’utilisateur.
  • Si un complément plus récent a remplacé un complément précédent, l’utilisateur doit être en mesure de restaurer les fonctionnalités du complément précédent et de le rendre à nouveau dans le complément par défaut pour ce type de fichier ou ce magasin.

Remarque à l’attention des implémenteurs

Avant de créer un gestionnaire de filtres ou de propriétés, les développeurs doivent tenir compte des éléments suivants :

  • ces gestionnaires sont des extensions in-process qui sont chargées dans des processus que vous ne contrôlez pas, tels que le processus de démon de filtre, l’explorateur de Windows (recherche grep) et des hôtes tiers comme Windows Mail).
  • Vous devez écrire un code sécurisé suffisamment robuste pour gérer les formes arbitrairement endommagées de votre format de fichier qui ont été créées pour attaquer le système.
  • Votre complément ne doit pas entraîner de fuite de ressources qui génèrent des problèmes pour les processus hôtes.
  • Votre complément ne doit pas se bloquer, car cela entraînera également le blocage des processus de l’hôte et ralentira le processus de filtrage.
  • Étant donné que ces gestionnaires sont exécutés dans un processus système en arrière-plan, ils doivent fonctionner rapidement avec un minimum d’UC et d’e/s consommées pour répondre aux exigences de performances du système.

Par conséquent, ces compléments doivent être écrits par les développeurs ayant une expertise dans la création de code au niveau du système.

Ressources supplémentaires

Vue d’ensemble de Windows Search

langues prises en charge par la recherche de Windows

Utilisation de code managé avec Shell Data et Windows Search

Windows Rechercher dans le Guide du développeur