我正在编写一个 C# 应用程序,它将修复整个组织中损坏的注册表项。我正在尝试使用 RegistryKey、RegistrySecurity 和 RegistryAccessRule 这三个类,当我尝试使用它们时,我得到一个“不允许请求的注册表访问。”。我对此进行了广泛的搜索,但找不到好的解决方案。
我正在尝试修复的密钥,对它们没有权限(请参见下面的屏幕截图)。它们是空白的并且没有可继承的设置。这不允许我使用我的应用程序修复它们,因为我没有权限,但我可以使用运行此应用程序的用户更改权限,就像我打开 regedit 一样。所以我知道我可以通过手动方式向这个用户添加对损坏机器的权限,但由于某种原因,我的应用程序无论我多么努力地告诉它提升自己都无法获得权限。
我尝试过的事情:
- 在 Windows 7 上,当您使用 UAC 运行应用程序时,它可以工作,右键单击以管理员身份运行。我想复制能够在 Windows XP 上使用相同的代码执行此操作。
- 我使用“highestAvailable”级别创建了一个清单,并尝试了“requireAdministrator”。
- 我也尝试过使用“System.Security.Permissions.RegistryPermission”断言,这显然也会带来更高级别的运行权限。
- 我没有从网络共享运行它,尽管我已经尝试了本地和网络来查看它将从哪个安全区域运行。
您可以看到权限如下所示:http: //i.stack.imgur.com/0c99s.jpg
任何帮助表示赞赏!