Condividi tramite


Windows Search come piattaforma di sviluppo

Per indicizzare il contenuto e le proprietà dei nuovi formati di file e archivi dati, è necessario estendere Microsoft Windows Search con i componenti aggiuntivi.

Prima che uno sviluppatore di terze parti di nuovi formati di file e archivi dati possa ottenere tali formati e archivi da visualizzare nei risultati delle query in Esplora risorse, lo sviluppatore deve eseguire le tre operazioni seguenti:

  • Implementare un'origine dati shell per estendere lo spazio dei nomi shell.
  • Esporre gli elementi in un archivio dati (se aggiungono un nuovo archivio dati, perché è necessario indicizzare).
  • Sviluppare un gestore di protocollo in modo che Windows Search possa accedere ai dati per l'indicizzazione.

Questo argomento è organizzato come segue:

Introduzione

Prima di iniziare a creare un'applicazione Windows Search, tenere presente che il modo preferito per eseguire questa operazione consiste nell'usare un'origine dati shell. Un'origine dati shell estende lo spazio dei nomi shell ed espone gli elementi in un archivio dati. Gli elementi nell'archivio dati possono quindi essere indicizzati dal sistema di Windows Search usando un gestore di protocollo. Questo approccio indiretto per l'accesso a Windows Search implementando un'origine dati shell è preferibile perché fornisce l'accesso alla funzionalità shell completa. In questo modo si garantisce un'esperienza utente ragionevole.

Se si desidera che i risultati della query vengano visualizzati in Esplora risorse, è necessario implementare un'origine dati shell prima di poter creare un gestore di protocollo per estendere l'indice. Tuttavia, se tutte le query saranno a livello di codice (ad esempio tramite OLE DB) e interpretate dal codice dell'applicazione anziché dalla shell, uno spazio dei nomi shell è comunque preferibile ma non obbligatorio.

Per Windows è necessario un gestore di protocolli per ottenere informazioni sul contenuto dei file, ad esempio elementi nei database o tipi di file personalizzati. Anche se Windows Search può indicizzare il nome e le proprietà del file, Windows non conosce il contenuto del file. Di conseguenza, tali elementi non possono essere indicizzati o esposti nella shell di Windows. Implementando un gestore di protocollo personalizzato, è possibile esporre questi elementi. Per un elenco dei gestori identificati dallo scenario di sviluppo che si sta tentando di ottenere, vedere Panoramica dei gestori.

Panoramica degli scenari di sviluppo della ricerca

Gli scenari di sviluppo più comuni in Windows Search sono:

Aggiunta di un nuovo archivio dati

È necessario un archivio dati shell per Windows Search solo se si aggiunge un nuovo archivio dati da indicizzare. Un archivio dati è un repository di dati che possono essere esposti al modello di programmazione shell come contenitore usando un'origine dati Shell. Gli elementi in un archivio dati possono quindi essere indicizzati dal sistema di Windows Search usando un gestore di protocolli. Il gestore del protocollo implementa il protocollo per l'accesso a un'origine contenuto nel formato nativo. Le interfacce ISearchProtocol e ISearchProtocol2 vengono usate per implementare un gestore di protocollo personalizzato per espandere le origini dati che è possibile indicizzare. Per informazioni sulla creazione di un'origine dati shell, vedere Implementazione delle interfacce oggetto cartella di base.

Aggiunta di un nuovo formato di file

Se si aggiunge un nuovo formato di file personalizzato, è necessario sviluppare un gestore di filtri o un gestore di proprietà, ma non entrambi. Un filtro è un'implementazione dell'interfaccia IFilter . Apre i file di un tipo di file specifico e filtra le proprietà e i blocchi di testo per l'indicizzatore. I filtri sono associati ai tipi di file, come indicato dalle estensioni di file, dai tipi MIME o dagli identificatori di classe (CLSID). Anche se un filtro può gestire più tipi di file, ogni tipo di file funziona con un solo filtro.

Un gestore di proprietà converte i dati archiviati in un file in uno schema strutturato riconosciuto da e accessibile da Esplora risorse, Windows Search e altre applicazioni. Questi sistemi possono quindi interagire con il gestore di proprietà per scrivere e leggere proprietà da e verso un file. I dati tradotti includono visualizzazione dettagli, suggerimenti, riquadro dettagli, pagine delle proprietà e così via. Ogni gestore di proprietà è associato a un particolare tipo di file, identificato dall'estensione del nome file. Per eseguire le operazioni seguenti, è necessario un gestore di proprietà:

  • Mostra le proprietà degli elementi non indicizzati nell'interfaccia utente.
  • Supportare la scrittura delle proprietà.

Utilizzo dei risultati di Windows Search

Le sezioni seguenti descrivono diversi modi per utilizzare i risultati di Windows Search:

Esecuzione di query su dati

Gli sviluppatori che scrivono applicazioni oltre al sistema di proprietà combinato di Windows Search e Windows possono accedere a file ed elementi indipendentemente dal tipo di applicazione o di file. Esistono due modi per consentire alle applicazioni di accedere ai dati dell'indicizzatore:

  • Le applicazioni comunicano direttamente con OLE DB inviando query SQL (Structured Query Language) di Windows Search al provider OLE DB di Windows Search per recuperare i risultati. Le query possono essere create manualmente o usando l'interfaccia ISearchQueryHelper per generare SQL da parole chiave di ricerca e Sintassi di query avanzata (AQS).
  • Le applicazioni funzionano tramite il livello Shell. Il vantaggio del livello shell è che supporta anche altre origini come grep. Tuttavia, lo svantaggio è che non tutte le funzionalità dell'indicizzatore sono disponibili.

Un'altra opzione consiste nell'usare i protocolli search-ms:// e search://, che eseguono ricerche basate su URL di cui viene eseguito il rendering tramite Esplora risorse. Questa opzione consente lo sviluppo più leggero, ma non restituisce risultati o selezioni utente dalla visualizzazione dei risultati all'applicazione chiamante. Inoltre, come altri protocolli, le applicazioni di ricerca di terze parti possono assumere il controllo dei protocolli search-ms:// e search:// se le applicazioni sono conformi al set di funzionalità richiesto. Per altre informazioni sull'esecuzione di query, vedere Processo di query in Ricerca di Windows ed Esecuzione di query sull'indice a livello di codice.

In Windows 7 e versioni successive, la ricerca federata offre un nuovo provider di ricerca che esegue query sugli archivi dati remoti tramite server Web, tramite il protocollo OpenSearch ed enumera i risultati come feed RSS o Atom XML. I connettori di ricerca sono giunzioni dello spazio dei nomi che simulano il comportamento delle cartelle usando un provider di ricerca. Per altre informazioni sulla federazione di ricerca in archivi dati remoti in Windows 7, vedere Ricerca federata in Windows.

Indicizzazione di file ed elementi

Il contenuto indicizzato si basa sui tipi di file e di dati supportati tramite componenti aggiuntivi inclusi in Windows Search e le regole di inclusione e esclusione predefinite per le cartelle nel file system. Ad esempio, i filtri inclusi in Ricerca finestre supportano oltre 200 tipi comuni di dati, tra cui documenti di Microsoft Office, posta elettronica di Microsoft Outlook (insieme al gestore del protocollo MAPI), file di testo normale, HTML e molti altri ancora. Per un elenco completo dei tipi di file supportati in modo nativo, vedere Informazioni incluse nell'indice.

L'indice può essere esteso con gestori di proprietà e filtri per esporre il contenuto e le proprietà dei nuovi formati di file all'indice e a Esplora risorse. I filtri sono un'implementazione dell'interfaccia IFilter . Esistono due tipi di filtri: uno che interagisce con singoli elementi, ad esempio file e uno che interagisce con contenitori come cartelle. I filtri sono multi-scopo in quanto supportano la suddivisione in blocchi di dati, il contenuto di testo, alcune proprietà e più lingue.

Al contrario, i gestori di proprietà hanno uno scopo più specifico: esporre le proprietà di tipi di file specifici identificati dalle estensioni di file. Un gestore di proprietà per un tipo di file può abilitare le proprietà get e impostare e può enumerare le proprietà associate a tale tipo di file. A differenza dei filtri, i gestori di proprietà non supportano il blocco dei dati o del contenuto di testo e i gestori di proprietà non possono indicare la lingua in cui si trova una proprietà di testo, a meno che non supportino la scrittura di proprietà.

Indicizzazione di un archivio dati

L'indice può essere esteso con i gestori di protocollo per fornire l'accesso agli archivi dati proprietari. Ad esempio, i file e gli elementi contenuti in archivi dati non di file system ,ad esempio database e archivi di posta elettronica, richiedono un gestore di protocollo per eseguire il mapping da un URL a un flusso. I gestori di protocollo possono anche determinare facoltativamente i filtri corretti da usare per estrarre informazioni da un flusso. I filtri enumerare gli URL dell'archivio dati. Gli elementi vengono quindi indicizzati singolarmente usando il filtro corretto e/o il gestore delle proprietà. Per altre informazioni, vedere Estensione dell'indice.

Gestione del processo di indicizzazione

Gli sviluppatori di applicazioni possono controllare l'ambito e la frequenza dell'indicizzazione di Windows Search usando varie interfacce di gestione. Queste interfacce includono funzionalità per aggiungere e rimuovere le directory che l'indicizzatore analizza le modifiche, notificare manualmente l'indice delle modifiche ai dati, controllare lo stato dell'indicizzatore e forzare la reindicizzazione di alcuni o tutti i dati. Per altre informazioni, vedere Gestione dell'indice.

Integrazione del sistema di proprietà Windows con le applicazioni di Windows Search

Windows Property System è un sistema estendibile di lettura/scrittura di definizioni di dati che fornisce un modo uniforme per esprimere i metadati sugli elementi della shell. Il sistema di proprietà Windows in Windows Vista e versioni successive consente di archiviare e recuperare i metadati per gli elementi della shell. Un elemento shell è un singolo contenuto, ad esempio un file, una cartella, un messaggio di posta elettronica o un contatto. Una proprietà è una singola parte di metadati associata a un elemento della shell. I valori delle proprietà vengono espressi come struttura PROPVARIANT.

Un elenco completo di proprietà comuni è incluso per diversi tipi di elementi comuni, ad esempio foto, musica, documenti, messaggi, contatti e file. Gli sviluppatori possono anche introdurre le proprie proprietà alla piattaforma se nessuna proprietà esistente soddisfa le proprie esigenze. Per altre informazioni sull'integrazione di applicazioni con il sistema di proprietà Windows, vedere Sviluppo di gestori di proprietà.

Panoramica dei gestori

Un gestore è un oggetto COM (Component Object Model) che fornisce funzionalità per un elemento shell. La maggior parte delle origini dati shell offre un sistema estendibile per l'associazione dei gestori agli elementi. Ad esempio, la cartella del file system usa il sistema di associazione per cercare i gestori per un particolare tipo di file. Per ogni tipo di file è necessario un gestore specifico. Per il tipo di file Adobe Acrobat .pdf è necessario un gestore di filtri, ad esempio un altro gestore di filtri per il formato di file .doc e così via.

I gestori diversi hanno una certa comunità. In Windows Vista e versioni successive, tutti i gestori devono usare una delle interfacce seguenti per inizializzare il gestore: IInitializeWithStream, IInitializeWithItem o IItinitializeWithFile.

La tabella seguente elenca le attività di sviluppo di alto livello, il tipo di gestore necessario per ogni attività e fornisce un collegamento alle informazioni concettuali su come eseguire ogni attività.

Attività Gestore Informazioni concettuali
Accesso alle proprietà di un file per l'indicizzazione Gestore proprietà Sviluppo di gestori di proprietà
Proprietà definite dal sistema per i formati di file personalizzati
Aggiunta di formati degli Appunti per l'oggetto dati (IDataObject) di un elemento (gli oggetti Dati vengono usati negli scenari di trascinamento della selezione e copia/incolla). Gestore dell'oggetto dati Creazione di gestori dati
Aggiunta di verbi per un elemento comunemente visualizzato in un menu di scelta rapida Gestore del menu di scelta rapida Creazione di gestori di menu di scelta rapida
Personalizzazione di un menu di scelta rapida tramite verbi dinamici
Associazione di un tipo di file a un'icona specifica Gestore icone Creazione di gestori di icone
Creazione di finestre delle proprietà con immagini e controlli dell'interfaccia utente che consentono l'interazione personalizzata con un tipo di file Gestore della finestra delle proprietà Gestori finestra delle proprietà
Abilitazione di un tipo di elemento per supportare scenari di trascinamento della selezione e copia/incolla Gestore di rilascio Trasferimento di oggetti shell con trascinamento della selezione e appunti
Estrazione di blocchi di proprietà di testo e documento per l'indicizzazione Gestore filtri Sviluppo di gestori di filtri
Indicizzazione di un nuovo tipo di file Gestore filtri, gestore proprietà Sviluppo di gestori di filtri
Sviluppo di gestori di proprietà
Indicizzazione del contenuto di un archivio dati Protocol handler Sviluppo di gestori di protocolli
Anteprima di una visualizzazione semplificata dell'elemento shell nel riquadro di anteprima di Esplora risorse Gestore di anteprima Gestori di anteprima
Specifica del testo popup quando un mouse passa il mouse su un oggetto dell'interfaccia utente Gestore della finestra popup Creazione di gestori dell'estensione shell (personalizzazione della descrizione informazioni)
Specifica di un'immagine statica per rappresentare un elemento della shell Gestore anteprime Gestori di anteprime

 

Nella tabella seguente sono elencati i gestori e le interfacce per l'implementazione di ogni tipo di gestore.

Gestore Interfacce
Gestore di rilascio IDropTarget, IDropTargetHelper, IPersistFile, IShellExtInit
Gestore dell'oggetto dati IDataObject, IPersistFile
Gestore filtri IFilter
Gestore icone IExtractIcon
Facoltativo: IPersist, IPersistFile
Gestore della finestra popup IQueryInfo
Gestore di anteprima IPreviewHandler
Gestore proprietà IPropertyStore
Protocol handler IFilter, ISearchProtocol, IUrlAccessor
Facoltativo: ISearchProtocol2, IUrlAccessor2, IUrlAccessor3, IUrlAccessor4
Gestore della finestra delle proprietà IShellExtInit, IShellPropSheetExt
Gestore del menu di scelta rapida IContextMenu, IExplorerCommand, IShellExtInit
Gestore anteprime IThumbnailProvider

 

Nota

Un gestore di proprietà viene talvolta usata come gestore di metadati. Un'origine dati shell è talvolta nota come estensione dello spazio dei nomi shell. Un gestore dei tipi di file è talvolta noto come gestore di estensioni shell o estensione shell.

 

Per altre informazioni sulla creazione di gestori, vedere Creazione di gestori di estensione della shell. Per altre informazioni sulle proprietà, vedere Windows Property System.

Linee guida per il programma di installazione del componente aggiuntivo

Usare le linee guida seguenti per la creazione di un programma di installazione del componente aggiuntivo:

  • Il programma di installazione deve usare il programma di installazione EXE o MSI.
  • È necessario specificare le note sulla versione.
  • È necessario creare una voce Installazione applicazioni per ogni componente aggiuntivo installato.
  • Il programma di installazione deve assumere tutte le impostazioni del Registro di sistema per il tipo di file specifico o archiviare che il componente aggiuntivo corrente riconosce.
  • Se un componente aggiuntivo precedente viene sovrascritto, il programma di installazione deve inviare una notifica all'utente.
  • Se un componente aggiuntivo più recente ha sovrascritto un componente aggiuntivo precedente, l'utente deve essere in grado di ripristinare la funzionalità del componente aggiuntivo precedente e renderlo nuovamente il componente aggiuntivo predefinito per il tipo di file o l'archivio.

Nota per gli implementatori

Prima di creare un gestore di filtri o proprietà, gli sviluppatori devono considerare quanto segue:

  • Questi gestori sono estensioni in-process caricate nei processi che non si controllano, ad esempio il processo del daemon di filtri, Esplora risorse (ricerca grep) e host di terze parti come Windows Mail.
  • È necessario scrivere codice sicuro abbastanza affidabile per gestire forme arbitrarie danneggiate del formato di file creato per attaccare il sistema.
  • Il componente aggiuntivo non deve perdere risorse che genereranno problemi per i processi host.
  • Il componente aggiuntivo non deve arrestarsi in modo anomalo perché si arresta in modo anomalo anche i processi host e rallenta il processo di filtro.
  • Poiché questi gestori vengono eseguiti in un processo di sistema in background, devono eseguire rapidamente con un minimo di CPU e I/O utilizzato per soddisfare i requisiti di prestazioni del sistema.

Di conseguenza, questi componenti aggiuntivi devono essere scritti dagli sviluppatori con esperienza nella creazione di codice a livello di sistema.

Risorse aggiuntive

Panoramica di Windows Search

Lingue supportate da Windows Search

Uso di codice gestito con i dati della shell e Windows Search

Guida per gli sviluppatori di Windows Search