我看到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中的清单设置的屏幕截图:
答案 0 :(得分:1)
解决了将RegOpenKeyEx()
添加到\\
的问题。谢谢大家。