Функция RegQueryValueEx

Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" ( _
        ByVal hKey As Long,  _
        ByVal lpValueName As String,  _
        ByVal lpReserved As Long,  _
        lpType As Long, lpData As Any,  _
        lpcbData As Long) As Long

RegQueryValueEx получает значение параметра из раздела реестра. Это может быть число, строка и другие типы данных. При чтении строковых типов данных используйте ключевое слово ByVal перед lpData, для других типов данных ByVal использовать необязательно

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

В случае успеха функция возвращает 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
Ветвь HKEY_PERFORMANCE_DATA
Const HKEY_USERS = &H80000003
Ветвь HKEY_USERS
lpValueName
Значение параметра
Reserved
Зарезервированный параметр. Установлен равным 0
lpType
Один из следующих флагов, идентифицирующих тип данных для чтения:
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
Число, строка или другие данные для чтения в системном реестре
lpcbData
Устанавливает длину в байтах, передаваемых значений lpData

Пример

' Создаем раздел 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 slength As Long ' длина возвращаемого значения параметра
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_READ, secattr, hregkey, neworused)
If retval <> 0 Then
  Debug.Print "Ошибка при открытии или создания раздела реестра - выходим из программы"
  End ' завершаем программу
End If

' Получаем значение параметра "username". Используем
' при этом ключевое слово ByVal
stringbuffer = Space(255) ' создаем буфер для получения информации
slength = 255
retval = RegQueryValueEx(hregkey, "username", 0, REG_SZ, ByVal stringbuffer, slength) ' получаем значение параметра
stringbuffer = Left(stringbuffer, slength) ' извлекаем значение из буфера
If retval = 0 Then Debug.Print "Имя пользователя: "; stringbuffer

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

Смотри также

RegDeleteValue, RegSetValueEx

Категория

Реестр