Как получить имя ключа, имея HKEY?
От: Alex Fedotov США  
Дата: 16.11.01 17:28
Оценка: 31 (3) :)
#Имя: FAQ.winapi.hkeytoname
Здравствуйте OlegO, Вы писали:

DT>>>>Привет всем.

DT>>>>Вот такая вот задачка.
DT>>>>Есть HKEY, надо бы получить че енто за ключ (типа HKEY_LOCAL_MACHINE\Software\Microsoft).
DT>>>>Помогите, а....

OO>Да изврат не спорю, еще вариант поискать может кто разбирал структуру HKEY'я из нее наверняка можно все вытащить.


HKEY — это handle, вся его структура — это 32 бита.

В NT требуемую информацию можно получить с помошью native функции ZwQueryKey:

NTSYSAPI
NTSTATUS
NTAPI
ZwQueryKey(
    IN HANDLE KeyHandle,
    IN KEY_INFORMATION_CLASS KeyInformationClass,
    OUT PVOID KeyInformation,
    IN ULONG KeyInformationLength,
    OUT PULONG ResultLength
    );

typedef enum _KEY_INFORMATION_CLASS {
    KeyBasicInformation,
    KeyNodeInformation,
    KeyFullInformation,
    KeyNameInformation
} KEY_INFORMATION_CLASS;

typedef struct _KEY_BASIC_INFORMATION {
    LARGE_INTEGER LastWriteTime;
    ULONG TitleIndex;
    ULONG NameLength;
    WCHAR Name[1]; // Variable length string
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;


(c) Windows NT/2000 Native API Reference, Gary Nebbett.

В Win9x — скорее бы она сдохла, что ли.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.