Раздел навигации

Запуск программы от имени администратора

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
.NET software developer
Пользователь
Регистрация
20 Мар 2022
Сообщения
76
В этом уроке мы научимся сделать так, чтобы программу, написанную на C#, можно было принудительно запустить с правами администратора

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

Типы разрешений, применяемые к программе

  • asInvoker - приложение выполняется на том же уровне разрешений, что и процесс, который его запустил​
  • highestAvailable - приложение работает с наивысшим уровнем разрешений, который он может иметь​
  • requireAdministrator - приложение запускается с правами администратора​
Нам будет нужно как раз таки последнее разрешение для программы.

Реализация

Теперь перейдем к реализации нашей задачи. Выполнять её мы будем через манифест программы. Изначально, в новой программе, его нет, по умолчанию он не создаётся. Давайте создадим его:
  1. В обозревателе решений нажмем ПКМ по нашему проекту
    1661250375892.png
  2. Далее нажмём на "Добавить" -> "Создать элемент"
    1661250535493.png
  3. Листаем список до элемента "Файл манифеста приложения(только Windows)" и выбираем его(внизу можете выбрать свое имя файла манифеста программы)​
  4. После создания и открытия файла мы видим перед собой небольшой XML файл, в котором описана некоторая важная информация для запуска нашей программы. Нам нужно то, где написано "Параметры манифеста UAC". По умолчанию в манифесте у нас включено разрешение "asInvoker", описывал которое я выше. В нашем случае нам нужно, чтобы программа принудительно запрашивала права администратора при запуске, для этого вместо строчки с "asInvoker" вставляем строчку с "requireAdministrator", которую мы скопировали из комментария(то, что зелёным цветом - комментарий в XML)
    1661250980585.png
    1661251058651.png
  5. Готово
    1661251171997.png
    Осталось только купить сертификат Authenticode, чтобы быть проверенным издателем :3​
 
Сверху