Книга: Недокументированные и малоизвестные возможности Windows XP
Создание ветвей реестра
Разделы на этой странице:
Создание ветвей реестра
Например, в начальном блоке может находиться ключевое слово AddReg, указывающее на блоки INF-файла, описывающие добавляемые или изменяемые параметры и ветви реестра. Рассмотрим формат этого ключевого слова на примере листинга 15.1. В данном листинге приведен пример редактирования DWORD-параметра AutoRun из ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom. В примере этому параметру присваивается значение 0, то есть отключается возможность автоматического запуска дисков.
Листинг 15.1. Редактирование параметров реестра
[version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=AR_off
[AR_off]
HKLM, "SYSTEMCurrentControlSetServicesCdrom","Autorun",0x10001,0
Как видно из листинга 15.1, в блоке для редактирования ветвей реестра (в ключевом слове AddReg можно через запятую указать несколько блоков для редактирования ветвей реестра) описываются сами ветви реестра и параметры, в них изменяемые. Формат их описания таков:
«корневой раздел», «ветвь реестра», «параметр», «флаг типа параметра», «новое значение параметра»
Рассмотрим этот формат подробнее.
? Корневой раздел — здесь содержится ключевое слово, определяющее корневой раздел реестра, в котором расположен изменяемый параметр. Возможны следующие значения:
• HKCU — определяет корневой раздел HKEY_CURRENT_USER;
• HKLM — HKEY_LOCAL_MACHINE;
• HKU — HKEY_USERS;
• HKCR — HKEY_CLASSES_ROOT;
• HKCC — HKEY_CURRENT_CONFIG.
? Ветвь реестра — определяет остальной путь к ветви реестра, включающей в себя изменяемый параметр. Если ветвь реестра содержит пробелы, то ее нужно взять в кавычки.
? Параметр — указывает изменяемый параметр реестра. Если название параметра содержит пробелы, то его нужно взять в кавычки. Если название параметра указано не будет, то будет изменено значение параметра (По умолчанию).
? Флаг — определяет как тип параметра, так и в некоторых случаях дополнительные сведения о том, что же нужно делать с аналогичным параметром в реестре, если он уже существует. Флаг представляет собой битовую маску. Рассмотрим некоторые состояния этой битовой маски.
• 0x00000000 — тип REG_SZ.
• 0x00000001 — REG_BINARY.
• 0x00010000 — REG_MULTI_SZ.
• 0x00020000 — REG_EXPAND_SZ.
• 0x00010001 — DWORD.
• 0x00020001 — NONE.
• 0x00000002 — если изменяемый параметр уже существует в реестре, то изменять его значение запрещено.
• 0x00000004 — удалить раздел или параметр из реестра. Иными словами, в INF-файле можно обойтись даже без специального ключевого слова для описания блока удаления, который будет рассмотрен далее. Удалить параметр можно и с помощью блока редактирования параметров.
• 0x00000008 — только для параметров REG_MULTI_SZ-типа. Указанное в строке редактирования параметра значение не заменяет существующее значение, а добавляется к существующему значению параметра.
• 0x00000010 — создать раздел, но игнорировать создание или редактирование указанного в строке параметра. Вообще, если посмотреть на возможные значения данного флага, то можно подумать, что Microsoft намеревается создать целый язык сценария с условными значениями и переменными для INF-файла. Иначе зачем вообще нужны два только что рассмотренных значения флага, если аналогичные действия можно выполнить и без их использования?
• 0x00000020 — изменить значение параметра, только если данный параметр уже существует в реестре.
? Значение параметра — определяет новое значение параметра.
Теперь рассмотрим пример INF-файла, добавляющего в реестр значения параметров. Пример, отображенный в листинге 15.2, является частью стандартного INF-файла Windows XP, предназначенного для настройки отключения автозапуска дисков для разных типов приводов компакт-дисков. В примере параметру Autorun присваивается значение только в том случае, если он не существует в реестре. А значение параметра AutoRunAlwaysDisable, имеющего тип REG_MULTI_SZ, формируется в несколько приемов, чтобы обеспечить хранение значений параметра в разных строках.
Листинг 15.2. Пример использования флагов для редактирования параметров реестра
[version]
Signature="$CHICAGO$"
[DefaultInstall]
AddReg=autorun_addreg
[autorun_addreg]
HKLM,"SystemCurrentControlSetServicescdrom","AutoRun",0x00010003,1
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "NEC MBR-7 "
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "NEC MBR-7.4 "
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CHANGR DRM-1804X"
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CD-ROM DRM-6324X"
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CD-ROM DRM-624X "
HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "TORiSAN CD-ROM CDR_C36"
- Удаление ветвей реестра
- Создание ярлыка файл в меню Пуск
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- 7.4.2. Создание собственного LiveCD
- Создание пользователя и группы на рабочей станции
- Создание корня документа:
- Создание многофайловой базы данных