Содержание материала

 

NtEnumerateValueKey

 

Значения реестра не отсортированы. К счастью, их количество в одном

ключе достаточно мало, поэтому мы можем перевызывать функцию, чтобы получить

сдвиг. API для получения информации об одном значении реестра

назывется NtEnumarateValueKey.

 

NTSTATUS NtEnumerateValueKey(

IN HANDLE KeyHandle,

IN ULONG Index,

IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,

OUT PVOID KeyValueInformation,

IN ULONG KeyValueInformationLength,

OUT PULONG ResultLength

);

 

KeyHandle - это снова хэндл родительского ключа. Index - это индекс

в списке значений данного ключа. KeyValueInformationClass описывает тип

информации, которая будет помещена в буфер KeyValueInformation размером

KeyValueInformationLength байт. Количество записанных в буфер байт возвращается

в ResultLength.

И снова мы должны вычислить сдвиг, перевызывая функцию для всех

индексов от 0 до Index. Имя значения может быть получено при использовании

KeyValueBasicInformation в качестве значения для KeyValueInformationClass.

 

#define KeyValueBasicInformation 0

 

 

Тогда в буфере KeyValueInformation мы получим следующую структуру:

 

typedef struct _KEY_VALUE_BASIC_INFORMATION {

ULONG TitleIndex;

ULONG Type;

ULONG NameLength;

WCHAR Name[1];

} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;

 

Нас снова интересуют только Name и NameLength.

  

Если для сдвинутого параметра Index не существует соответствующего

значения реестра, то мы должны вернуть STATUS_NO_MORE_ENTRIES.

 

#define STATUS_NO_MORE_ENTRIES 0x8000001A

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить