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()
解决。谢谢大家。
我看到 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()
解决。谢谢大家。