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

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

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

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
64
задан H.B. 1 December 2011 в 17:40
поделиться

2 ответа

Вы можете добавить в свой метод атрибут PrincipalPermission для требования административных привилегий для его выполнения:

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

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

Security Principles and Local Admin Rights in C# .Net

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

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

Запуск MyElevatedCom Server без запроса учетных данных администратора от Standard User

Update (из комментария)

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

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();
83
ответ дан 24 November 2019 в 15:56
поделиться

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

15
ответ дан 24 November 2019 в 15:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: