0

我正在编写一个内核驱动程序,它通过 CmRegisterCallbackEx 注册注册表例程回调。我想获得关键的完整路径并通过 DbgPrint 打印出来。在回调中,我使用带有 KeyNameInformation 标志的 ZwQueryKey 成功查询了 Key 指针,但是在 KEY_NAME_INFORMATION 结构的文档中我读到:

在 Windows Vista 和更高版本的 Windows 操作系统中可用。

http://msdn.microsoft.com/en-us/library/windows/hardware/ff553381(v=vs.85).aspx

那么有没有办法在windows xp的内核中获取完整的注册表路径?我知道这是可能的,因为 SysInternals 工具已经具有此功能,并且在 xp 中运行良好。

谢谢

更新


我刚刚尝试在 XP SP2 上使用 KeyNameInformation 标志获取密钥完整路径(如 MSDN 所述,XP 不支持此标志,请参见上面的链接),令我惊讶的是,它起作用了。任何人都知道为什么 MSDN 声明不支持此标志?这是一个简单的错误还是我误解了什么?

谢谢。

4

1 回答 1

1

完全有可能在补丁/内联中添加了对 KeyNameInformation 的支持。问题是,你打算在 XP SP0 上做什么?

您可能需要考虑使用 ObReferenceObjectByHandle() 从您的密钥句柄中获取 KEY 对象,然后使用 ObQueryObjectName()。

于 2012-04-07T23:35:33.700 回答