Здравствуйте 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    Оценить