Права администратора для одного метода

Возможно ли потребовать права администратора для одного метода?

Что-то вроде этого:

[RequireAdminRightsForThisMethod()] private void TheMethod(){ // Do something } 

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

 [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] public void MyMethod() { } 

Это описано более подробно в следующей статье:

Принципы безопасности и права местных администраторов в C # .Net

Если вы ищете способ поднять уже существующий процесс, я сомневаюсь, что это возможно, поскольку права администратора предоставляются на уровне процесса для процесса при запуске (см. Этот связанный вопрос ). Вам нужно будет запустить приложение «как администратор», чтобы получить желаемое поведение.

Однако есть некоторые трюки, которые могут позволить вам делать то, что вы хотите, но будьте предупреждены, что это может вызвать серьезные риски безопасности. См. Следующий stream на форумах MSDN:

Запуск MyElevatedCom Server без запроса учетных данных администратора от стандартного пользователя

Обновление (из комментария)

Похоже, что если для обновления требуется повышение, ваше обновление приложения лучше всего выполнять отдельным процессом (либо другим исполняемым файлом, либо вашим приложением, вызываемым с помощью командной строки). Для этого отдельного процесса вы можете запросить возвышение следующим образом:

 var psi = new ProcessStartInfo(); psi.FileName = "path to update.exe"; psi.Arguments = "arguments for update.exe"; psi.Verb = "runas"; var process = new Process(); process.StartInfo = psi; process.Start(); process.WaitForExit(); 

Метод может потребовать выполнения административных привилегий, но при выполнении метода невозможно автоматически поднять его до администратора.

Давайте будем гением компьютера.