УЧЕБНИК ПО АВТОУСТАНОВКЕ WINDOWS

       

Типы параметров реестра


    Типов параметров в реестре несколько. Самый простой и распространённый - тип REG_SZ. Это тип данных string. Он является типом по умолчанию, если не указывать флаг типа параметра. Кроме того, существуют REG_DWORD (тип данных DWORD), REG_BINARY (тип двоичных данных), интересный абстрактный тип REG_EXPAND_SZ (тип string, поддерживающий подмену имён системных переменных их значениями) и, наконец, REG_MULTI_SZ, поддерживающий несколько строк.



ID типа Тип параметра Пример
FLG_ADDREG_BINVALUETYPE 1 HKLM,"%path%","Binary",1,72,00,00,00
FLG_ADDREG_NOCLOBBER 2 ---
FLG_ADDREG_DELVAL 4 HKLM,"%path%","Empty_parameter",4,"any_value-this is deleted"
FLG_ADDREG_APPEND 8 HKLM,"%path%","Close_Multistring_parameter",8,"string"
FLG_ADDREG_KEYONLY 10 HKLM,"%path%","OnlyKey",10,"test"
FLG_ADDREG_OVERWRITEONLY 20 HKLM,"%path%","OnlyKey",20,"only_if_exist"
FLG_ADDREG_TYPE_MASK 0xFFFF0000 ---
FLG_ADDREG_TYPE_SZ HKLM,"%path%","REG_SZ", ,"string only"
FLG_ADDREG_TYPE_MULTI_SZ 10000 HKLM,"%path%","Multistring_parameter",0x00010000,"string"
FLG_ADDREG_TYPE_EXPAND_SZ 20000 HKLM,"%path%","REG_EXPAND_SZ",0x00020000,"other string"
FLG_ADDREG_TYPE_BINARY ---
FLG_ADDREG_TYPE_DWORD 0x00010000

0x10001

65537

HKLM,"%path%","DWORD",0x00010000,16

HKLM,"%path%","DWORD",0x10001,96

HKLM,"%path%","DWORD2",65537,1

FLG_ADDREG_TYPE_NONE --- ---

    В каждом ключе всегда есть один параметр без имени типа REG_SZ - думается, реестр MS Windows не терпит пустых ключей. Этот параметр имеет видимое название "По умолчанию" и довольно активно используется в ключах, содержащих мало параметров. Можно сказать, это самый используемый параметр. Чтобы изменить его значение через INF-скрипт, нужно опустить имя параметра, как показано на этом примере:


HKLM,"%path%",,,"value_in_default_parameter"

Этот параметр обычно имеет тип REG_SZ, но это допустимо изменять.

    В строковый параметр типа REG_ADVANCED_SZ Вы можете записывать системные переменные, которые будут подменяться текущими значениями при обращениях к ним программ. Большинство программ не различает параметры REG_SZ и REG_ADVANCED_SZ. К примеру, если Вы укажете в параметре типа REG_ADVANCED_SZ переменную %USERPROFILE%, любая программа посчитает этот параметр как параметр типа REG_SZ, содержащий реальный путь к каталогу профиля текущего пользователя, например C:\Winnt\Profiles\Administrator.

    Мультистроковый параметр типа REG_MULTI_SZ позволяет добавлять каждый раз по одной строке данных. Это применяется, например, в формировании заданий по замещению или удалению после перезагрузки файлов, использующихся системой на данный момент. Для того, чтобы записать значение параметра этого типа после внесения всех строк, нужно добавить ещё раз этот параметр, указав закрывающий тип 8.Ниже приведён пример INF-скрипта, добавляющего в реестр параметры всех типов:

[Version]

Signature="$CHICAGO$"

SetupClass=BASE

[DefaultInstall]

AddReg=adr.types

[adr.types]

HKLM,"%Key%","Binary",1,72,00,00,00

HKLM,"%Key%","DWORD",0x10001,64

HKLM,"%Key%","REG_SZ",,"string only"

HKLM,"%Key%",,,"This is value of default parameter"

HKLM,"%Key%","REG_EXPAND_SZ",0x00020000,"Current user name: %USERNAME%"

HKLM,"%Key%","REG_MULTI_SZ",0x00010000,"first string"

HKLM,"%Key%","REG_MULTI_SZ",0x00000008,"second string"

HKLM,"%Key%","",,""

HKLM,"%Key%","",,""

HKLM,"%Key%","",,""

HKLM,"%path%","DWORD2",65537,1 HKLM,"%path%","REG_SZ2",FLG_ADDREG_TYPE_EXPAND_SZ,"string only" HKLM,"%path%",,2,"this is default value" HKLM,"%path%","advanced",,"this is test value" HKLM,"%path%","REG_MULTI_SZ",0x00010000,"one string"

[strings]

Key="Software\Company_Name\Program_Name"


Содержание раздела