我需要在运行时通过它的句柄获取注册表路径。为此,我正在使用NtQueryObject函数。我的问题是NtQueryObject以奇怪的格式给我路径(见下图)。
我想,这是你在编写驱动程序时需要使用的那种格式,但我希望将此路径转换为标准的reg路径,例如
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run".
目前我正在替换
\REGISTRY\MACHINE\etc
带
HKEY_LOCAL_MACHINE \等
但是这个Wow6432Node键是个问题。我猜它的名称会因不同的机器而异,甚至32位的窗口也没有那个密钥。所以我的问题是,有没有标准的方法来进行reg路径转换(也许有些win api会这样做)?
答案 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