你好:

     感谢你访问我的 Blog ,本博客只提供博主的技术经验分享,你可以在此做简单的留言和评论,我会抽空回复你;若是要深入交流探讨,请联系QQ:47853253或者加QQ群:12012081


 

X64位系统下操作注册表写入的问题

 前几天有个网友跟我讨论一个问题,问题的内容是X86的程序在对注册表“HKEY_LOCAL_MACHINE\SOFTWARE\”下键值写入时候发现被莫名其妙写到“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node”下了,由于本屌丝对注册表写入这块操作不是很多,所以当时比较怀疑这个情况。最后经过测试发现确实如此。

无独有偶,今天在做进程禁止工具时候发现X86程序在X64环境下获取进程路径也存在获取不到的问题,于是去CSDN查资料的过程中无意发现了这篇文章64位系统下文件重定向和注册表重定向,经过查看后才知道原来是权限问题

32位程序在访问这些键的时候,会访问到下一级的Wow6432Node子键上去(自动定位,由WOW64机制来完成),最后尝试了下,发现果真如此。

那么解决办法也非常简单了

 

RegWrite ("HKEY_LOCAL_MACHINE\SOFTWARE\ICafe8","123","REG_SZ","000") ;这种写法在win764位下会自动的写到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ICafe8下去

RegWrite ("HKEY_LOCAL_MACHINE64\SOFTWARE\ICafe8","123","REG_SZ","000") ;这种写法在win764位下就不会被重定向了

 

我们还会发现如果使用X86程序来调用regedit /s命令导入的reg文件里面包含64位注册表路径的话,也会自动给导入到X86(Wow6432Node)路径下面,例如123.reg文件里面为HKEY_LOCAL_MACHINE\SOFTWARE\Client。那么使用regedit /S 123.reg的话会被写入到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Client下面。

 

解决办法也很简单调用64位的regedit就可以了,C:\windows\system32\regedit32.exe /S 123.reg这样导入的话就会写到HKEY_LOCAL_MACHINE\SOFTWARE\Client下面,也可以在导入之前使用

Wow64DisableWow64FsRedirection函数将重定向关闭,然后再用Wow64RevertWow64FsRedirection恢复即可。


相关阅读:

http://blog.csdn.net/jiangqin115/article/details/40923083



文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: 401
发表评论
你没有权限发表留言!