Функция RegSetValueEx

Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" ( _
        ByVal hKey As Long,  _
        ByVal lpValueName As String,  _
        ByVal Reserved As Long,  _
        ByVal dwType As Long,  _
        lpData As Any,  _
        ByVal cbData As Long) As Long

RegSetValueEx создает параметр в разделе реестра. Если параметр не существует, то он будет создан. Параметр может быть любым допустимым типом данных реестра. Если вы устанавливаете строковые или числовые значения, то используйте ключевое слово ByVal перед параметром lpData. Остальные значения (например, байтовые) не нуждаются в этом слове.

Возвращаемое значение

В случае успеха функция возвращает 0, в случае ошибки возвращается код ошибки.

Параметры

hKey
Описатель открываемого раздела реестра или один из следующих флагов, которые идентифицируют ветви, в которых будут созданы новые разделы:
Const HKEY_CLASSES_ROOT = &H80000000
Ветвь HKEY_CLASSES_ROOT
Const HKEY_CURRENT_CONFIG = &H80000005
Ветвь HKEY_CURRENT_CONFIG
Const HKEY_CURRENT_USER = &H80000001
Ветвь HKEY_CURRENT_USER
Const HKEY_DYN_DATA = &H80000006
Windows 95\98: Ветвь HKEY_DYN_DATA
Const HKEY_LOCAL_MACHINE = &H80000002
Ветвь HKEY_LOCAL_MACHINE
Const HKEY_PERFORMANCE_DATA = &H80000004
Windows NT\2000: Ветвь HKEY_PERFORMANCE_DATA
Const HKEY_USERS = &H80000003
Ветвь HKEY_USERS
lpValueName
Значение параметра. Если это пустая строка, то функция запишет в реестр значение не присвоено или по умолчанию
Reserved
Зарезервированный параметр. Установлен равным 0
dwType
Один из следующих флажков, идентифицирующих тип данных для записи в системном реестре:
REG_BINARY = 3
Нетекстовая последовательность байтов
REG_DWORD = 4
Аналогично REG_DWORD_LITTLE_ENDIAN
REG_DWORD_BIG_ENDIAN = 5
32-разрядное целое число, сохраненное в формате big-endian
REG_DWORD_LITTLE_ENDIAN = 4
32-разрядное целое число, сохраненное в формате little-endian
REG_EXPAND_SZ = 2
Строка с нулевым символом в конце, которая содержит нерасширенные переменные среды
REG_LINK = 6
A Unicode symbolic link.
REG_MULTI_SZ = 7
Ряд строк, разделенных нулевым символом и заканчивающийся двумя нулевыми символами
REG_NONE = 0
Никакой тип данных
REG_RESOURCE_LIST = 8
Список ресурсов в карте ресурса
REG_SZ = 1
Строка с завершающим нулевым символом
lpData
Число, строка или другие данные для записи в системном реестре
cbData
Размер в байтах данных, записываемых в системный реестр

Пример

' Создаем раздел HKEY_CURRENT_USER\Software\Russian_Project\Samples\Config
' Затем создаем параметр "username" в этом разделе
' и присваиваем ему значение "Алексадр"

' Описатель раздела, который мы
' создаем или открываем
Dim hregkey As Long
Dim secattr As SECURITY_ATTRIBUTES
Dim subkey As String ' название подраздела
Dim neworused As Long ' Получим 1, если новый раздел был создан или 2, если существующий раздел был открыт
Dim stringbuffer As String ' строка, помещаемая в реестр
Dim retval As Long ' возвращаемое значение

subkey = "Software\Russian_Project\Samples\Config"
secattr.nLength = Len(secattr) ' размер структуры
secattr.lpSecurityDescriptor = 0 ' уровень безопасности по умолчанию
secattr.bInheritHandle = True ' значение по умолчанию для этой установки

' Создаем или открываем раздел
retval = RegCreateKeyEx(HKEY_CURRENT_USER, subkey, 0, "", 0, KEY_WRITE, secattr, hregkey, neworused)
If retval <> 0 Then
  Debug.Print "Ошибка при открытии или создания раздела реестра - выходим из программы"
  End ' завершаем программу
End If

' Записываем строковой параметр в реестр
stringbuffer = "Александр" & vbNullChar ' обратите внимание на добавляемый нулевой символ
retval = RegSetValueEx(hregkey, "username", 0, REG_SZ, ByVal stringbuffer, Len(stringbuffer))

' Закрываем раздел реестра
retval = RegCloseKey(hregkey)

Смотри также

RegDeleteValue, RegQueryValueEx

Категория

Реестр