是否是64位系统?如是64位系统,在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下找找。

解决方案 »

  1.   

    是否有权限,用admin用户执行程序
      

  2.   

    RegCreateKeyEx(hKey, _T("AAA"), 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL, 
    &hSoftKey, &disposition) 
      

  3.   

    这个问题可能是这些原因,对上面的总结一下:
    1. 注意字符集。VS 新版都默认 Unicode 字符集,你用单引号而非 _T("Software") 这样的格式肯定不对。除非你还在用 VC6。
    2. 注册表系列函数参数中的权限位也就是 KEY_ALL_ACCESS 这个参数值,在 64 位系统上,32 位程序默认访问 32 位注册表,而 64 位程序访问 64 位注册表。如果 32 位程序访问 64 位注册表,需添加 KEY_WOW64_64KEY 标志;64 位程序访问 32 位注册表,需添加 KEY_WOW64_32KEY 标志。如未指定则按照默认的处理。目前的 64 位系统上的 32 位注册表位于 HKCU/HKLM 下 Software\Wow6432Node,但勿直接访问该键,而应该通过上述提到的权限位方法来访问。创建成功但找不到的可以去按照你的权限位去相应的位置寻找。
    3. 请使用管理员权限或 Administrator 管理员账户来执行程序。
    4. 如果以上条件均满足且无法创建,则可能是参数错误,只能通过调试解决了。