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