Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Массив ассоциаций — это упорядоченный список расположений реестра, используемых для хранения сведений о типе элемента, включая обработчики, команды и другие атрибуты, такие как значок и отображаемое имя типа. Массивы Shell ассоциаций используются для запроса предопределенного набора расположений реестра, которые могут содержать сведения об элементе Shell .
Этот раздел организован следующим образом:
- об массивах ассоциаций
- массивы сопоставлений
- Работа с массивами ассоциаций для определенного Shell источника данных
- дополнительные ресурсы
- связанные разделы
Сведения о массивах ассоциаций
Массив ассоциаций — это упорядоченный список расположений реестра, содержащих сведения о типе элемента, включая обработчики, команды и другие атрибуты, такие как значок и отображаемое имя типа. Эта информация о типе элемента может быть зарегистрирована на различных уровнях конкретности. Например, можно зарегистрировать verb объект, который будет отображаться только для определенного типа файла (например, .jpg), или для всех элементов с одинаковыми элементами System.Kind (например, System.kind = рисунок) или для всех элементов.
Массивы Shell ассоциаций используются для запроса предопределенного набора расположений реестра, которые могут содержать сведения об элементе. API массива ассоциаций можно использовать для получения из подраздела реестра одного значения, содержащего запрошенные сведения, с таким значением, поступающим из первой записи в массиве, который предоставляет его. Например, значение значка по умолчанию извлекается таким образом. Массив ассоциаций также можно использовать для получения набора значений, хранящихся в подразделах реестра. Например, список команд создается из этих команд, зарегистрированных во всех вложенных разделах.
Shell После того как запросы предопределенного набора расположений реестра для получения сведений об Shell элементе помещают расположения реестра в массив, от наиболее конкретного расположения до наиболее общего.
Так как массивы сопоставлений упорядочены, они предоставляют разработчикам приложений механизм для добавления сведений в реестр, которые будут возвращены для определенного типа элемента. Аналогичным образом массивы ассоциаций позволяют разработчикам приложений добавлять сведения в реестр для определенной группы элементов, когда эти элементы регистрируются в более общем расположении. Эта логика сообщает вашему решению о наиболее подходящем расположении в реестре для хранения сведений о Shell элементах.
В системе Windows по умолчанию .jpg-файл имеет следующий массив сопоставлений:
- \ HKEY_CLASSES_ROOTjpgfile
- \ HKEY_CLASSES_ROOTSystemFileAssociations\.jpg
- HKEY_CLASSES_ROOT\изображения
- HKEY_CLASSES_ROOT\*
- \ HKEY_CLASSES_ROOTAllFilesystemObjects
Сведения о регистрации массивов ассоциаций см. в регистрации приложений.
Запросы массивов ассоциаций
Существуют Shell API-интерфейсы для получения сведений из диапазона подразделов реестра, от наиболее конкретного подраздела реестра до надмножества сведений во всех подразделах реестра.
Наиболее распространенное использование массива ассоциаций заключается в запросе к одному значению, возвращаемого Shell из наиболее конкретного элемента массива с запрошенной информацией. В следующем примере кода показано, как это сделать.
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, который можно запросить:
- AssocCreate (до Windows Vista)
- AssocCreateForClasses
- AssocQueryString
Работа с массивами ассоциаций для определенного Shell источника данных
Каждый Shell источник данных определяет массив ассоциаций для его элементов. Определение массива ассоциаций обычно является функцией типа элемента. Shell Реализующие источники данных должны определять и документировать массивы ассоциаций, чтобы приложения могли расширить поведение этих типов, например для регистрации глаголов или других сведений. Приложения могут расширить поведение элементов на основе добавления данных в вложенные ключи массива ассоциаций, таких как добавление команд для элементов.
Источник данных файловой системы создает массив сопоставлений для файлов на основе следующих подразделов реестра и специальных идентификаторов ProgID:
Если файл имеет зарегистрированный progID, используется HKEY_CLASSES_ROOT\ProgID. В противном случае используется HKEY_CLASSES_ROOT\Неизвестный.
Расширение имени файла зарегистрировано в подразделе HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension.
Специальные идентификаторы progID показаны в следующей таблице.
Специальный progID Описание HKEY_CLASSES_ROOT\* Все файлы (не папки) \ HKEY_CLASSES_ROOTAllFilesystemObjects Папки файлов и файловой системы HKEY_CLASSES_ROOT\каталогов Папки файловой системы папки HKEY_CLASSES_ROOT\ Shell Контейнеры
Shell Массивы сопоставлений источников данных
В следующем списке представлены некоторые Shell массивы сопоставлений хранилища данных, которые можно использовать в целях, описанных в этом разделе:
- HKEY_CLASSES_ROOT\*
- \ HKEY_CLASSES_ROOTAllFilesystemObjects
- \ HKEY_CLASSES_ROOTKind.Document
- результатов HKEY_CLASSES_ROOT\
- \ HKEY_CLASSES_ROOTSystemFileAssociations\.docx
- \ HKEY_CLASSES_ROOTWord.Document.12
Shell Массивы сопоставлений источников данных, которые можно использовать для DBFolder ( Shell хранилище данных, представляющее элементы в результатах поиска и представлениях на основе запросов), приведены ниже.
- Диски
- Сеть
- RegItems
- Примеры:
- ПросмотрКонтента
- Глаголы
К другим общим массивам сопоставлений относятся папки и принтеры.
Дополнительные ресурсы
- Сведения о создании Shell хранилища данных см. в разделе "Реализация базовых интерфейсов объектов папок".
Связанные разделы