RegSetValue 第二个参数别设置为空

解决方案 »

  1.   

    HKEY hKey;
     char *szValue="1";
     ::RegOpenKeyEx(HKEY_CURRENT_USER,"Control Panel\\Desktop\\WindowMetrics",0,KEY_WRITE,&hKey);
     ::RegSetValueEx(hKeyL"MinAnimate",0,REG_SZ,(CONST BYTE*)szValue,4);
     ::RegCloseKey(hKey);
      

  2.   

    If this parameter is NULL or points to an empty string, the function sets the default value of the key identified by hKey.
    为什么不为空?应该为空啊?
      

  3.   

    win7、win8有可能有权限的问题
      

  4.   

    HKEY hKey = NULL;
    if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\http://www.bogekeji.com\\admin"), 0, NULL, 0, KEY_WRITE, 0, &hKey, NULL) == ERROR_SUCCESS) {
        TCHAR szValue[] = _T("boge");
        RegSetValueEx(hKey, NULL, 0, REG_SZ, (BYTE *)szValue, sizeof(szValue));
        RegCloseKey(hKey);
    }
      

  5.   

    你就帮我改我的方法,别用其他函数,我觉得我的函数已经足够了
    我不这么认为。RegOpenKey 函数没有指定打开权限等信息,如果在权限要求高的情况下不保证不会出问题。如今都 Windows 7、8 时代了,能不用就不用这些老的 API。
      

  6.   

    你就帮我改我的方法,别用其他函数,我觉得我的函数已经足够了
    我不这么认为。RegOpenKey 函数没有指定打开权限等信息,如果在权限要求高的情况下不保证不会出问题。如今都 Windows 7、8 时代了,能不用就不用这些老的 API。说的也是啊
      

  7.   

    如果是windows 7 系统的话,请使用管理员运行程序。要不然是无法写入的。
      

  8.   

    仍然不行啊亲,我把HKEY_LOCAL_MACHINE改成HKEY_CURRENT_USER就可以了,同样的我原来的代码这样改也可以了,
    HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE他们在访问权限上有什么区别吗?一般应用程序在注册表中存储首选项等信息在哪个地方?
      

  9.   

    Vista 开始 HKEY_LOCAL_MACHINE 写入需要程序以管理员权限执行
      

  10.   

    我不是Vista 系统,话说你想说什么,我没看明白
      

  11.   

    我不是Vista 系统,话说你想说什么,我没看明白
    谁说非得 Vista 了,我说的是从 Vista 开始,也就是包括后面的 Windows 7、8、8.1 等等,写入 HKLM 需要管理员权限。
      

  12.   

    我不是Vista 系统,话说你想说什么,我没看明白
    谁说非得 Vista 了,我说的是从 Vista 开始,也就是包括后面的 Windows 7、8、8.1 等等,写入 HKLM 需要管理员权限。喔,这样啊