Szűrőkezelők regisztrálása

A szűrőkezelőt regisztrálni kell. Egy adott fájlnévkiterjesztéshez meglévő szűrőkezelőt is megkereshet a beállításjegyzéken keresztül, vagy az ILoadFilter felület használatával.

Ez a témakör a következőképpen van rendszerezve:

Jegyzet

A szűrőkezelő az IFilter felület implementációja.

Az új protokollkezelő regisztrálásához vagy egy meglévő protokollkezelő megtalálásához szükséges GRAFIKUS GUID-k az alábbi táblázatban találhatók.

GUID Felhasználó vagy alkalmazás definiálva Leírás
89BCB740-6119-101A-BCB7-00DD010655AF Alkalmazás Az IFilter interfész GUID azonosítója egy beállításkulcs-állandó minden szűrőkezelő számára.
{PersistentHandlerGUID} Felhasználó Ez a perzisztens kezelő GUID-ja.
{FilterHandlerCLSID} Felhasználó Ez a szűrőkezelő osztályazonosítója (CLSID).
{ApplicationGUID} Felhasználó Ez egy köztes (összesített) GUID.

A szűrőkezelőket az HKEY_LOCAL_MACHINE-be kell regisztrálni, mert a SearchFilterHost.exe a SYSTEM-fiók alatt fut, így nem férhet hozzá a bejelentkezett felhasználó HKEY_CURRENT_USER beállításkulcsaihoz. Ezenkívül a Felhasználók csoportnak olvasási és végrehajtási hozzáféréssel kell rendelkeznie a szűrőkezelőhöz .dll, mert SearchFilterHost.exe eltávolítja az összes rendszergazdai jogosultságot, és csak a nem rendszergazdai jogosultságokat engedélyezi. Mivel az alapértelmezett Visual Studio-projekthely az aktuális felhasználó könyvtárában található, és így nem ad olvasási engedélyeket a Felhasználók csoportnak, át kell helyeznie a .dll, vagy módosítania kell az ACL-eket SearchFilterHost.exe hozzáférés engedélyezéséhez.

Új szűrőkezelő regisztrálásakor azt javasoljuk, hogy használjon leíró nevet, például HTML IFiltert.

Az új szűrőkezelő regisztrálása:

  1. Adja meg a szűrőkezelőt használó bővítményt és állandó kezelő GUID-azonosítót:
    HKEY_LOCAL_MACHINE
       Software
          Classes
             .txt
                PersistentHandler
                   (Default) = {PersistentHandlerGUID}
    HKEY_LOCAL_MACHINE
       Software
          Classes
             CLSID
                {PersistentHandlerGUID}
                   PersistentAddinsRegistered
                      {89BCB740-6119-101A-BCB7-00DD010655AF}l
                         (Default) = {FilterHandlerCLSID}
  1. Regisztrálja a szűrőkezelőt a következő kulcsokkal és értékekkel:
    HKEY_LOCAL_MACHINE
       Software
          Classes
             CLSID
                {FilterHandlerCLSID}
                   (Default) = {DescriptiveFilterHandlerName}
                   InprocServer32
                      (Default) = DLL Install Path
                      ThreadingModel = Both

Elavult megközelítés a szűrők kezelőinek regisztrálásához

Ez a megközelítés nem ajánlott használathoz. A szűrők regisztrálhatók olyan CLSID-hez, amely egy com-komponensmodell-osztályt és/vagy egy fájlnévkiterjesztést jelöl. Mindkét szűrőt regisztrálhatja, ha egy osztályhoz szűrőkezelőt kell regisztrálnia, és egy másik szűrőkezelőt egy fájlnévkiterjesztéshez az osztályon belül. Vegye figyelembe, hogy a fájlnévkiterjesztéshez regisztrált szűrőkezelő elsőbbséget élvez a CLSID szűrőkezelőivel szemben.

Ezek a bejegyzések szabványos OLE beállításjegyzék-bejegyzések, amelyek a CLSID\{ApplicationGUID} osztály bejegyzését is tartalmazzák,. A DLL-sample.dll a .txt osztályhoz futó objektum viselkedését implementálja. Jegyezze fel a PersistentHandler extra bejegyzést. Ez a bejegyzés azt az osztályt adja meg, amely a mintaosztály állandó objektumai felé irányuló kérelmek közvetítéséért felelős. A PersistentAddinsRegistered bejegyzés a 89BCB740-6119-101A-BCB7-00DD010655AF (IID_IFilter) nevű felületért felelős implementációt azonosítja. A IID_IFilter implementáló osztály szabványos OLE beállításjegyzék-bejegyzésekkel rendelkezik. Az InprocServer32 DLL a standard OLE mechanizmuson keresztül töltődik be.

A Windows Search a szűrőkezelőhöz megadott szálmodellt figyeli meg. Ha a szálmodell mindkettő van beállítva, a szűrőkezelőnek szálbiztosnak kell lennie; ellenkező esetben, ha ez nem szálbiztos, adja meg apartman. Vegye figyelembe, hogy a szűrőkezelőknek mindig biztonságosnak kell lenniük.

Az alábbi példaregisztrációs adatbázis bejegyzései egy osztály- és fájlnévkiterjesztéshez regisztrált szűrőkezelőhöz tartoznak. {PersistentHandlerGUID} és {FilterHandlerCLSID} változóként használják, amely olyan értékeket jelez, amelyeket a szűrőkezelő létrehozójának kell megadnia. Az értékek REG_SZ típusúak.

HKEY_LOCAL_MACHINE
   Software
      Classes
         .txt
            (Default) = SampleFile
         SampleFile
            (Default) = Class for Sample Files
            CLSID
               (Default) = {ApplicationGUID}
         CLSID
            {ApplicationGUID}
               (Default) = Sample Files
               InprocServer32
                  (Default) = sample.dll
               PersistentHandler
                  (Default) = {PersistentHandlerGUID}
            {PersistentHandlerGUID}
               (Default) = Sample file persistent handler
               PersistentAddinsRegistered
                  {89BCB740-6119-101A-BCB7-00DD010655AF}l
                     (Default) = {FilterHandlerCLSID}
            {FilterHandlerCLSID}
               (Default) = Sample Files
               InprocServer32
                  (Default) = sampfilt.dll
                  ThreadingModel = Both

Meglévő szűrőkezelők cseréje

Javasoljuk, hogy ne cserélje le a beépített szűrőkezelőket olyan gyakori fájltípusokra, mint a .txt, .doc, .html, .url stb., mert ez nem kívánt hatással lehet más rendszerösszetevőkre. Az e-mail-üzenettörzsek indexelése függ például a .txt, .htmlés .rtf szűrőkezelőktől.

Ha egy meglévő szűrőregisztráció helyett egy fájltípus új szűrőkezelője van telepítve, a telepítőnek mentenie kell az aktuális regisztrációt, és vissza kell állítania, ha az új szűrőkezelőt eltávolítják. Nincs mechanizmus a szűrők összefűzésére. Ezért az új szűrőkezelő felelős a régi szűrő szükséges funkcióinak replikálásáért.

Szűrőkezelő keresése adott fájlkiterjesztéshez

Az ILoadFilter felületével megkereshet egy szűrőkezelőt egy adott fájlnévkiterjesztéshez. Az alábbi példaregisztrációs adatbázis bejegyzései bemutatják, hogyan teheti ezt meg a HTML-fájlok esetében. Ebben a példában a HTML-dokumentumokhoz használt szűrőkezelő a nlhtml.dll. Az értékek REG_SZ típusúak.

Adott fájlnévkiterjesztés szűrőkezelőjének megkeresése:

  1. Ellenőrizze, hogy a szűrt fájlok típusának bővítménye rendelkezik-e állandó kezelővel a \HKEY_LOCAL_MACHINE\SOFTWARE\Classes.extensionbeállításjegyzék-bejegyzés alatt. Ha igen, hagyja, hogy ez a kulcs legyen {PersistentHandlerGUID}.
    HKEY_LOCAL_MACHINE
       SOFTWARE
          Classes
             .htm
                PersistentHandler
                   {PersistentHandlerGUID}
  1. Ha nincs regisztrálva állandó kezelő a bővítményhez, keresse meg a dokumentumtípushoz társított CLSID azonosítót a \HKEY_LOCAL_MACHINE\SOFTWARE\Classesbeállításjegyzék-bejegyzésben. Legyen ez a kulcs {ApplicationGUID}. Ezután állapítsa meg, hogy egy állandó kezelő regisztrálva van-e a CLSID-ben: az {ApplicationGUID} használatával keresse meg a \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{ApplicationGUID} bejegyzés állandó kezelőjének helyét. Legyen ez a kulcs {PersistentHandlerGUID}.
    HKEY_LOCAL_MACHINE
       SOFTWARE
          Classes
             htmlfile
                (Default) = Class for WWW HTML files
                CLSID
                   (Default) = {25336920-03F9-11CF-8FD0-00AA00686F13}
             CLSID
                {25336920-03F9-11CF-8FD0-00AA00686F13}
                   PersistentHandler
                      (Default) = {PersistentHandlerGUID}
  1. Határozza meg az állandó kezelő GUID-azonosítóját: a {PersistentHandlerGUID} használatával keresse meg a dokumentumtípus állandó kezelőjének GUID-azonosítóját. A HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{PersistentHandlerGUID}\PersistentAddinsRegistered\ 89BCB740-6119-101A-BCB7-00DD010655AF beállításjegyzék-bejegyzés értéke megadja az állandó kezelő GUID azonosítót ehhez a dokumentumtípushoz. Legyen ez a kulcs {FilterHandlerCLSID}.
    HKEY_LOCAL_MACHINE
       SOFTWARE
          Classes
             {PersistentHandlerGUID}
                (Default) = HTML File Persistent Handler<dl>
                    REG_SZ     {89BCB740-6119-101A-BCB7-00DD010655AF}
                    REG_SZ     (Default) = {EEC97550-47A9-11CF-B952-00AA0051FE20}
  1. Határozza meg a szűrőkezelőt: az előző lépésben meghatározott {FilterHandlerCLSID} használatával keresse meg a szűrőkezelőt a \HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FilterHandlerCLSID}\InprocServer32bejegyzés alatt. Ebben a példában a leíró szűrőkezelő neve HTML IFilter.
    HKEY_LOCAL_MACHINE
       SOFTWARE
          Classes
             CLSID
                {EEC97550-47A9-11CF-B952-00AA0051FE20}
                   (Default) = HTML IFilter
                    Data type  REG_SZ
                    InprocServer32
                    nlhtml.dll

További erőforrások

Szűrőkezelők fejlesztése

A Windows Search szűrőkezelőiről

Ajánlott eljárások a szűrőkezelők létrehozásához a Windows Keresésben

Tulajdonságok visszaadása egy szűrőkezelőből

A Windows részeként érkező szűrőkezelők

Szűrőkezelők implementálása a Windows Search

Szűrőkezelők tesztelése