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 usa matrici di associazioni per eseguire query su un set predefinito di percorsi del Registro di sistema che potrebbero contenere informazioni su un elemento della shell.

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 verbo 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 shell esegue una query su un set predefinito di percorsi del Registro di sistema per informazioni su un elemento della shell, 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 elementi della shell.

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

  • HKEY_CLASSES_ROOT\ jpgfile
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg
  • HKEY_CLASSES_ROOT\'immagine
  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects

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

Esecuzione di query su matrici di associazioni

Sono disponibili API shell 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 dalla 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 della shell specifica

Ogni origine dati shell definisce la matrice di associazione per i relativi elementi. La definizione di una matrice di associazioni è in genere una funzione del tipo di elemento. Gli implementatori dell'origine dati della shell 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_ROOT\AllFilesystemObjects File e cartelle del file system
    HKEY_CLASSES_ROOT\Directory Cartelle del file system
    cartella HKEY_CLASSES_ROOT\ Contenitori della shell

     

Matrici di associazioni dell'origine dati shell

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

  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects
  • HKEY_CLASSES_ROOT\Kind.Document
  • HKEY_CLASSES_ROOT\risultati
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.docx
  • HKEY_CLASSES_ROOT\word.Document.12

Le matrici di associazione dell'origine dati shell che possono essere usate per DBFolder (un archivio dati shell 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