Массивы ассоциаций

Массив сопоставлений — это упорядоченный список расположений реестра, используемых для хранения сведений о типе элемента, включая обработчики, команды и другие атрибуты, такие как значок и отображаемое имя типа. Оболочка использует массивы сопоставлений для запроса предопределенного набора расположений реестра, которые могут содержать сведения об элементе оболочки.

Эта тема организована следующим образом:

Сведения о массивах сопоставлений

Массив сопоставлений — это упорядоченный список расположений реестра, содержащих сведения о типе элемента, включая обработчики, команды и другие атрибуты, такие как значок и отображаемое имя типа. Эти сведения о типе элемента можно регистрировать на разных уровнях специфичности. Например, можно зарегистрировать команду, которая будет отображаться только для определенного типа файла (например, .jpg) или для всех элементов с одинаковым System.Kind (например, System.kind = picture) или для всех элементов.

Оболочка использует массивы сопоставлений для запроса предопределенного набора расположений реестра, которые могут содержать сведения об элементе. API массива сопоставлений можно использовать для получения из подраздела реестра одного значения, содержащего запрошенные сведения, при этом это значение поступает из первой записи в массиве, который его предоставляет. Например, таким образом извлекается значение значка по умолчанию. Массив сопоставлений также можно использовать для получения набора значений, хранящихся в подразделах реестра. Например, список команд создается из тех команд, которые зарегистрированы во всех подразделах.

После того как оболочка запрашивает предопределенный набор расположений реестра для получения сведений об элементе оболочки, она помещает расположения реестра в массив в порядке от наиболее конкретного расположения до самого общего.

Так как массивы сопоставлений являются упорядоченными списками, они предоставляют разработчикам приложений механизм для добавления сведений в реестр, которые будут возвращены для определенного типа элемента. Аналогичным образом, массивы сопоставлений позволяют разработчикам приложений добавлять в реестр сведения для определенной группы элементов, когда эти элементы регистрируются в более общем расположении. Эта логика информирует вас о наиболее подходящем расположении в реестре для хранения сведений об элементах оболочки.

В системе Windows по умолчанию файл .jpg имеет следующий массив сопоставлений:

  • \ HKEY_CLASSES_ROOT jpgfile
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.jpg
  • \ HKEY_CLASSES_ROOT Изображения
  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects

Сведения о регистрации массивов ассоциаций см. в разделе Регистрация приложений.

Запрос массивов сопоставлений

Существуют API оболочки для получения сведений из диапазона подразделов реестра, от наиболее конкретного подраздела реестра до надмножества информации во всех подразделах реестра.

Чаще всего массив сопоставлений используется для запроса одного значения, возвращаемого оболочкой из наиболее конкретного элемента массива, который содержит запрошенные сведения. В следующем примере кода показано, как это сделать.

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

Следующие API можно использовать для запроса массива сопоставлений или создания объекта IQueryAssociations массива ассоциаций , который можно запрашивать:

Работа с массивами сопоставлений для определенного источника данных оболочки

Каждый источник данных оболочки определяет массив сопоставлений для своих элементов. Определение массива связей обычно является функцией типа элемента. Разработчики источников данных оболочки должны определять и документировать массивы ассоциаций, чтобы приложения могли расширять поведение этих типов, например регистрировать команды или другую информацию. Приложения могут расширять поведение элементов на основе добавления данных в подразделы массива ассоциаций, например путем добавления глаголов для элементов.

Источник данных файловой системы создает массив сопоставлений для файлов на основе следующих подразделов реестра и специальных идентификаторов ProgID:

  • Если файл имеет зарегистрированный Идентификатор ProgID, используется HKEY_CLASSES_ROOT\ProgID . В противном случае используется HKEY_CLASSES_ROOT\Неизвестно .

  • Расширение имени файла регистрируется в подразделе HKEY_CLASSES_ROOT\SystemFileAssociations.fileExtension\.

  • В следующей таблице приведены специальные идентификаторы ProgID.

    Специальный идентификатор progID Описание
    HKEY_CLASSES_ROOT\* Все файлы (не папки)
    \ HKEY_CLASSES_ROOT AllFilesystemObjects Файлы и папки файловой системы
    \ HKEY_CLASSES_ROOT Каталог Папки файловой системы
    \ HKEY_CLASSES_ROOT Папку Контейнеры оболочки

     

Массивы сопоставлений источников данных оболочки

В следующем списке представлены некоторые массивы сопоставлений хранилища данных оболочки, которые можно использовать для целей, описанных в этом разделе:

  • HKEY_CLASSES_ROOT\*
  • \ HKEY_CLASSES_ROOT AllFilesystemObjects
  • \ HKEY_CLASSES_ROOT Kind.Document
  • \ HKEY_CLASSES_ROOT Результаты
  • \ HKEY_CLASSES_ROOT SystemFileAssociations\.docx
  • \ HKEY_CLASSES_ROOT Word. Документ.12

Ниже перечислены массивы сопоставлений источников данных оболочки, которые можно использовать для DBFolder (хранилище данных оболочки, представляющее элементы в результатах поиска и представлениях на основе запросов).

  • Диски
  • Сеть
  • RegItems
  • Примеры:
    • ContentView
    • Команды

Другие распространенные массивы сопоставлений включают Folder и Printers.

Дополнительные ресурсы

Регистрация приложения

Типы файлов

Принцип работы сопоставлений файлов

Просмотр содержимого по типу или типу файла

Средство проверки типов файлов

Обработчики типов файлов

Программные идентификаторы

Воспринимаемые типы