64bit系统下操作注册表的注意事项
2015-01-24 13:55
218 查看
转贴地址:http://blog.sina.com.cn/s/blog_43ca06360100h5uv.html
1、注册表位置
64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32位注册表项和64位注册表项两部分。
在64bit系统下,通过regedit中查看到指定路径下的注册表项均为64位注册表项,而32位注册表项被重定位到:HKEY_LOCAL_MACHINE/Software/WOW6432Node。
应用程序操作注册表的时候也分32bit方式和64bit方式。运行于64bit系统下的32bit应用程序默认操作32位注册表项(即被重定向到WOW6432Node下的子项);而64bit应用程序才是操作的直观子项。
比如,同在64bit系统下,使用如下代码访问注册表:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC "), 0, KEY_ALL_ACCESS, &hKey)
如果应用程序为32bit子系统,那么实际访问的注册表位置为:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Sobey/MPC(使用regedit工具软件对应的位置);
而如果应用程序为64bit子系统,那么实际访问的注册表位置将会是:HKEY_LOCAL_MACHINE/SOFTWARE/Sobey/MPC(使用regedit工具软件对应的位置)。
2、程序编写
编程过程中,可以使用KEY_WOW64_64KEY和KEY_WOW64_32KEY明确的指定操作64位注册表项或者32位注册表项。例如,
在32bit子系统应用程序中,可以用如下方式明确指定访问64bit注册表项,程序代码:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC "), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey)
注意关键字KEY_WOW64_64KEY;
这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE/SOFTWARE/Sobey/MPC(使用regedit工具软件对应的位置)。
在64bit子系统应用程序中,可以用如下方式明确指定访问32bit注册表项,程序代码:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC//Test"), 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, &hKey)
注意关键字KEY_WOW64_32KEY
这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Sobey/MPC(使用regedit工具软件对应的位置)。
3、特别提醒
上述说明只针对HKEY_LOCAL_MACHINE主键而言,HKEY_CURRENT_USER主键下没有类似情况;当访问HKEY_CURRENT_USER主键时,明确指定KEY_WOW64_64KEY和KEY_WOW64_32KEY标志也没有意义。
总之,尽可能使用HKEY_CURRENT_USER主键来保存用户配置吧。
4、参考文档
如何通过使用 64 位版本 Windows 查看系统注册表
Accessing an Alternate Registry View
Registry Redirector in x64 / IA64
1、注册表位置
64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32位注册表项和64位注册表项两部分。
在64bit系统下,通过regedit中查看到指定路径下的注册表项均为64位注册表项,而32位注册表项被重定位到:HKEY_LOCAL_MACHINE/Software/WOW6432Node。
应用程序操作注册表的时候也分32bit方式和64bit方式。运行于64bit系统下的32bit应用程序默认操作32位注册表项(即被重定向到WOW6432Node下的子项);而64bit应用程序才是操作的直观子项。
比如,同在64bit系统下,使用如下代码访问注册表:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC "), 0, KEY_ALL_ACCESS, &hKey)
如果应用程序为32bit子系统,那么实际访问的注册表位置为:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Sobey/MPC(使用regedit工具软件对应的位置);
而如果应用程序为64bit子系统,那么实际访问的注册表位置将会是:HKEY_LOCAL_MACHINE/SOFTWARE/Sobey/MPC(使用regedit工具软件对应的位置)。
2、程序编写
编程过程中,可以使用KEY_WOW64_64KEY和KEY_WOW64_32KEY明确的指定操作64位注册表项或者32位注册表项。例如,
在32bit子系统应用程序中,可以用如下方式明确指定访问64bit注册表项,程序代码:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC "), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey)
注意关键字KEY_WOW64_64KEY;
这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE/SOFTWARE/Sobey/MPC(使用regedit工具软件对应的位置)。
在64bit子系统应用程序中,可以用如下方式明确指定访问32bit注册表项,程序代码:
::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software//Sobey//MPC//Test"), 0, KEY_ALL_ACCESS | KEY_WOW64_32KEY, &hKey)
注意关键字KEY_WOW64_32KEY
这种方式写入的注册表项将会确切的位于位置:HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Sobey/MPC(使用regedit工具软件对应的位置)。
3、特别提醒
上述说明只针对HKEY_LOCAL_MACHINE主键而言,HKEY_CURRENT_USER主键下没有类似情况;当访问HKEY_CURRENT_USER主键时,明确指定KEY_WOW64_64KEY和KEY_WOW64_32KEY标志也没有意义。
总之,尽可能使用HKEY_CURRENT_USER主键来保存用户配置吧。
4、参考文档
如何通过使用 64 位版本 Windows 查看系统注册表
Accessing an Alternate Registry View
Registry Redirector in x64 / IA64
相关文章推荐
- 64bit系统下操作注册表的注意事项
- 64bit系统下操作注册表的注意事项 ZZ
- 64位系统下操作注册表的注意事项
- 重装系统操作步骤、批处理及注意事项
- delphi在64位系统下写注册表注意事项
- 五大注意事项 防止系统重装时遭遇病毒
- 成功导入ERP系统需注意什么事项?
- 项目中的Visual Source Safe操作注意事项
- 关于Trojan.DL.Win32.Autorun类病毒的杀毒操作注意事项
- void* PVOID 加减操作注意事项。
- Windows CE 中调整系统音量的几种方式和注意事项
- java 模拟 POST表单操作 HTTPCLIENT的应用 及注意事项
- J2EE系统配置注意事项
- 从Hibernate中获得Connection,进行Jdbc操作的注意事项和样例
- 使用poi操作Excel的几点注意事项
- 十大注意事项 防止系统重装时遭遇病毒
- 系统设计及项目管理注意事项
- 电脑升级系统前的八大注意事项
- Dom操作Xml文件时的注意事项
- ATM系统实现[5]——注意事项窗口[00原创]