RegOpenKeyEx 在 HKLM 上失败,即使启用了 requireAdministrator

RegOpenKeyEx fails on HKLM even tho requireAdministrator is enabled

我看到 说要访问 Windows 注册表项,您需要在清单文件中具有 requireAdministrator 执行级别。关于注册表虚拟化的一些事情。

我正在使用 Visual Studio 2017,在项目设置(链接器 - 清单文件)中,我将执行级别更改为 requireAdministrator(VS17 要求我 运行 它具有调试程序的管理员权限),但仍然无法正常工作。

编辑:所有注册表功能 return 没有错误(声称一切正常)。这是一个片段:

void AddStartupKey(char* path)
{
    HKEY hKey;
    LPCTSTR sk = TEXT("SOFTWARE\Microsoft\Windows\CurrentVersion\Run");

    RegOpenKeyEx(HKEY_LOCAL_MACHINE, sk, 0, KEY_ALL_ACCESS, &hKey);

    LPCTSTR value = TEXT("Test");

    RegSetValueEx(hKey, value, 0, REG_SZ, (LPBYTE)path, strlen(path));

    RegCloseKey(hKey);
}

path 等于 argv[0] (exe 路径).

我的问题是,为什么所有功能都成功了,却没有向键添加任何值?

编辑:这是 VS17 中清单设置的屏幕截图:

通过将 KEY_WOW64_64KEY 添加到 RegOpenKeyEx() 解决。谢谢大家。