Типы параметров реестра
Типов параметров в реестре несколько. Самый простой и распространённый - тип 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"
Содержание раздела