从Registry_TypeGroup1类获取reg键路径(Windows事件跟踪)

时间:2015-03-30 11:23:51

标签: c++ winapi etw

我需要跟踪注册表更改。我需要详细信息,因此RegNotifyChangeKeyValue还不够。所以,我在谷歌找到的唯一方法是使用这个可怕的Event Tracing

在配置所有内容并实际获取数据后,我Registry_TypeGroup1 class发出了EVENT_TRACE

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

根据文档,KeyName只是注册表项的名称,而不是给定事件的完整密钥路径。但问题是我需要密钥的完整路径

如果我将KeyHandleuint32转换为HKEY并使用NtQueryKeylike this) - 该功能将失败并显示未知状态。

那么,有没有办法从EVENT_TRACE的{​​{1}}实例中检索完整的注册表项路径?

(我问的是因为我在某处读过ProcMon使用事件跟踪并显示事件的完整注册表路径...或者是否将系统调用挂钩到EVENT_TRACE_FLAG_REGISTRY函数?)

1 个答案:

答案 0 :(得分:0)

根据this thread,您可以使用MSDN中可以看到的KCBRundownEnd来收集所有注册表。 KCBRundownEnd事件日志中有完整的basename和KeyHandle,可以匹配KeyHandle得到对应的basename。

相关问题