Вы можете добавить атрибут PrincipalPermission
к вашему методу, чтобы требовать административные привилегии для его выполнения:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void MyMethod()
{
}
Это более подробно описано в следующей статье:
Принципы безопасности и права локального администратора в C # .Net
Если вы ищете способ поднять уже существующийПроцесс Я сомневаюсь, что это возможно, так как права администратора передаются процессу на уровне процесса при запуске (см. этот связанный вопрос ).Вам нужно запустить приложение «как администратор», чтобы получить желаемое поведение.
Однако есть некоторые приемы, которые могут позволить вам делать то, что вы хотите, но имейте в виду, что это может создать серьезные угрозы безопасности.,См. Следующую ветку на форумах MSDN:
Запуск сервера MyElevatedCom без запроса учетных данных администратора от обычного пользователя
Обновление (из комментария)
Кажется, что если обновление требует повышения прав, обновление вашего приложения лучше всего выполнять отдельным процессом (либо другим исполняемым файлом, либо приложением, вызываемым с помощью переключателя командной строки).Для этого отдельного процесса вы можете запросить повышение прав следующим образом:
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();