如何在Windows注册表中设置一个值?(C++)

New*_*bie 4 c++ registry

我想将"HKEY_LOCAL_MACHINE\Software\company name\game name\settings\value"键编辑为"1"(DWORD)

这是我的代码:

HKEY hkey;
 DWORD dwDisposition;
 if(RegCreateKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\company name\\game name\\settings"), 0, NULL, 0, 0, NULL, &hkey, &dwDisposition) == ERROR_SUCCESS){
  DWORD dwType, dwSize;
  dwType = REG_DWORD;
  dwSize = sizeof(DWORD);
  DWORD rofl = 1;
  RegSetValueEx(hkey, TEXT("value"), 0, dwType, (PBYTE)&rofl, dwSize); // does not create anything
  RegCloseKey(hkey);
 }
Run Code Online (Sandbox Code Playgroud)

但它什么都没做.RegCreateKeyEx()是实际执行某项操作的唯一函数:仅在注册表中创建"文件夹".那又一次如何失败?我如何在注册表中创建"文件"?

Han*_*ant 10

始终检查API函数的返回值.你会看到RegSetValueEx()返回5,访问被拒绝.你没有要求写入权限.固定:

  if(RegCreateKeyEx(HKEY_LOCAL_MACHINE, 
      TEXT("Software\\company name\\game name\\settings"), 
      0, NULL, 0, 
      KEY_WRITE, NULL, 
      &hkey, &dwDisposition) == ERROR_SUCCESS) {
    // etc..
  }
Run Code Online (Sandbox Code Playgroud)