即使启用了管理员,RegOpenKeyEx也会在HKLM上失败

时间:2018-03-16 18:12:17

标签: windows winapi registry startup

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

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

编辑:所有注册表函数都返回,没有错误(声称一切正常)。这是一个片段:

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中的清单设置的屏幕截图:

Visual Studio 2017 Manifest File Settings

1 个答案:

答案 0 :(得分:1)

解决了将RegOpenKeyEx()添加到\\的问题。谢谢大家。