Запрошенный доступ к реестру не разрешен
Я пишу утилиту настройки, которая модифицирует некоторые ключи под HKEY_CLASSES_ROOT
.
Все работает отлично под Windows XP и так далее. Но я получаю ошибку. Requested registry access is not allowed
в Windows 7. Vista и 2008, я думаю, тоже.
Как мне изменить свой код, чтобы добавить поддержку UAC?
- Разрешить стандартным пользователям запускать программу, требующую повышения UAC
- Как запросить доступ администратора к пакетному файлу
- В Windows 7 можно сделать UAC в приглашении учетной записи администратора для пароля, точно так же, как ограниченная учетная запись?
- Как сделать снимок экрана защищенного рабочего стола Windows?
- Как назначить разрешения для управления услугами Windows при включенном UAC?
- Запустить повышенную командную строку в% UserProfile% по умолчанию?
- UAC отключается один раз в день в Windows 7
- Можете ли вы заставить Visual Studio работать в качестве администратора в Windows 8?
- Запустить exe из сетевого ресурса, с правами администратора?
- Как я могу получить приглашение UAC / elevation для запоминания моего локального имени пользователя?
- Как добавить манифест info в проект delphi
- Запретить повышение (UAC) для неподписанного приложения
- Запустите программу из контекстного меню с admin priveledges (vista UAC)
app.manifest
должен выглядеть следующим образом:
Если вам не нужны админы для всего приложения или только для нескольких редких изменений, вы можете внести изменения в новый процесс и запустить его, используя:
Process.StartInfo.UseShellExecute = true; Process.StartInfo.Verb = "runas";
который будет запускать процесс как администратор, чтобы делать все, что вам нужно, с реестром, но вернитесь в свое приложение с нормальными привилегиями. Таким образом, он не запрашивает у пользователя диалог UAC при каждом запуске.
Вы не можете писать на HKCR (или HKLM) ульи в Vista и более поздних версиях Windows, если у вас нет административных прав. Таким образом, вам нужно либо войти в систему как администратор, прежде чем запускать свою утилиту, дать ей манифест, который говорит, что для него требуется уровень администратора (который будет запрашивать у пользователя информацию для входа в систему администратора) или прекратить изменение вещей в местах, – Администраторы не должны играть. 🙂
В качестве временного исправления пользователи могут щелкнуть правой кнопкой мыши утилиту и выбрать «Запуск от имени администратора».
Я пытался использовать verb = "runas"
, но при попытке обновить значение реестра я все равно получал UnauthorizedAccessException. Оказалось, что это произошло из-за того, что не был открыт подраздел с возможностью записи в true.
Registry.OpenSubKey("KeyName", true);
Не удается записать ключ реестра, получив UnauthorizedAccessException
Эта проблема связана с предоставлением необходимого разрешения учетной записи пользователя, на которой выполняется приложение. Чтобы прочитать аналогичную ситуацию и подробный ответ на правильное решение, как описано в Microsoft, не стесняйтесь посетить этот пост: http://rambletech.wordpress.com/2011/10/17/requested-registry-access-is- не допускается/