zoukankan      html  css  js  c++  java
  • Windows7写注册表注意事项

    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主键来保存用户配置吧。

  • 相关阅读:
    Jupsh_flutter Android 收不到消息 / 排查不出请根据第 9 点说明提供信息
    angular表单 Dom获取表单值以及双向数据绑定
    angular中的组件以及组件中的模板合成
    Flutter开发的app进行设备判断是Ios还是android
    Java的封装
    GCD编程 之 略微提高篇
    多线程基础(六)GCD基础
    我遇到的CocoaPods的问题(也许后期会解决,持续更新)
    iOS之通过PaintCode快速实现交互动画的最方便方法 未解问题
    多线程基础(五)NSThread线程通信
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1924789.html
Copyright © 2011-2022 走看看