前几天有个网友跟我讨论一个问题,问题的内容是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下面。解决办法需要使用add reg命令处理
Wow64DisableWow64FsRedirection函数将重定向关闭,然后再用Wow64RevertWow64FsRedirection恢复即可。
相关阅读:
http://blog.csdn.net/jiangqin115/article/details/40923083
【扫描下方二维码关注公众号,定期推送最新、最专业的技术知识。推荐关注!】
2022年01月09日
2021年08月21日
2021年05月11日
2021年05月11日
2021年05月11日