У меня есть приложение на C #, которое я пишу для восстановления поврежденных разделов реестра во всей организации. Я пытаюсь использовать три класса RegistryKey, RegistrySecurity и RegistryAccessRule, и когда я пытаюсь использовать их, я получаю «Запрошенный доступ к реестру не разрешен». Я искал это широко и не могу найти хорошее решение.
Ключ, который я пытаюсь исправить, не имеет прав доступа к ним (см. Скриншот ниже). Они пустые и не имеют наследуемых настроек. Это не позволяет мне исправить их с помощью моего приложения, так как у меня нет разрешений, но я могу изменить разрешения для пользователя, с которым я запускаю это приложение, как будто я открываю regedit. Таким образом, я знаю, что могу добавить разрешения на сломанные машины вручную с этим пользователем, но по какой-то причине мое приложение, независимо от того, как сильно я приказываю ему поднять себя, не может получить разрешения.
Вещи, которые я пробовал:
- В Windows 7 это работает, когда вы запускаете приложение с UAC, щелкните правой кнопкой мыши запуск от имени администратора. Я хотел бы дублировать возможность сделать это на Windows XP с тем же кодом.
- Я создал манифест, используя уровень «highAvailable», а также пробовал «requireAdministrator».
- Я также пытался использовать утверждение "System.Security.Permissions.RegistryPermission", которое, очевидно, также повысит уровень разрешений для запуска.
- Я не запускаю его из общей сетевой папки, хотя я пробовал как локальную, так и сетевую, чтобы посмотреть, из какой зоны безопасности он будет работать.
Ниже показано, как выглядят разрешения:
http://i.stack.imgur.com/0c99s.jpg
Любая помощь приветствуется!