Получение пути к ключу reg из класса Registry_TypeGroup1 (отслеживание событий Windows)

Мне нужно отслеживать изменения в реестре. Мне нужна подробная информация, поэтому RegNotifyChangeKeyValue недостаточно . Итак, единственный способ, который я нашел в Google, — использовать этот ужасный Отслеживание событий.

После настройки всех вещей и фактического получения данных у меня есть Registry_TypeGroup1 class из EVENT_TRACE:

[EventType{...}]class Registry_TypeGroup1 : Registry
{
  sint64 InitialTime;
  uint32 Status;
  uint32 Index;
  uint32 KeyHandle;
  string KeyName;
};

Согласно документации, KeyName — это просто Имя раздела реестра, а не полный путь к ключу для данного события. Но проблема в том, что мне нужен полный путь для ключа!

Если я преобразую KeyHandle из uint32 в HKEY и использую NtQueryKey (вот так ) — функция завершится ошибкой с неизвестным статусом.

Итак, есть ли способ получить полный путь к ключу реестра из EVENT_TRACE экземпляра EVENT_TRACE_FLAG_REGISTRY?

(Я спрашиваю, потому что где-то читал, что ProcMon использует трассировку событий и показывает полный путь реестра для событий... Или перехватывает системные вызовы Reg* функций?)


person grisha    schedule 30.03.2015    source источник
comment
Фильтрация вызовов реестра.   -  person IInspectable    schedule 30.03.2015
comment
Спасибо. Я отказался от него, впервые нашел, потому что он требует драйвера режима ядра, а я понятия не имею, как написать драйвер. Я думал, что будет проще понять трассировку событий, чем писать простой драйвер...   -  person grisha    schedule 30.03.2015
comment
@Remy Lebeau, спасибо за исправление орфографии   -  person grisha    schedule 30.03.2015


Ответы (1)


Согласно эта тема, вы можете использовать KCBRundownEnd, который можно увидеть в MSDN для сбора всех реестров. В журнале события KCBRundownEnd есть полное базовое имя и KeyHandle, и вы можете сопоставить KeyHandle, чтобы получить соответствующие базовые имена.

person zeze    schedule 29.06.2021