Как Принудить Запускать Приложение от Имени Администратора
Чтобы заставить приложение запускаться в Windows от имени администратора, нужно добавить и изменить файл манифеста приложения. Манифест приложения — это XML-файл, который предоставляет информацию о приложении операционной системе.
Начнем с создания консольного приложения:
dotnet new console -n AdministratorApp
После этого в свойствах проекта добавим целевую ОС Windows.
<TargetFramework>net8.0-windows</TargetFramework>
Также нужно включить в проект файл app.manifest. В Visual Studio это можно сделать, щелкнув правой кнопкой мыши проект, выбрав Add > New Element… (Добавить > Новый элемент…). В появившемся окне найти Application Manifest file (Windows only) (Файл Манифеста приложения (только Windows)).
В файле app.manifest измените:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
на:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Это заставит приложение требовать административных привилегий.
Теперь проверим административные привилегии в файле Program.cs:
using System.Security.Principal;
var p = new WindowsPrincipal(
WindowsIdentity.GetCurrent());
if (p.IsInRole(WindowsBuiltInRole.Administrator))
Console.WriteLine("Admin mode");
else
Console.WriteLine("Not Admin mode");
Класс WindowsIdentity представляет личность пользователя Windows. WindowsIdentity.GetCurrent() получает личность пользователя, исполняющего текущий процесс, т.е. пользователя, запустившего приложение.
Объект WindowsPrincipal создаётся на основании WindowsIdentity и представляет собой контекст безопасности пользователя, что позволяет проверить его роль.
Теперь можно запустить приложение. В зависимости от ваших настроек Windows, вам либо будет предложено повысить привилегии и запустить приложение от имени администратора, либо приложение будет запущено, но выдаст ошибку:
Unhandled exception: System.ComponentModel.Win32Exception (740):
An error occurred trying to start process
'C:\...\AdministratorApp.exe' ….
The requested operation requires elevation.
Возникает исключение System.ComponentModel.Win32Exception с кодом ошибки 740 «Запрошенная операция требует повышения прав». Подразумевается, что мы можем запускать наше приложение только с правами администратора.
Если запустить приложение от имени администратора, мы увидим в консоли вывод:
Admin mode
Источник: https://code-maze.com/csharp-how-to-force-run-net-application-as-administrator/