15 сент. 2010 г.

RegQueryInfoKey


Функция RegQueryInfoKey получает информацию об указанном ключе реестра.
LONG RegQueryInfoKey(
    HKEY hKey, // дескриптор ключа
    LPTSTR lpClass, // адрес буфера для имени класса
    LPDWORD lpcbClass, // адрес размера буфер для имени класса
    LPDWORD lpReserved, // зарезервировано
    LPDWORD lpcSubKeys, // адрес буфера для количества подключей
    LPDWORD lpcbMaxSubKeyLen, // адрес буфера для наибольшего размера имени подключа
    LPDWORD lpcbMaxClassLen, // адрес буфера для наибольшего размера имени класса
    LPDWORD lpcValues, // адрес буфера для количества вхождений значений
    LPDWORD lpcbMaxValueNameLen, // адрес буфера для наибольшего размера имени значения
    LPDWORD lpcbMaxValueLen, //  адрес буфера для наибольшего размера данных значения
    LPDWORD lpcbSecurityDescriptor, // адрес буфера для длины дескриптора безопасности 
    PFILETIME lpftLastWriteTime // адрес буфера для получения времени последней записи
   );
Параметры:
hKeyИдентифицирует открытый в текущий момент ключ или один из следующих предопределенных значений дескрипторов:

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
lpClassАдрес буфера, в который возвращается имя класса ключа. Этот параметр может быть NULL.
lpcbClassАдрес переменной, в которой указан размер, в символах, буфера, на который указывает параметр lpClass. Должен учитываться и завершающий нулевой символ. При возвращении функции, эта переменная содержит длину строки с именем класса, записанной в буфер. Возвращенный размер не учитывает последний нулевой символ. Если буфер имеет недостаточный размер, функция возвращает ERROR_MORE_DATA, и переменная содержит нужный размер буфера, без учета нулевого символа.

Если lpClass равен NULL, то и lpcbClass может быть NULL.

Windows NT/2000/XP: Если параметр lpClass указывает на правельный адрес, а параметр lpcbClass – нет (например, равен NULL), то функция возвращает ERROR_INVALID_PARAMETER.
lpReservedЗарезервировано; должно быть нулевым.
lpcSubKeysАдрес переменной, в которую возвращается количество подключей, содержащихся в указанном ключе. Этот параметр может быть NULL.
pcbMaxSubKeyLenАдрес переменной, в которую возвращается длина, в символах, наибольшего имени подключа. Этот параметр может быть NULL.
lpcbMaxClassLenАдрес переменной, в которую возвращается длина, в символах, наибольшего имени класса ключа. Этот параметр может быть NULL.
lpcValuesАдрес переменной, в которую возвращается количество значений, ассоциирующихся с ключом. Этот параметр может быть NULL.
lpcbMaxValueNameLenАдрес переменной, в которую возвращается длина, в символах, наибольшего имени значения. Этот параметр может быть NULL.
lpcbMaxValueLenАдрес переменной, в которую возвращается длина, в байтах, наибольшего компонента среди значениий ключа. Этот параметр может быть NULL.
lpcbSecurityDescriptorАдрес переменной, в которую возвращается длина, в байтах, дескриптора безопасности ключа. Этот параметр может быть NULL.
lpftLastWriteTimeАдрес структуры FILETIME. Этот параметр может быть NULL.

Возвращаемые значения:
Если функция успешна, возвращается значение ERROR_SUCCESS.

При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Ключ, указанный в параметре hKey, должен быть открыть с доступом KEY_QUERY_VALUE (доступ KEY_READ содержит и доступ KEY_QUERY_VALUE).