Поделиться через


Таблица реестра

Таблица Реестр содержит сведения о реестре, которые приложение должно задать в системном реестре.

Таблица Registry содержит следующие столбцы.

Столбец Type Ключ Допускает значения NULL
Реестр Идентификатор Да N
Root Целое число N Нет
Ключ RegPath N Нет
Имя Форматированные Нет Да
Значение Форматированные Нет Да
Компонент_ Идентификатор N Нет

 

Столбцы

Реестра

Первичный ключ, используемый для идентификации записи реестра.

Корневой

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

Константа Шестнадцатеричный Decimal Корневой ключ
(нет) — 0x001 -1 Если это установка для каждого пользователя, значение реестра записывается в HKEY_CURRENT_USER. Если это установка для каждого компьютера, значение реестра записывается в HKEY_LOCAL_MACHINE. Обратите внимание, что установка для каждого компьютера определяется путем установки свойства ALLUSERS значения 1.
msidbRegistryRootClassesRoot 0x000 0 HKEY_CLASSES_ROOT Установщик записывает или удаляет значение из куста HKCU\Software\Classes во время установки в контексте установки на пользователя.
Установщик записывает или удаляет значение из куста HKLM\Software\Classes во время установки для каждого компьютера.
msidbRegistryRootCurrentUser 0x001 1 HKEY_CURRENT_USER
msidbRegistryRootLocalMachine 0x002 2 HKEY_LOCAL_MACHINE
msidbRegistryRootUsers 0x003 3 HKEY_USERS

 

Обратите внимание, что рекомендуется, чтобы записи реестра, записанные в куст HKCU , ссылались на компонент с битом RegistryKeyPath в столбце Атрибуты таблицы Компонент. Это гарантирует, что установщик записывает необходимые записи реестра при наличии нескольких пользователей на одном компьютере.

Ключ

Локализуемый раздел для значения реестра.

Имя

Этот столбец содержит имя значения реестра (локализуемое). Если имеет значение Null, данные, введенные в столбец Значение, записываются в раздел реестра по умолчанию.

Если столбец Value имеет значение Null, строки, показанные в следующей таблице в столбце Имя, имеют особое значение.

Строка Значение
+ Ключ создается при его отсутствии при установке компонента.
- При удалении компонента необходимо удалить ключ со всеми его значениями и подразделами, если он имеется.
* Ключ создается при его отсутствии при установке компонента. Кроме того, при удалении компонента необходимо удалить ключ со всеми его значениями и подразделами, если он имеется.

 

Обратите внимание, что таблица RemoveRegistry должна использоваться при удалении установленного раздела реестра со значениями и подразделами при установке компонента.

Значение

Этот столбец является локализуемым значением реестра. Поле форматировано. Если значение присоединено к одному из следующих префиксов (т. е. #%value), то значение интерпретируется так, как описано в таблице . Обратите внимание, что каждый префикс начинается со знака номера (#). Если значение начинается с двух или более последовательных числовых знаков (#), первый знак #игнорируется, а значение интерпретируется и сохраняется как строка.

Prefix Значение
#x Значение интерпретируется и сохраняется как шестнадцатеричное значение (REG_BINARY).
#% Значение интерпретируется и сохраняется как расширяемая строка (REG_EXPAND_SZ).
# Значение интерпретируется и сохраняется как целое число (REG_DWORD).

 

  • Если значение содержит тильду последовательности [~], то значение интерпретируется как список строк с разделителями NULL (REG_MULTI_SZ). Например, чтобы указать список, содержащий три строки a, b и c, используйте "a[~]b[~]c".
  • Последовательность [~] в значении разделяет отдельные строки и интерпретируется и сохраняется как символ NULL.
  • Если [~] предшествует списку строк, строки должны быть добавлены к любым существующим строкам значений реестра. Если добавляемая строка уже имеется в значении реестра, исходное вхождение строки удаляется.
  • Если [~] следует за концом списка строк, строки должны быть перед любыми существующими строками значений реестра. Если строка в начале уже есть в значении реестра, исходное вхождение строки удаляется.
  • Если [~] находится как в начале, так и в конце или ни в начале, ни в конце списка строк, строки должны заменить все существующие строки значений реестра.
  • В противном случае значение интерпретируется и сохраняется как строка (REG_SZ).

Компонент_

Внешний ключ в первом столбце таблицы Component , ссылающийся на компонент, управляющий установкой значения реестра.

Комментарии

Действия WriteRegistryValues и RemoveRegistryValues в таблицах последовательностей обрабатывают сведения в этой таблице. Сведения об использовании таблиц последовательностей см. в разделе Использование таблицы последовательностей.

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

Обратите внимание, что установщик удаляет раздел реестра после удаления последнего значения или подраздела в разделе. Чтобы предотвратить удаление пустого раздела реестра при удалении, запишите фиктивное значение в разделе, который необходимо сохранить, и введите + в столбце Имя. Если * находится в столбце Имя, при удалении компонента ключ удаляется со всеми его значениями и подразделами.

Настраиваемое действие можно использовать для добавления строк в таблицу реестра во время установки, удаления или восстановления транзакции. Эти строки не сохраняются в таблице Реестра, и информация доступна только во время текущей транзакции. Следовательно, настраиваемое действие должно выполняться в каждой транзакции установки, удаления или восстановления, которая требует наличия сведений в этих дополнительных строках. Настраиваемое действие должно выполняться перед действиями RemoveRegistryValues и WriteRegistryValues в последовательности действий.

Сведения о том, как защитить раздел реестра, см. в разделах Таблица MsiLockPermissionsEx и Таблица LockPermissions.

Проверка

ICE02
ICE03
ICE06
ICE32
ICE38
ICE43
ICE46
ICE49
ICE53
ICE55
ICE57
ICE70
ICE80