Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Microsoft Windows Search utilise des filtres pour extraire le contenu des éléments à inclure dans un index de recherche en texte intégral. Vous pouvez étendre Windows Search pour indexer des types de fichiers nouveaux ou propriétaires en écrivant des gestionnaires de filtres pour extraire le contenu et des gestionnaires de propriétés pour extraire les propriétés des fichiers. Les filtres sont associés aux types de fichiers, comme indiqué par les extensions de nom de fichier, les types MIME ou les identificateurs de classe (CLSID). Bien qu’un filtre puisse gérer plusieurs types de fichiers, chaque type fonctionne avec un seul filtre.
Cette rubrique contient les sections suivantes :
- Code natif
- Pratiques de code sécurisées pour Windows Search
- Ressources additionnelles
- rubriques connexes
Code natif
Dans Windows 7 et versions ultérieures, les filtres écrits dans le code managé sont explicitement bloqués. Les filtres DOIVENT être écrits en code natif en raison de problèmes potentiels de versionnage CLR avec le processus informatique où plusieurs modules complémentaires sont exécutés.
Pratiques de code sécurisées pour Windows Search
Voici les pratiques d’écriture d’applications sécurisées à utiliser avec Windows Search.
Pour les applications de requête :
- Lorsque vous écrivez des clients de recherche, vous devez choisir l’API qui s’exécute dans un contexte de sécurité qui permet à l’utilisateur le moins de privilèges. Par exemple, les pages ASP peuvent utiliser l’objet de requête IXSSO, qui s’exécute en tant que processus utilisateur.
Pour les IFilters et les ressources linguistiques :
- Si un nouveau gestionnaire de filtres pour un type de fichier est installé en remplacement d’une inscription de filtre existante, le programme d’installation doit enregistrer l’inscription actuelle et le restaurer si le nouveau gestionnaire de filtres est désinstallé. Il n’existe aucun mécanisme permettant de chaîner des filtres. Par conséquent, le nouveau gestionnaire de filtres est chargé de répliquer toutes les fonctionnalités nécessaires de l’ancien filtre.
- IFilters, analyseurs de mots et générateurs de formes dérivées pour Windows Search s’exécutent dans le contexte de sécurité locale. Ils doivent être conçus pour gérer les mémoires tampons et pour s'empiler correctement. Toutes les copies de chaîne doivent avoir des vérifications spécifiques pour se protéger contre les dépassements de capacité de mémoire tampon. Vous devez toujours vérifier la taille allouée de la mémoire tampon et tester la taille des données par rapport à la taille de la mémoire tampon. Les dépassements de mémoire tampon sont une technique courante pour exploiter le code qui n’applique pas de restrictions de taille de mémoire tampon.
- IFilter, analyseur de mots et composants de générateur de formes dérivées ne doivent jamais appeler la fonction ExitProcess Function ou une API similaire qui met fin à un processus et à tous ses threads.
- N’allouez pas ou libérez des ressources dans le point d’entrée DllMain. Cela peut entraîner des défaillances lors de tests de stress à faible ressource.
- Codez tous les objets pour être sécurisés pour les threads. Windows Search appelle une instance d’un analyseur de mots ou d’un séparateur de mots dans un thread à la fois, mais elle peut appeler plusieurs instances en même temps sur plusieurs threads.
- Évitez de créer des fichiers temporaires ou d’écrire dans le Registre.
- Si vous utilisez le compilateur Microsoft Visual C++, vérifiez que vous compilez votre application à l’aide de l’option /GS . L’option /GS est utilisée pour détecter les dépassements de mémoire tampon. L’option /GS place les contrôles de sécurité dans le code compilé. Pour plus d’informations, consultez dllGetClassObject Function /GS (Buffer Security Check) dans la section Options du compilateur Visual C++ du Kit de développement logiciel (SDK) de plateforme.
Ressources supplémentaires
- L’exemple IFilterSample montre comment créer une classe de base IFilter pour implémenter l’interface IFilter .
- Pour obtenir une vue d’ensemble du processus d’indexation, consultez Le processus d’indexation.
- Pour obtenir une vue d’ensemble des types de fichiers, consultez Types de fichiers.
- Pour interroger les attributs d'association de fichiers d'un type de fichier, consultez PerceivedTypes, SystemFileAssociations et Enregistrement d'application.
Rubriques connexes