使用NtQueryObject获取注册表路径

时间:2011-08-21 18:48:00

标签: windows winapi

我需要在运行时通过它的句柄获取注册表路径。为此,我正在使用NtQueryObject函数。我的问题是NtQueryObject以奇怪的格式给我路径(见下图)。

enter image description here

我想,这是你在编写驱动程序时需要使用的那种格式,但我希望将此路径转换为标准的reg路径,例如

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run". 

目前我正在替换

 \REGISTRY\MACHINE\etc

HKEY_LOCAL_MACHINE \等

但是这个Wow6432Node键是个问题。我猜它的名称会因不同的机器而异,甚至32位的窗口也没有那个密钥。所以我的问题是,有没有标准的方法来进行reg路径转换(也许有些win api会这样做)?

1 个答案:

答案 0 :(得分:2)

Wow6432Node确实是该特定密钥的注册表路径的一部分,尽管它在32位进程中是隐藏的。如果您使用Regedit查看软件密钥,您将找到Wow6432Node。

在64位系统 HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run和HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run存在。根据您的尝试,您可能需要同时使用它们或仅使用一个。

这描述了受WOW64影响的注册表项:

http://msdn.microsoft.com/en-us/library/aa384253%28v=VS.85%29.aspx

您可以显式访问注册表的32位或64位视图,如下所述:

http://msdn.microsoft.com/en-us/library/aa384129%28v=VS.85%29.aspx