Tableaux d’association

Un tableau d’association est une liste ordonnée d’emplacements de Registre utilisés pour stocker des informations sur un type d’élément, y compris les gestionnaires, les verbes et d’autres attributs tels que l’icône et le nom complet du type. L’interpréteur de commandes utilise des tableaux d’association pour interroger un ensemble prédéfini d’emplacements de Registre pouvant contenir des informations sur un élément Shell.

Cette rubrique est organisée comme suit :

À propos des tableaux d’association

Un tableau d’association est une liste ordonnée d’emplacements de Registre qui contiennent des informations sur un type d’élément, y compris les gestionnaires, les verbes et d’autres attributs tels que l’icône et le nom complet du type. Ces informations sur le type d’élément peuvent être inscrites à différents niveaux de spécificité. Par exemple, vous pouvez inscrire un verbe qui s’affiche uniquement pour un type de fichier spécifique (par exemple, .jpg), pour tous les éléments avec le même System.Kind (par exemple, System.kind = image) ou pour tous les éléments.

L’interpréteur de commandes utilise des tableaux d’association pour interroger un ensemble prédéfini d’emplacements de Registre qui peuvent potentiellement contenir des informations sur l’élément. Les API de tableau d’association peuvent être utilisées pour récupérer à partir de la sous-clé de Registre une valeur unique qui contient les informations demandées, cette valeur provenant de la première entrée du tableau qui la fournit. Par exemple, la valeur d’icône par défaut est récupérée de cette façon. Le tableau d’association peut également être utilisé pour récupérer un ensemble de valeurs stockées dans les sous-clés de Registre. Par exemple, la liste des verbes est générée à partir de ces verbes inscrits sous toutes les sous-clés.

Une fois que l’interpréteur de commandes interroge un ensemble prédéfini d’emplacements de Registre pour obtenir des informations sur un élément Shell, il place les emplacements du Registre dans un tableau, de l’emplacement le plus spécifique au plus général.

Étant donné que les tableaux d’association sont des listes ordonnées, ils fournissent aux développeurs d’applications un mécanisme permettant d’ajouter des informations au Registre qui seront retournées pour un type spécifique d’élément. De même, les tableaux d’association permettent aux développeurs d’applications d’ajouter des informations au registre pour un groupe spécifique d’éléments lorsque ces éléments sont inscrits à un emplacement plus général. Cette logique vous informe sur l’emplacement le plus approprié dans le Registre pour stocker des informations sur les éléments Shell.

Sur un système Windows par défaut, un fichier .jpg a le tableau d’association suivant :

  • \ HKEY_CLASSES_ROOT jpgfile
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.jpg
  • \ HKEY_CLASSES_ROOT Image
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects

Pour plus d’informations sur l’inscription de tableaux d’association, consultez Inscription des applications.

Interrogation de tableaux d’association

Il existe des API Shell pour récupérer des informations à partir d’une plage de sous-clés de Registre, de la sous-clé de Registre la plus spécifique à un sur-ensemble d’informations sur toutes les sous-clés de Registre.

L’utilisation la plus courante d’un tableau d’association consiste à interroger une valeur unique que l’interpréteur de commandes retourne à partir de l’élément le plus spécifique du tableau qui contient les informations demandées. L’exemple de code suivant montre comment procéder.

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();
}

Les API suivantes peuvent être utilisées pour interroger un tableau d’association ou pour construire un objet IQueryAssociations de tableau d’association qui peut être interrogé :

Utilisation de tableaux d’association pour une source de données shell particulière

Chaque source de données Shell définit le tableau d’association pour ses éléments. La définition d’un tableau d’association est généralement une fonction du type d’élément. Les implémenteurs de sources de données shell doivent définir et documenter les tableaux d’association pour permettre aux applications d’étendre le comportement de ces types, par exemple pour inscrire des verbes ou d’autres informations. Les applications peuvent étendre le comportement des éléments en fonction de l’ajout de données aux sous-clés du tableau d’association, comme l’ajout de verbes pour les éléments.

La source de données du système de fichiers crée un tableau d’association pour les fichiers en fonction des sous-clés de Registre suivantes et des ProgID spéciaux :

  • Si le fichier a un ProgID inscrit, HKEY_CLASSES_ROOT\ProgID est utilisé. Sinon , HKEY_CLASSES_ROOT\Inconnu est utilisé.

  • L’extension de nom de fichier est inscrite sous HKEY_CLASSES_ROOT\ sous-cléSystemFileAssociations.fileExtension\.

  • Les progID spéciaux sont indiqués dans le tableau suivant.

    ProgID spécial Description
    HKEY_CLASSES_ROOT\* Tous les fichiers (non-dossiers)
    \ HKEY_CLASSES_ROOT AllFilesystemObjects Fichiers et dossiers de système de fichiers
    \ HKEY_CLASSES_ROOT Répertoire Dossiers de système de fichiers
    \ HKEY_CLASSES_ROOT Dossier Conteneurs Shell

     

Tableaux d’association de source de données Shell

La liste suivante représente certains des tableaux d’association de magasins de données Shell qui peuvent être utilisés aux fins décrites dans cette rubrique :

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects
  • \ HKEY_CLASSES_ROOT Kind.Document
  • \ HKEY_CLASSES_ROOT Résultats
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.docx
  • \ HKEY_CLASSES_ROOT Word. Document.12

Les tableaux d’association de sources de données Shell qui peuvent être utilisés pour DBFolder (un magasin de données Shell qui représente des éléments dans les résultats de recherche et les vues basées sur les requêtes) sont les suivants :

  • Lecteurs
  • Réseau
  • RegItems
  • Exemples :
    • ContentView
    • Verbes et adverbes

Les autres tableaux d’association courants incluent Dossier et Imprimantes.

Ressources supplémentaires

Inscription de l’application

Types de fichiers

Fonctionnement des associations de fichiers

Affichage de contenu par type de fichier ou par type de fichier

Vérificateur de type de fichier

Gestionnaires de types de fichiers

Identificateurs programmatiques

Types perçus