Функция RegEnumKeyEx

Declare Function RegEnumKeyEx Lib "advapi32" Alias "RegEnumKeyExA" ( _
        ByVal hKey As Long,  _
        ByVal dwIndex As Long,  _
        ByVal lpName As String,  _
        lpcbName As Long,  _
        lpReserved As Long,  _
        ByVal lpClass As String,  _
        lpcbClass As Long,  _
        lpftLastWriteTime As FILETIME) As Long

RegEnumKeyEx перебирает все подразделы заданного раздела. Функция получает название подраздела, имя класса и время последней записи подраздела в реестр.

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

В случае успеха функция возвращает 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 хранит динамическую информацию
dwIndex
Список подразделов для получения информации. Индекс начинается с 0
lpName
Имя подраздела
lpcbName
Размер строки, передаваемой lpName
lpReserved
Зарезервированный параметр. Установлен равным 0. Используйте ByVal перед 0
lpClass
Имя класса подраздела
lpcbClass
Размер строки, передаваемой lpClass
lpftLastWriteTime
Время и дата последней записи подраздела в реестр

Пример

' Перебираем подразделы раздела HKEY_LOCAL_MACHINE\Software
Dim keyname As String  ' имя каждого подраздела
Dim keylen As Long ' длина имени подраздела
Dim classname As String  ' класс подраздела
Dim classlen As Long  ' длина имени класса
Dim lastwrite As FILETIME ' время последней записи
Dim hkey As Long  ' дескриптор к разделу HKEY_LOCAL_MACHINE\Software
Dim index As Long ' счетчик
Dim retval As Long ' возвращаемое значение

' Открываем нужный раздел
retval = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software", 0, KEY_ENUMERATE_SUB_KEYS, hkey)
' Убеждаемся,что раздел открыт
If retval <> 0 Then
  Debug.Print "Ошибка во время открытия раздела реестра"
  End  ' завершаем работу
End If

' Перебираем все подразделы
index = 0 ' инициализируем счетчик
While retval = 0
  keyname = Space(255): classname = Space(255)
  keylen = 255: classname = 255
  retval = RegEnumKeyEx(hkey, index, keyname, keylen, ByVal 0, classname, classlen, lastwrite)
  If retval = 0  Then
' Извлекаем информацию из буфера
    keyname = Left(keyname, keylen)
    classname = Left(classname, classlen)
' Выводим информацию
    Debug.Print "HKEY_LOCAL_MACHINE\Software\"; keyname 
    Debug.Print "  (class: "; classname
  End If
  index = index + 1 ' увеличиваем счетчик
Wend ' завершаем цикл

' Закрываем раздел после завершения перебора
retval = RegCloseKey(hkey)

Смотри также

RegEnumValue

Категория

Реестр