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
- bezpieczne praktyki dotyczące kodu dla usługi Windows Search
- dodatkowe zasoby
- Tematy pokrewne
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.
Bezpieczne praktyki dotyczące kodu dla usługi Windows Search
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
- W próbce IFilterSample zademonstrowano, jak utworzyć klasę bazową IFilter w celu implementacji interfejsu IFilter.
- Aby zapoznać się z omówieniem procesu indeksowania, zobacz Proces indeksowania.
- Aby zapoznać się z omówieniem typów plików, zobacz Typy plików.
- Aby zapytać o atrybuty skojarzenia plików dla typu pliku, zobacz PerceivedTypes, SystemFileAssociations i Rejestracja aplikacji.
Tematy pokrewne
-
Informacje o programach obsługi filtrów w usłudze Windows Search
-
programy obsługi filtrów dostarczane z systemem Windows