В приложении запрос на повышение привилегий C # .NET - PullRequest
1 голос
/ 29 марта 2012

У меня есть приложение, которое в редких случаях должно изменить настройки реестра.Также во время первого выполнения необходимо создать новый ключ.Я разрабатываю это в Windows 7. Я получаю ThrowUnauthorizedAccessException.Как заставить Windows выдать приглашение UAC на временное повышение разрешений?

Заранее спасибо.

1 Ответ

3 голосов
/ 04 мая 2012

Разрешено ли всем пользователям изменять этот параметр?Если это так, самое простое решение состоит в том, чтобы изменить вашу программу установки, чтобы дать Users Full Control раздела реестра.

Если только администраторы смогут изменять этот параметр, вам нужно будет запустить еще одну копию вашей программы, попросив Windows поднять ее:

ProcessStartInfo startInfo = new ProcessStartInfo("C:\Path\To\MyApplication.exe");

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled)

System.Diagnostics.Process.Start(startInfo);

Если бы вы были умны, вы бывключите некоторые аргументы командной строки, чтобы вы могли сказать «себе», что он должен перейти прямо к той части программного обеспечения, с которой пользователь должен иметь дело.Или ваши аргументы командной строки могут просто сказать , что вы хотите сделать:

ProcessStartInfo startInfo = new ProcessStartInfo(
      "C:\Path\To\MyApplication.exe", 
      "/setLoggingEnabled yes");

startInfo.Verb = "runas"; //trigger a UAC prompt (if UAC is enabled)       

System.Diagnostics.Process.Start(startInfo);

Попросите ваше приложение проверить переключатель setLoggingEnabled, внесите изменения и затем выйдите.

Обновление : распространенная ситуация - игроки World of Warcraft .Поскольку игре разрешено обновлять себя во время работы, всем пользователям должно быть разрешено изменять игровые данные, сидящие в Program Files.Правильное и действительное действие заключается в изменении списков ACL для папки

C:\Program Files\Blizzard\World of Warcraft

, чтобы все пользователи имели полный контроль.Фактически, еще до того, как Blizzard начали действовать, Microsoft выпустила обновление совместимости приложений, которое дает всем пользователям полный контроль над папкой WoW при следующем запуске в качестве администратора.

Другой распространенный случай - когда Blizzard Launcher запускается с правами администратора, он обновляет раздел реестра в HKLM, записывая , где игра.Это происходит, когда, например, я перемещаю WoW с жесткого диска на SSD-диск

запускаю программу запуска один раз как администратор, чтобы программы обновления работали правильно.

...