0

我已经搜索了很长一段时间来解决这个问题。至少我认为我理解这个问题,但我还没有找到任何解决方案。

我需要的是某种可执行文件或删除某些注册表项的脚本。问题是有问题的注册表项仅授予对 SYSTEM 的读/写访问权限,而没有其他人。我可以删除它们的唯一方法是进入 regedit,将自己设置为所有者,最后将完全控制权设置给每个人。只有这样才能删除密钥。我需要这个过程在某种脚本中!

所以在 C# 中,我首先要确保软件具有管理权限。然后我尝试执行以下操作。

    RegistryKey reg_localmachine = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
    RegistryKey key = reg_localmachine.OpenSubKey(@"SYSTEM\path to subkey", true);

在第二行,当我尝试使用写访问权限访问子键时,我收到异常“请求的注册表访问权限不被允许”。为了让我更改所有者或授予权限,我需要在 RegistryKey 上执行 SetAccessControl()。为了设置访问控制,我需要密钥的写入权限。所以我陷入了这个悖论。

4

1 回答 1

1

安全是有原因的。

您不希望任何旧程序能够进入并开始在注册表中进行黑客攻击。

注册表中的每个条目都有自己的一组DACLS。只有两种解决方案:-

  1. 将运行程序的帐户更改为有权删除注册表项的帐户。

  2. 更改注册表项上的DACLS以包括您的程序正在运行的帐户。

于 2013-04-16T00:57:03.883 回答