无法为注册表项增加价值

时间:2018-11-26 14:36:56

标签: c++ winapi registry

我正在尝试使用C ++在注册表项ViewController下添加一个值(“ UpdateSvc”)。这是使用的代码:

deinit {
    NotificationCenter.default.removeObserver(self)
}

它显示'1',但我似乎无法找到该值。尝试使用regedit和HKCU\Software\Microsoft\Windows\CurrentVersion\Run(包括bool regWrite(LPCSTR subkey, LPCSTR name, DWORD type, const char * value) { HKEY key; if (RegCreateKeyA(HKEY_CURRENT_USER, subkey, &key) != ERROR_SUCCESS) return false; if (RegSetValueExA(key, name, NULL, type, (LPBYTE)value, strlen(value) * sizeof(char) + 1) != ERROR_SUCCESS) return false; if (RegCloseKey(key) != ERROR_SUCCESS) return false; return true; } int main() { bool ret; ret = regWrite("Software\\Microsoft\\Windows\\CurrentVersion\\Run", "UpdateSvc", REG_SZ, "Test"); printf("%d", ret); getchar(); return 0; } reg query HKCU\software\microsoft\windows\currentversion\run作为检查手段)进行检查。

同一件事发生在

/reg:32(我知道这是不安全的,只能调试)。

在64位Windows 10上以管理员身份运行64位Visual Studio。我登录的用户不是管理员。

编辑

@IInspectable解决了它。该值是在管理员的配置单元(而不是我的)下添加的,因此为什么它不可见。

1 个答案:

答案 0 :(得分:1)

注册表功能都返回类型LSTATUS的所有返回值,指示它们是成功还是失败。如果RegCreateKey失败,则RegSetValueEx值上的HKEY也显然会失败。另外,如果RegCloseKey失败(不太可能),则未决的写入可能不会刷新到注册表。

if(RegCreateKeyA(...) != ERROR_SUCCESS)
{
    // Handle error
}
if(RegSetValueExA(...) != ERROR_SUCCESS)
{
    // Handle error
}