如何修改系统拥有的注册表值

How to modify Registry Value owned by System

本文关键字:拥有 注册表 系统 何修改 修改      更新时间:2023-10-16

我正在尝试更改注册表值,结果收到了此错误代码(错误代码1:函数不正确。)。

我在里面收到这个错误代码,ModifyValueRegSetValueEx的结果。该方法的定义如下:utils.h

有人能帮我吗?

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

提前感谢您,马里奥。

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(错误的句柄)。

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