我正在编写一个内核驱动程序,它通过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声明不支持此标志?这是一个简单的错误还是我误解了什么?
感谢。
答案 0 :(得分:1)
完全可能在补丁/内联中添加了对KeyNameInformation的支持。问题是,你打算在XP SP0上做什么?
您可能需要考虑使用ObReferenceObjectByHandle()从您的键句柄中获取KEY对象,然后使用ObQueryObjectName()。