我正在尝试使用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解决了它。该值是在管理员的配置单元(而不是我的)下添加的,因此为什么它不可见。
答案 0 :(得分:1)
注册表功能都返回类型LSTATUS
的所有返回值,指示它们是成功还是失败。如果RegCreateKey
失败,则RegSetValueEx
值上的HKEY
也显然会失败。另外,如果RegCloseKey
失败(不太可能),则未决的写入可能不会刷新到注册表。
if(RegCreateKeyA(...) != ERROR_SUCCESS)
{
// Handle error
}
if(RegSetValueExA(...) != ERROR_SUCCESS)
{
// Handle error
}