如何修改System拥有的注册表值

时间:2015-04-27 09:48:45

标签: c++ windows winapi com registry

我试图更改注册表值,结果收到此错误代码(错误代码1:功能不正确。)。

我在ModifyValue内收到此错误代码RegSetValueEx。该方法定义如下: utils.h

有人可以帮助我吗?

我已经在GitHub上传了代码: https://github.com/mariopavlov/C/tree/master/RegistryManipulations

提前谢谢你, 马里奥。

1 个答案:

答案 0 :(得分:2)

Windows保护这些注册表值,因为它们的更改可能会影响(损坏)许多应用程序和子系统。代码(正确)尝试通过首先从系统获取密钥来解决此问题,以便您可以在不久之后中断系统。

显然你没有写这个代码并在互联网上的某个地方搜索过它。问题出现在应用程序的第一个API调用中:

path = L"SOFTWARE\\Classes\\Interface\\{00020400-0000-0000-C000-000000000046}\\ProxyStubClsid32\\";
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, regsam, &handleToKey))

此操作失败并且您没有打开密钥(因为过多的反斜杠)。您应该检查ERROR_SUCCESS的操作状态。当应用程序尝试使用带有followign API调用的零句柄时,您会收到更多错误,并且获得1的API返回代码也会有错误的解释,因为您应该在那里获得6(错误的句柄)

修复此问题后,您最终会修改该值,但此处的另一个提醒是,它可能会损坏相当多的已安装应用程序的正常运行。