TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #2248 2.78K
День 1859. #ЗаметкиНаПолях
Как Принудить Запускать Приложение от Имени Администратора

Чтобы заставить приложение запускаться в 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/
  • 👍 20
  • 👎 1
More from @netdeveloperdiary
  1. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
  2. Oct 7, 2026День 2807. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Окончание Нач…
  3. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  4. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  5. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  6. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →