【问题标题】:ZwQueryKey with KeyNameInformation alternative for XP?带有 KeyNameInformation 的 ZwQueryKey 替代 XP?
【发布时间】:2012-04-20 22:58:42
【问题描述】:

我正在编写一个内核驱动程序,它通过 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 声明不支持此标志?这是一个简单的错误还是我误解了什么?

谢谢。

【问题讨论】:

  • 尝试标记你的编程语言,这样更容易提供帮助..
  • 我猜是因为 XP EOL 不支持它?
  • @hellork,EOL 是什么意思?实际上,看起来它是完全支持的。这可能是文档中的错误。我已经报告了,希望他们能修复
  • 生命终结,因为他们过去可能支持它,但现在他们不再关心 XP。

标签: c windows callback registry kernel


【解决方案1】:

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

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

【讨论】:

  • 哇,这里的答案与他们在MSDN forums 上得到的答案相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2016-04-10
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多