重定向的作用?
64bit的OS既可以运行32bit程序,也可以运行64bit程序,为了兼容32bit的程序,OS对32bit的程序对安装文件夹目录、注册表路径进行了规定,避免与64bit的程序混淆路径。
32bit程序安装路径在C:\Program Files (x86),64bit程序安装在C:\Program Files。
32bit程序注册表导入在HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node,64bit程序安装在HKEY_LOCAL_MACHINE\SOFTWARE。
注册表重定向原理
以下介绍下注册表导入时的路径原理:
注册表是导入到HKEY_LOCAL_MACHINE\SOFTWARE\XFS还是到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XFS,主要看你导入注册表时运行的那个程序是64bit的程序还是32位的程序。
如果是64位的程序,就是导入到HKEY_LOCAL_MACHINE\SOFTWARE\XFS,
如果是32位的程序,就是导入到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XFS,
最原始的导入注册表的命令是regedit,64bit的OS中有32bit的regedit.exe 和64bit的regedit.exe,分别存放在C:\Windows和C:\Windows\SysWOW64中。
如何判定一个程序是32bit还是64bit的呢?
方法一:
运行起来后,在任务管理器中可以看到,如果是32bit的程序,会有一个(32位)的提示,否则就是64位的程序。
如上,WeChat就是32bit的程序,注册表编辑器就是64bit的程序。
总结
1、如果是想导入到非Wow6432Node, 就运行C:\Windows\regedit.exe regfile.reg
2、如果是想导入到Wow6432Node, 就运行C:\Windows\SysWOW64\regedit.exe regfile.reg
举例
将如下注册表文件RPT.reg导入到注册表,
[HKEY_LOCAL_MACHINE\SOFTWARE\XFS\SERVICE_PROVIDERS\CSII_RPT_SERVICE]
“Class”=“PTR”
“dllname”=“CSII_RPT_SP.dll”
“FormsDirectory”=“C:\xfs\Form\RPTR\”
“FormsExtension”=“wfm”
“vendor_name”=“CSII”
“device”=“凭条打印机(深圳研科)”
“Port”=“1”
“BaudRate”=dword:00009600
“DeviceVersion”=dword:00000000
“SimuMediaTaken”=dword:00000001
如果运行C:\Windows\SysWOW64\regedit.exe RPT.reg,导入到如下位置(包括WOW6432Node)
如果运行C:\Windows\regedit.exe RPT.reg,则导入到如下位置(不包括WOW6432Node)