Condividi tramite


Procedure consigliate per la creazione di gestori di filtri in Windows Search

Microsoft Windows Search usa filtri per estrarre il contenuto degli elementi da includere in un indice full-text. Puoi estendere Windows Search per indicizzare i tipi di file nuovi o proprietari scrivendo gestori di filtro per estrarre il contenuto e i gestori delle proprietà per estrarre le proprietà dei file. I filtri sono associati ai tipi di file, come indicato dalle estensioni dei nomi di file, dai tipi MIME o dagli identificatori di classe (CLSID). Mentre un filtro può gestire più tipi di file, ogni tipo funziona con un solo filtro.

Questo argomento contiene le sezioni seguenti:

Codice nativo

In Windows 7 e versioni successive i filtri scritti nel codice gestito vengono bloccati in modo esplicito. I filtri DEVONO essere scritti nel codice nativo a causa di potenziali problemi di controllo delle versioni CLR con il processo in cui vengono eseguiti più componenti aggiuntivi.

Di seguito sono riportate le procedure per la scrittura di applicazioni sicure da usare con Windows Search.

Per le applicazioni di query:

  • Quando si scrivono client di ricerca, è necessario scegliere l'API eseguita in un contesto di sicurezza che consenta all'utente il privilegio minimo. Ad esempio, le pagine ASP possono usare l'oggetto query IXSSO, che viene eseguito come processo utente.

Per i filtri e le risorse del linguaggio:

  • Se viene installato un nuovo gestore filtri per un tipo di file come sostituzione per una registrazione di filtro esistente, il programma di installazione deve salvare la registrazione corrente e ripristinarlo se il nuovo gestore di filtri viene disinstallato. Non esiste alcun meccanismo per concatenare i filtri. Di conseguenza, il nuovo gestore di filtri è responsabile della replica di tutte le funzionalità necessarie del filtro precedente.
  • IFilter, word breaker e stemmer per Windows Search vengono eseguiti nel contesto di sicurezza locale. Devono essere scritti per gestire i buffer e per eseguire correttamente lo stack. Tutte le copie di stringa devono disporre di controlli espliciti per evitare sovraccarichi del buffer. È consigliabile verificare sempre le dimensioni allocate del buffer e testare le dimensioni dei dati rispetto alle dimensioni del buffer. I sovraccarichi del buffer sono una tecnica comune per sfruttare il codice che non impone restrizioni sulle dimensioni del buffer.
  • IFilter, i componenti word breaker e stemmer non devono mai chiamare la funzione ExitProcess o un'API simile che termina un processo e tutti i relativi thread.
  • Non allocare o liberare risorse nel punto di ingresso DllMain. Ciò può causare errori durante i test di stress a bassa risorsa.
  • Rendere tutti gli oggetti sicuri per i thread. Windows Search chiama una qualsiasi istanza di word breaker o stemmer una alla volta in un thread, ma può chiamare più istanze contemporaneamente su più thread.
  • Evitare di creare file temporanei o scrivere nel Registro di sistema.
  • Se si usa il compilatore Microsoft Visual C++, assicurarsi di compilare l'applicazione usando l'opzione /GS. L'opzione /GS viene usata per rilevare i sovraccarichi del buffer. L'opzione /GS inserisce i controlli di sicurezza nel codice compilato. Per altre informazioni, vedere Funzione DllGetClassObject /GS (controllo della sicurezza del buffer) nella sezione Opzioni del compilatore Visual C++ di Platform SDK.

Risorse aggiuntive

Sviluppo di Gestori di Filtri

Informazioni sui gestori di filtri in Windows Search

La Restituzione di Proprietà da un Gestore di Filtri

gestori di filtri forniti con Windows

Implementazione di gestori di filtri in Windows Search

Registrazione dei gestori di filtri

Test dei gestori di filtri