Partilhar via


Matrizes de associação

Uma matriz de associação é uma lista ordenada de locais do Registro usados para armazenar informações sobre um tipo de item, incluindo manipuladores, verbos e outros atributos, como o ícone e o nome para exibição do tipo. O Shell usa matrizes de associação para consultar um conjunto predefinido de locais do Registro que podem conter informações sobre um Shell item.

Este tópico está organizado da seguinte forma:

Sobre matrizes de associação

Uma matriz de associação é uma lista ordenada de locais do Registro que contêm informações sobre um tipo de item, incluindo manipuladores, verbos e outros atributos, como o ícone e o nome para exibição do tipo. Essas informações sobre o tipo de item podem ser registradas em diferentes níveis de especificidade. Por exemplo, você pode registrar um verb que aparecerá apenas para um tipo de arquivo específico (como .jpg), ou para todos os itens com o mesmo System.Kind (por exemplo, System.kind = imagem), ou para todos os itens.

O Shell usa matrizes de associação para consultar um conjunto predefinido de locais do Registro que podem conter informações sobre o item. As APIs da matriz de associação podem ser usadas para recuperar da subchave do Registro um único valor que contém as informações solicitadas, com esse valor vindo da primeira entrada na matriz que o fornece. Por exemplo, o valor do ícone padrão é recuperado dessa forma. A matriz de associação também pode ser usada para recuperar um conjunto de valores armazenados nas subchaves do Registro. Por exemplo, a lista de verbos é construída a partir desses verbos que estão registrados em todas as subchaves.

Depois que as Shell consultas um conjunto predefinido de locais do Registro para obter informações sobre um Shell item, ele coloca os locais do Registro em uma matriz em ordem do local mais específico para o mais geral.

Como as matrizes de associação são listas ordenadas, elas fornecem aos desenvolvedores de aplicativos um mecanismo para adicionar informações ao Registro que serão retornadas para um tipo específico de item. Da mesma forma, as matrizes de associação permitem que os desenvolvedores de aplicativos adicionem informações ao registro para um grupo específico de itens quando esses itens são registrados em um local mais geral. Essa lógica informa sua decisão sobre o local mais apropriado no registro para armazenar informações sobre Shell itens.

Em um sistema Windows padrão, um arquivo .jpg tem a seguinte matriz de associação:

  • \ HKEY_CLASSES_ROOTjpgfile
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.jpg
  • HKEY_CLASSES_ROOT\imagem
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects

Para obter informações sobre como registrar matrizes de associação, consulte Application Registration.

Consultando matrizes de associação

Existem Shell APIs para recuperar informações de uma variedade de subchaves do Registro, desde a subchave do Registro mais específica até um superconjunto das informações em todas as subchaves do Registro.

O uso mais comum de uma matriz de associação é consultar um único valor que o Shell retorna do elemento mais específico na matriz que tem as informações solicitadas. O exemplo de código a seguir mostra como fazer isso.

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

As APIs a seguir podem ser usadas para consultar uma matriz de associação ou para construir uma matriz de associação IQueryAssociations objeto que pode ser consultado:

Trabalhando com matrizes de associação para uma fonte de dados específica Shell

Cada Shell fonte de dados define a matriz de associação para seus itens. Definir uma matriz de associação é geralmente uma função do tipo de item. Shell Os implementadores de fonte de dados devem definir e documentar as matrizes de associação para permitir que os aplicativos estendam o comportamento desses tipos, como para registrar verbos ou outras informações. Os aplicativos podem estender o comportamento de itens com base na adição de dados às subchaves da matriz de associação, como a adição de verbos para itens.

A fonte de dados do sistema de arquivos cria uma matriz de associação para arquivos com base nas seguintes subchaves do Registro e ProgIDs especiais:

  • Se o arquivo tiver um ProgID registrado, HKEY_CLASSES_ROOT\ ProgID será usado. Caso contrário, HKEY_CLASSES_ROOT\ desconhecido é usado.

  • A extensão de nome de arquivo está registrada em HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension subchave.

  • ProgIDs especiais são mostrados na tabela a seguir.

    ProgID especial Descrição
    HKEY_CLASSES_ROOT\* Todos os ficheiros (não pastas)
    \ HKEY_CLASSES_ROOTAllFilesystemObjects Arquivos e pastas do sistema de arquivos
    HKEY_CLASSES_ROOT\Diretório Pastas do sistema de arquivos
    HKEY_CLASSES_ROOT\Pasta Shell contentores

     

Shell Matrizes de associação de fonte de dados

A lista a Shell seguir representa algumas das matrizes de associação de armazenamento de dados que podem ser usadas para os fins descritos neste tópico:

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOTAllFilesystemObjects
  • \ HKEY_CLASSES_ROOTTipo.Documento
  • HKEY_CLASSES_ROOT\Resultados
  • \ HKEY_CLASSES_ROOTSystemFileAssociations\.docx
  • \ HKEY_CLASSES_ROOTWord.Document.12

Shell As matrizes de associação de fonte de dados que podem ser usadas para DBFolder (um Shell armazenamento de dados que representa itens em resultados de pesquisa e exibições baseadas em consulta) são as seguintes:

  • Acionamentos
  • Rede
  • RegItems
  • Exemplos:
    • ContentView
    • Verbos

Outras matrizes de associação comuns incluem Pasta e Impressoras.

Recursos adicionais

de Registo de Candidatura

Tipos de arquivo

Como funcionam as associações de arquivos

Visualização de conteúdo por tipo de arquivo ou tipo

Verificador de Tipo de Arquivo

manipuladores de tipo de arquivo

Identificadores programáticos

Tipos percebidos