我正在编写一个在注册表中设置键/值的函数。我有一个问题:
我调用RegOpenKeyEx()并返回ERROR_SUCCESS和
然后我调用RegSetValueEx来设置键/值,但它返回ERROR_ACCESS_DENIED
RegOpenKeyEx((HKEY)hive, branch.c_str(), NULL, ACCESS_SYSTEM_SECURITY, &hkey_result);
RegSetValueEx(hkey_result, name.c_str(), 0, REG_SZ, (BYTE*)value.c_str(),
((DWORD)wcslen(value.c_str()) + 1)* sizeof(wchar_t));
我的功能在Windows 7上运行,我的程序也通过使用vs2010 IDE
嵌入清单来设置UAC我想设置键/值的分支: HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \ Explorer中\ FileExts \ html的\ UserChoice
我认识到,当我在UserChoice上选择权限菜单(使用注册表编辑器(Regedt32.exe))时,它具有“特定权限”字段,并在“拒绝”列上选中“设置值”项目
大家好!你能救我吗?
答案 0 :(得分:2)
您的RegOpenKeyEx电话上的访问级别错误。 ACCESS_SYSTEM_SECURITY不是列出here的有效选项之一。
ACCESS_SYSTEM_SECURITY的值对应于与SYNCHRONIZE |相同的值STANDARD_RIGHTS_REQUIRED。这些标志会影响标志的首字,注册表访问权限位于底部字词中。
如果KEY_WRITE没有为您提供足够的访问权限,请尝试使用KEY_WRITE或KEY_ALL_ACCESS。
答案 1 :(得分:2)
将ACCESS_SYSTEM_SECURITY
更改为KEY_SET_VALUE
。
答案 2 :(得分:0)
设置注册表项下指定值的数据和类型。
打开的注册表项的句柄。密钥必须已使用 KEY_SET_VALUE 访问权限打开。有关更多信息,请参见Registry Key Security and Access Rights。
来自:https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexa