Таблица SelfReg
Таблица SelfReg содержит сведения о модулях, которые необходимо зарегистрировать самостоятельно. Установщик вызывает функцию DllRegisterServer во время установки модуля; он вызывает DllUnregisterServer во время удаления модуля. Установщик не регистрирует EXE-файлы самостоятельно.
Таблица SelfReg содержит следующие столбцы.
Столбец | Type | Ключ | Допускает значения NULL |
---|---|---|---|
Файл_ | Идентификатор | Да | N |
Стоимость | Целое число | N | Да |
Столбцы
-
Файл_
-
Внешний ключ в первом столбце таблицы File , указывающий модуль, который необходимо зарегистрировать.
-
Стоимость
-
Стоимость регистрации модуля в байтах. Это должно быть не отрицательное число.
Комментарии
Авторам установочных пакетов настоятельно не рекомендуется использовать самостоятельную регистрацию. Вместо этого они должны регистрировать модули путем создания одной или нескольких таблиц, предоставляемых установщиком для этой цели. Дополнительные сведения см. в разделе Группа таблиц реестра. Многие преимущества централизованной службы установщика теряются при самостоятельной регистрации, так как процедуры самостоятельной регистрации, как правило, скрывают важные сведения о конфигурации. Причины, по которым следует избежать самостоятельной регистрации:
- Откат установки с помощью саморегистрированных модулей невозможно безопасно выполнить с помощью DllUnregisterServer , так как невозможно определить, используются ли саморегистрированные ключи другим компонентом или приложением.
- Возможность использования объявления снижается, если регистрация на сервере классов или расширений выполняется в рамках процедур самостоятельной регистрации.
- Установщик автоматически обрабатывает разделы HKCR в таблицах реестра для установки как для пользователя, так и для отдельных компьютеров. Подпрограммы DllRegisterServer в настоящее время не поддерживают понятие ключа HKCR для каждого пользователя.
- Если несколько пользователей используют само зарегистрированное приложение на одном компьютере, каждый пользователь должен установить приложение при первом запуске. В противном случае установщику не удается легко определить, существуют ли соответствующие разделы реестра HKCU.
- DllRegisterServer может быть запрещен доступ к сетевым ресурсам, таким как библиотеки типов, если компонент указан как запуск из источника и указан в таблице SelfReg. Это может привести к сбою установки компонента во время административной установки.
- Саморегистрирующиеся библиотеки DLL более подвержены ошибкам кодирования, так как новый код, необходимый для DllRegisterServer , обычно отличается для каждой библиотеки DLL. Вместо этого используйте таблицы реестра в базе данных, чтобы воспользоваться преимуществами существующего кода, предоставленного установщиком.
- Саморегистрационные библиотеки DLL иногда могут ссылаться на вспомогательные библиотеки DLL, которые отсутствуют или являются неправильной версией. В отличие от этого, установщик может регистрировать библиотеки DLL с помощью таблиц реестра без зависимости от текущего состояния системы.
Примечание
Невозможно указать порядок, в котором установщик регистрирует или отменяет регистрацию саморегистрированных библиотек DLL с помощью действий SelfRegModules и SelfUnRegModules . См . раздел Указание порядка самостоятельной регистрации.
Проверка