Re: Как получить имя ключа, имея HKEY?
От: Xsyst  
Дата: 17.12.08 11:20
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Здравствуйте OlegO, Вы писали:


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

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

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


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


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


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

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

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


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


AF>В Win9x — скорее бы она сдохла, что ли.


Возможен ли вызов ZwQueryKey в пользовательском режиме? Или только в режиме ядра?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.