Megosztás a következőn keresztül:


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

A Microsoft Windows Search szűrőkkel kinyeri az elemek tartalmát a teljes szöveges indexbe való felvételhez. A Windows Search kiterjeszthető új vagy védett fájltípusok indexelésére úgy, hogy szűrőkezelőket ír a tartalom kinyeréséhez, a tulajdonságkezelőket pedig a fájlok tulajdonságainak kinyeréséhez. A szűrők fájltípusokhoz vannak társítva, fájlnévkiterjesztések, MIME-típusok vagy osztályazonosítók (CLSID-k) szerint. Bár egy szűrő több fájltípust is képes kezelni, minden típus csak egy szűrővel működik.

Ez a témakör a következő szakaszokat tartalmazza:

Natív kód

A Windows 7-ben és újabb verziókban a felügyelt kódban írt szűrők kifejezetten le vannak tiltva. A szűrőket natív kódban kell írni a folyamatban futó több bővítményt érintő CLR-verziózásbeli problémák miatt.

Az alábbiakban a Windows Search szolgáltatással használható biztonságos alkalmazások írására vonatkozó eljárásokat követjük.

Lekérdezési alkalmazásokhoz:

  • Keresési ügyfelek írásakor olyan biztonsági környezetben futó API-t kell választania, amely a felhasználó számára a legkisebb jogosultságot teszi lehetővé. Az ASP-lapok például használhatják az IXSSO lekérdezési objektumot, amely felhasználói folyamatként fut.

IFilters és nyelvi erőforrások esetén:

  • 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 láncolására. Ezért az új szűrőkezelő felelős a régi szűrő szükséges funkcióinak replikálásáért.
  • Az IFilters, a word breakers és a stemmers for Windows Search a Local Security környezetben fut. Ezeket a pufferek kezelésére és a helyes veremkezeléshez kell írni. Minden sztringpéldánynak explicit ellenőrzésekkel kell rendelkeznie a puffertúllépések elleni védelemhez. Mindig ellenőrizze a puffer lefoglalt méretét, és tesztelje az adatok méretét a puffer méretével. A puffertúlcsordulások gyakran olyan kód kihasználására szolgálnak, amely nem kényszeríti ki a pufferméret korlátozásait.
  • IFilter, szóhatároló és szótőelemző összetevőknek soha nem szabad hívják meg a ExitProcess függvényt vagy más hasonló API-t, amely megszakítja a folyamatot és annak összes szálát.
  • Ne foglald le és ne szabadítsd fel az erőforrásokat a DllMain belépési pontban. Ez az alacsony erőforrásigényű stressztesztek során hibákhoz vezethet.
  • Az összes objektum kódolása a szálbiztosság érdekében. A Windows Search egyszerre meghívja egy szóhatároló vagy -szár bármelyik példányát egy szálon, de egyszerre több példányt is meghívhat több szálon.
  • Kerülje az ideiglenes fájlok létrehozását vagy a beállításjegyzékbe való írást.
  • Ha a Microsoft Visual C++ fordítót használja, győződjön meg arról, hogy az alkalmazást a /GS lehetőséggel fordítja le. A /GS beállítással észlelheti a puffertúllépéseket. A /GS beállítás biztonsági ellenőrzéseket helyez a lefordított kódba. További információ: DllGetClassObject függvény /GS (Puffer biztonsági ellenőrzése) a Platform SDK Visual C++ Fordító beállításai szakaszában.

További erőforrások

Szűrőkezelők fejlesztése

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

Tulajdonságok visszaadása a szűrőkezelőről

A Windows részeként szállított szűrőkezelők

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

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

Szűrőkezelők Tesztelése