Windows7写注册表注意事项
来源:互联网 发布:99热网址最新获取域名 编辑:程序博客网 时间:2024/06/05 11:26
1、注册表位置
Windows7 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主键来保存用户配置吧。
- Windows7写注册表注意事项
- Windows7写注册表注意事项
- delphi在64位系统下写注册表注意事项
- 32位程序在64位Windows7/2008下写注册表不起作用问题
- 写注册表
- 写注册表
- 写注册表
- Windows7 hosts 绑定注意事项
- Windows7安装RVCT注意事项
- Windows7:修改系统注册表工具
- Windows7 注册表byte[]密钥解密
- windows7编程注意事项与兼容性
- VB.NET写注册表
- 写注册表 && TABLAE相关
- JS写注册表
- SDK中写注册表
- 写注册表自动运行
- C#写注册表
- c++11 体验
- 在Eclipse中配置tomcat
- 子线程中发Toast
- 创建手动启动、停止Oracle的批处理命令
- ToopoLogical Sort (拓扑排序)
- Windows7写注册表注意事项
- C#使用SVN
- java内部类
- eclipse中取消show in Breadcrumb方法
- 内存数据库FastDB和SQLite性能测评
- myeclipse8.5的svn用link安装
- 大牛很通俗地介绍《信号与系统》
- [AC自动机][fail树][BZOJ 3172][TJOI2013]单词
- android 源码学习经验分享