我已经搜索了很长一段时间来解决这个问题。至少我认为我理解这个问题,但我还没有找到任何解决方案。
我需要的是某种可执行文件或删除某些注册表项的脚本。问题是有问题的注册表项仅授予对 SYSTEM 的读/写访问权限,而没有其他人。我可以删除它们的唯一方法是进入 regedit,将自己设置为所有者,最后将完全控制权设置给每个人。只有这样才能删除密钥。我需要这个过程在某种脚本中!
所以在 C# 中,我首先要确保软件具有管理权限。然后我尝试执行以下操作。
RegistryKey reg_localmachine = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
RegistryKey key = reg_localmachine.OpenSubKey(@"SYSTEM\path to subkey", true);
在第二行,当我尝试使用写访问权限访问子键时,我收到异常“请求的注册表访问权限不被允许”。为了让我更改所有者或授予权限,我需要在 RegistryKey 上执行 SetAccessControl()。为了设置访问控制,我需要密钥的写入权限。所以我陷入了这个悖论。