Condividi tramite


Matrici di associazioni

Una matrice di associazioni è un elenco ordinato di percorsi del Registro di sistema usati per archiviare informazioni su un tipo di elemento, inclusi gestori, verbi e altri attributi, ad esempio l'icona e il nome visualizzato del tipo. Shell utilizza matrici di associazioni per eseguire query su un set predefinito di percorsi del Registro di sistema che potrebbero contenere informazioni su un Shell elemento.

Questo argomento è organizzato come segue:

Informazioni sulle matrici di associazioni

Una matrice di associazioni è un elenco ordinato di percorsi del Registro di sistema che contengono informazioni su un tipo di elemento, inclusi gestori, verbi e altri attributi, ad esempio l'icona e il nome visualizzato del tipo. Queste informazioni sul tipo di elemento possono essere registrate a diversi livelli di specificità. Ad esempio, è possibile registrare un oggetto verb che verrà visualizzato solo per un tipo di file specifico (ad esempio .jpg) o per tutti gli elementi con lo stesso System.Kind (ad esempio System.kind = picture) o per tutti gli elementi.

Shell usa matrici di associazioni per eseguire query su un set predefinito di percorsi del Registro di sistema che potrebbero contenere informazioni sull'elemento. Le API della matrice di associazione possono essere usate per recuperare dalla sottochiave del Registro di sistema un singolo valore contenente le informazioni richieste, con tale valore proveniente dalla prima voce della matrice che la fornisce. Ad esempio, il valore dell'icona predefinito viene recuperato in questo modo. La matrice di associazione può essere usata anche per recuperare un set di valori archiviati nelle sottochiavi del Registro di sistema. Ad esempio, l'elenco di verbi viene compilato da tali verbi registrati in tutte le sottochiavi.

Dopo che le Shell query su un set predefinito di percorsi del Registro di sistema per informazioni su un Shell elemento, inserisce i percorsi del Registro di sistema in una matrice in ordine dal percorso più specifico al più generale.

Poiché le matrici di associazioni sono elenchi ordinati, forniscono agli sviluppatori di applicazioni un meccanismo per l'aggiunta di informazioni al Registro di sistema che verrà restituito per un tipo specifico di elemento. Analogamente, le matrici di associazioni consentono agli sviluppatori di applicazioni di aggiungere informazioni al Registro di sistema per un gruppo specifico di elementi quando tali elementi vengono registrati in una posizione più generale. Questa logica informa la decisione sulla posizione più appropriata nel Registro di sistema per archiviare informazioni sugli Shell elementi.

In un sistema Windows predefinito un file di .jpg ha la matrice di associazione seguente:

  • HKEY_CLASSES_ROOT\ jpgfile
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.jpg
  • HKEY_CLASSES_ROOT\'immagine
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects

Per informazioni sulla registrazione di matrici di associazioni, vedere Registrazione dell'applicazione.

Esecuzione di query su matrici di associazioni

Sono Shell disponibili API per recuperare informazioni da un intervallo di sottochiavi del Registro di sistema, dalla sottochiave del Registro di sistema più specifica a un superset delle informazioni in tutte le sottochiavi del Registro di sistema.

L'uso più comune di una matrice di associazioni consiste nell'eseguire una query per un singolo valore restituito Shell dall'elemento più specifico nella matrice con le informazioni richieste. Nell'esempio di codice seguente viene illustrato come eseguire questa operazione.

IQueryAssociations *pqa;

// pShellItem is assumed to be an existing IShellItem object.
hr = pShellItem->BindToHandler(NULL, BHID_AssociationArray, IID_PPV_ARGS(&pqa));
if (SUCCEEDED(hr))
{
    wchar_t szValue[256];
    DWORD cbValue = sizeof(szValue);      // Count of bytes in the array

    hr = pqa->GetData(0, ASSOCDATA_VALUE, L"InfoTip", szValue, &cbValue);
    if (SUCCEEDED(hr))
    {
        // The "InfoTip" value is used to compute the infotip string from
        // properties of an item.
    }
    pqa->Release();
}

Le API seguenti possono essere usate per eseguire query su una matrice di associazioni o per costruire una matrice di associazioni IQueryAssociations oggetto su cui è possibile eseguire query:

Utilizzo di matrici di associazioni per un'origine dati specifica Shell

Ogni Shell origine dati definisce la matrice di associazione per i relativi elementi. La definizione di una matrice di associazioni è in genere una funzione del tipo di elemento. Shell gli implementatori dell'origine dati devono definire e documentare le matrici di associazione per consentire alle applicazioni di estendere il comportamento di tali tipi, ad esempio per la registrazione di verbi o altre informazioni. Le applicazioni possono estendere il comportamento degli elementi in base all'aggiunta di dati alle sottochiavi della matrice di associazioni, ad esempio l'aggiunta di verbi per gli elementi.

L'origine dati del file system compila una matrice di associazione per i file in base alle seguenti sottochiavi del Registro di sistema e ai ProgID speciali:

  • Se il file ha un ProgID registrato, viene usato HKEY_CLASSES_ROOT\ ProgID. In caso contrario, viene usato HKEY_CLASSES_ROOT\ sconosciuto.

  • L'estensione del nome file viene registrata in HKEY_CLASSES_ROOT\SystemFileAssociations\fileExtension sottochiave.

  • Nella tabella seguente sono illustrati i ProgID speciali.

    ProgID speciale Descrizione
    HKEY_CLASSES_ROOT\* Tutti i file (non cartelle)
    \ HKEY_CLASSES_ROOTAllFilesystemObjects File e cartelle del file system
    \ HKEY_CLASSES_ROOTDirectory Cartelle del file system
    cartella HKEY_CLASSES_ROOT\ Shell contenitori

     

Shell Matrici di associazioni origine dati

L'elenco seguente rappresenta alcune matrici di associazioni dell'archivio Shell dati che possono essere usate ai fini descritti in questo argomento:

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects
  • \ HKEY_CLASSES_ROOTKind.Document
  • HKEY_CLASSES_ROOT\risultati
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.docx
  • HKEY_CLASSES_ROOT\word.Document.12

Shell Le matrici di associazione dell'origine dati che possono essere usate per DBFolder (un Shell archivio dati che rappresenta gli elementi nei risultati della ricerca e nelle viste basate su query) sono i seguenti:

  • Unità
  • Rete
  • RegItems
  • Esempi:
    • ContentView
    • Verbi

Altre matrici di associazioni comuni includono Folder e Stampanti.

Risorse aggiuntive

registrazione dell'applicazione

tipi di file

funzionamento delle associazioni di file

visualizzazione contenuto per tipo di file o tipo

di verifica del tipo di file

gestori di tipi di file

identificatori programmatici

tipi percepiti