Установка значения параметра

Создание ключа

Реестр используется не только операционной системой и большими приложениями. Даже в маленькой программе VBA можно сохранить в реестре требуемые данные. При этом, наверное, понадобится создать ключ, выбрав и его хранения любой из основных ключей.

Функция RegCreateKey () используется для создания ключа реестра. Кроме того, для этого применяется функция CreateRegKeyEx (), которая имеет большее число аргументов, например, параметры, гадающие защиту.

С помощью функции RegCreateKey () можно создать как один, так и структуру из нескольких ключей, например, добавить ключ "NEWKEY" под ключ HKEY_CURRENT_USER, или создать структуру KEYONE\KEYTWO\KEYTHREE под ключом HKEY_CURRENT_USER. В программе показано создание структуры разделов под ключом HKEY_LOCAL_MACHINE.

Программа создания ключей реестра

Public Sub CreateRegistryKeyDemo ()Dim lReturn As LongDim sSubKey As StringDim hSubKeyHandle As LongsSubKey = "SOFTWARE\Использование VBA\Win32 API\Обзор"lReturn = RegCreateKey& (HKEY_LOCAL_MACHINE, sSubKey, _ hSubKeyHandle)End Sub

Для установки значений параметров реестра по умолчанию используется функция RegSetValue (), а для задания величин именованных параметров- функция RegSetValueEx(). Необходимо отметить, что функцию RegSetValueExО можно применять, например, для установки значений именованных параметров ключа, созданного предыдущей программой. В следующей программе показано использование функции RegSeiValue(). Перед установкой значений требуется открыть ключ, под которым находится требуемый параметр. Единственным исключением из этого правила являются параметры реестра, которые хранятся под одним из шести основных ключей (пяти в Windows NT). В этом случае следует задать имя ключа (например, HKEY_LOCAL_MACHINE), а не дескриптор ключа в качестве первого параметра функции RegSetValue ().

Программа требует некоторых пояснений:

Имя параметра и устанавливаемое значение непосредственно передаются в функцию RegSetValueEx ().

Переменная lValueSize задает длину присваиваемого параметру строкового значения.

В качестве четвертого аргумента функции RegSetValueEx () требуется задать тип устанавливаемого значения (REG_SZ). Список констант, соответствующих допустимым типам, приводится в разделе "Описания, константы и типы данных реестра".

Третий аргумент функции RegSetValueEx () всегда равен 0.

Public Sub SetRegistryValue ()Dim lReturn As Long Dim hSubKeyHandle As Long Dim sSubKeyName as String Dim sValueName As String Dim sValue As StringsSubKeyWame = "SOFTWARE\Использование VBA\Win32 API\Обзop"'Открытие ключа и получение его дескриптораlReturn = RegOpenKey(HKEY_LOCAL_MACHINE, sSubKeyNaine, hSubKeyHandle) If lresult <> 0 Then Exit Sub 'Установка первого значенияsValueMame = "Скучно?" sValue = "Нет" lValueSize = Len (sValue)lReturn = RegSetValueEx (hSubKeyHandle, sValueName, 0, REG_SZ, sValue, lValueSize)' Установка второго значенияlsValueName = "Весело?" sValue = "Конечно" lValueSize = Len (sValue) lReturn = RegSetValueEx (hSubKeyHandle, sValueName, 0, REG_SZ, sValue, lValueSize)End Subbr>