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

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

因此,在C#中,我首先要确保该软件具有管理权限。 然后,我尝试执行以下命令。

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

在第二行中,当我尝试通过写访问权限访问子项时,出现异常“不允许请求的注册表访问”。 为了更改所有者或授予权限,我需要在RegistryKey上执行SetAccessControl()。 为了设置访问控制,我需要密钥的写权限。 所以我处于这个悖论中。

===============>>#1 票数:1

安全是有原因的。

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

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

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

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

  ask by Tails86 translate from so

未解决问题?本站智能推荐: