64bit系统下操作注册表的注意事项

转贴地址: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_64KEYKEY_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_64KEYKEY_WOW64_32KEY标志也没有意义。

         总之,尽可能使用HKEY_CURRENT_USER主键来保存用户配置吧。

 

       4、参考文档

         如何通过使用 64 位版本 Windows 查看系统注册表

         Accessing an Alternate Registry View

         Registry Redirector in x64 / IA64

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值