Функция RegCreateKeyEx

Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" ( _
        ByVal hKey As Long,  _
        ByVal lpSubKey As String,  _
        ByVal Reserved As Long,  _
        ByVal lpClass As String,  _
        ByVal dwOptions As Long,  _
        ByVal samDesired As Long,  _
        lpSecurityAttributes As SECURITY_ATTRIBUTES,  _
        phkResult As Long,  _
        lpdwDisposition As Long) As Long

RegCreateKeyEx создает новый раздел реестра. Или, если он существует, открывает его, что аналогично функции RegOpenKeyEx. Описатель раздела передается в переменную phkResult

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

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

Параметры

hKey
Дескриптор к открываемому разделу реестра или один из следующих флагов, которые идентифицируют ветви, в которых будут созданы новые разделы:
HKEY_CURRENT_USER = &H80000001
Ветвь HKEY_CURRENT_USER хранит информацию о пользователе, который в настоящий момент работает на компьютере
HKEY_LOCAL_MACHINE = &H80000002
Ветвь HKEY_LOCAL_MACHINE хранит информацию о локальном компьютере, в том числе - установки аппаратного и программного обеспечения, конфигурация приложений, установки безопасности
HKEY_USERS = &H80000003
Ветвь HKEY_USERS содержит информацию обо всех пользователях, зарегистрированных в системе
HKEY_CURRENT_CONFIG = &H80000005
Ветвь HKEY_CURRENT_CONFIG хранит информацию о текущей конфигурации
HKEY_DYN_DATA = &H80000006
Ветвь HKEY_DYN_DATA хранит динамическую информацию
lpSubkey
Имя для нового раздела
Reserved
Зарезервированный параметр. Установлен равным 0
lpClass
Имя класса или типа объекта. Можно использовать пустую строку
dwOptions
Установите в 0, если вы хотите сохранить раздел в реестре. Если вы этого не хотите - установите параметр, равным 1, и раздел будет уничтожен при выходе из Windows
samDesired
Один или более флагов для желаемого доступа к чтению/записи:
KEY_ALL_ACCESS = &HF003F
Разрешен любой тип доступа
KEY_CREATE_LINK = &H20
Разрешение для создания символьных ссылок
KEY_CREATE_SUB_KEY = &H4
Разрешение для создания подраздела
KEY_ENUMERATE_SUB_KEYS = &H8
Разрешение для перечисления подразделов
KEY_EXECUTE = &H20019
Аналогично KEY_READ
KEY_NOTIFY = &H10
Разрешение на уведомление изменений
KEY_QUERY_VALUE = &H1
Разрешен доступ к данным подраздела
KEY_READ = &H20019
Разрешен доступ к чтению
KEY_SET_VALUE = &H2
Разрешение на установку данных подраздела
KEY_WRITE = &H20006
Разрешен доступ к записи
lpSecurityAttributes
Для NT, уровень безопасности, передаваемый разделу. Для остальных версий Windows параметр равен 0
phkResult
Переменная, получаемая от дескриптора нового или открытого раздела
lpdwDisposition
Переменная, которая получает значение 1, если раздел был создан и значение 2, если был открыт уже существующий раздел

Пример

' Создаем раздел под именем
' HKEY_CURRENT_USER\Software\Russian_Project\Samples\Config

Dim hregkey As Long  ' дескриптор для вновь созданного или открытого раздела реестра
Dim secattr As SECURITY_ATTRIBUTES  
Dim subkey As String  ' имя подраздела
Dim neworused As Long  ' получаем 1, если раздел был создан или 2, если был открыт существующий раздел
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

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

Смотри также

RegCloseKey, RegDeleteKey, RegOpenKeyEx

Категория

Реестр