Udostępnij za pośrednictwem


Najlepsze rozwiązania dotyczące tworzenia procedur obsługi filtrów w usłudze Windows Search

Usługa Microsoft Windows Search używa filtrów do wyodrębniania zawartości elementów w celu włączenia ich do indeksu pełnotekstowego. Możesz rozszerzyć usługę Windows Search, aby indeksować nowe lub zastrzeżone typy plików, zapisując programy obsługi filtrów w celu wyodrębnienia zawartości i procedur obsługi właściwości w celu wyodrębnienia właściwości plików. Filtry są skojarzone z typami plików, co oznacza rozszerzenia nazw plików, typy MIME lub identyfikatory klas (CLSID). Chociaż jeden filtr może obsługiwać wiele typów plików, każdy typ działa tylko z jednym filtrem.

Ten temat zawiera następujące sekcje:

Kod natywny

W systemie Windows 7 lub nowszym filtry napisane w kodzie zarządzanym są jawnie blokowane. Filtry MUSZĄ być zapisywane w kodzie natywnym ze względu na potencjalne problemy z wersją środowiska CLR w procesie, w ramach którego jest uruchamianych wiele dodatków.

Poniżej przedstawiono rozwiązania dotyczące pisania bezpiecznych aplikacji do użycia z usługą Windows Search.

W przypadku aplikacji zapytaniowych:

  • Podczas pisania klientów wyszukiwania należy wybrać interfejs API uruchamiany w kontekście zabezpieczeń, który zezwala użytkownikowi na najmniejsze uprawnienia. Na przykład strony ASP mogą używać obiektu zapytania IXSSO, który jest uruchamiany jako proces użytkownika.

dla filtrów IFilters i zasobów językowych:

  • Jeśli nowa procedura obsługi filtrów dla typu pliku jest instalowana jako zamiennik istniejącej rejestracji filtru, instalator powinien zapisać bieżącą rejestrację i przywrócić ją, jeśli zostanie odinstalowana nowa procedura obsługi filtrów. Nie ma mechanizmu tworzenia łańcuchów filtrów. W związku z tym nowa procedura obsługi filtrów jest odpowiedzialna za replikowanie wszelkich niezbędnych funkcji starego filtru.
  • IFilters, word breakers i stemmers dla Windows Search są uruchamiane w lokalnym kontekście zabezpieczeń. Powinny być zapisywane, aby zarządzać buforami i prawidłowo układać stos. Wszystkie kopie ciągów muszą mieć jawne kontrole, aby chronić przed przekroczeniami buforu. Zawsze należy sprawdzić przydzielony rozmiar buforu i przetestować rozmiar danych względem rozmiaru buforu. Przepełnienie buforu to powszechna technika wykorzystania kodu, który nie wymusza ograniczeń rozmiaru buforu.
  • IFilter, komponenty analizatora wyrazów i stemmera nigdy nie powinny wywoływać funkcji ExitProcess ani podobnego interfejsu API, który kończy proces i wszystkie jego wątki.
  • Nie przydzielaj ani nie zwalniaj zasobów w punkcie wejścia DllMain. Może to prowadzić do niepowodzeń podczas testów stresowych w warunkach ograniczonych zasobów.
  • Koduj wszystkie obiekty, które mają być bezpieczne wątkowo. Usługa Windows Search może wywołać dowolne wystąpienie dzielnika słów lub stemmera na jednym wątku jednocześnie, ale może też wywołać wiele wystąpień w tym samym czasie na wielu wątkach.
  • Unikaj tworzenia plików tymczasowych lub zapisywania w rejestrze.
  • Jeśli używasz kompilatora microsoft Visual C++, upewnij się, że kompilujesz aplikację przy użyciu opcji /GS. Opcja /GS służy do wykrywania przepełnień buforu. Opcja /GS umieszcza kontrole zabezpieczeń w skompilowanym kodzie. Aby uzyskać więcej informacji, zobacz DllGetClassObject Function /GS (sprawdzanie zabezpieczeń buforu) w sekcji Opcje kompilatora języka Visual C++ zestawu SDK platformy.

Dodatkowe zasoby

tworzenie programów obsługi filtrów

Informacje o programach obsługi filtrów w usłudze Windows Search

zwracanie właściwości z programu obsługi filtrów

programy obsługi filtrów dostarczane z systemem Windows

Implementacja obsługi filtrów w Windows Search

Rejestrowanie Programów Obsługujących Filtry

Testowanie programów obsługi filtrów