Функция RegEnumKeyEx перечисляет подключи указанного открытого ключа реестра. Функция возвращает имя одного подключа при каждом вызове. В отличии от функции RegEnumKey, эта функция возвращает имя класса подключа и время последней модификации.
LONGRegEnumKeyEx ( HKEYhKey , // дескриптор перечисляемого ключа DWORDdwIndex , // индекс перечисляемого подключа LPTSTRlpName , // адрес буфера для имени подключа LPDWORDlpcbName , // адрес размера буфера подключа LPDWORDlpReserved , // зарезервировано LPTSTRlpClass , // адрес буфера для имени класса LPDWORDlpcbClass , // адрес размера буфера для имени класса PFILETIMElpftLastWriteTime // адрес для времени последней записи ключа );
Параметры:
Идентифицирует уже открытый ключ или один из предопределенных дескрипторов: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG Возвращаемые ключи относительны ключу, указанному в hKey. | |
Указывает индекс затребованного подключа. Его значение должно быть нулевым для первого вызова функции RegEnumKeyEx и инкрементироваться для последующих вызовов. Поскольку подключи не упорядочены, любой новый подключ будет иметь произвольный индекс. Это означает, что функция может возвращать подключи в любом порядке. | |
Адрес буфера, в который возвращается имя подключа, включая нулевой заканчивающий символ. Эта функция копирует в буфер только имя подключа, а не полную иерархию ключа. | |
Указывает размер, в символах, буфера на который адресуется параметр lpName. Для определения требуемого размера буфера, используйте функцию RegQueryInfoKey, чтобы определить наибольший размер имени подключа, указанного в параметре hKey. Максимальный требуемый размер буфера это (MAX_PATH + 1) символов. | |
Зарезервировано. Должно быть NULL. | |
Адрес буфера, куда функция возвращает имя класса перечисляемого подключа. Этот параметр может быть равен NULL, если класс не требуется. | |
Адрес переменной, в которой указан размер буфера для имени класса. Размер должен учытывать и завершающий нулевой символ. Когда вункция возвращается, lpcbClass содержит количество символов, записанных в буфер. Вовращенный размер не учитывает нулевой символ. Этот параметр может быть NULL, если только lpClass тоже NULL. | |
Адрес переменной, в которую возвращается время последенй записи для перечисляемого подключа. |
Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Для перечисления подключей, приложение должно при первом вызове функции RegEnumKeyEx установить параметр dwIndex в нулевое значение. Затем, приложение должно инкрементировать параметр dwIndex и вызывать функцию RegEnumKeyEx до тех пор, пока не будет более подключей (пока функция не вернет ERROR_NO_MORE_ITEMS).
Приложение может, также, установить индекс на последний ключ при первом вызове функции и затем декрементировать индекс до подключа с индексом 0. Для получения индекса последнего подключа, используйте RegQueryInfoKey.
Пока приложение использует функцию RegEnumKeyEx, оно не должно вызывать любые другие функции реестра, которые могут изменить запрашиваемый ключ.
Ключ, указанный в параметре hKey, должен быть открытым с доступом KEY_ENUMERATE_SUB_KEYS (доступ KEY_READ включает в себя и доступ KEY_ENUMERATE_SUB_KEYS). Для открытия ключа используйте функцию RegCreateKeyEx или RegOpenKeyEx.
Приложение может, также, установить индекс на последний ключ при первом вызове функции и затем декрементировать индекс до подключа с индексом 0. Для получения индекса последнего подключа, используйте RegQueryInfoKey.
Пока приложение использует функцию RegEnumKeyEx, оно не должно вызывать любые другие функции реестра, которые могут изменить запрашиваемый ключ.
Ключ, указанный в параметре hKey, должен быть открытым с доступом KEY_ENUMERATE_SUB_KEYS (доступ KEY_READ включает в себя и доступ KEY_ENUMERATE_SUB_KEYS). Для открытия ключа используйте функцию RegCreateKeyEx или RegOpenKeyEx.