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



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



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



[RequireAdminRightsForThisMethod()]

private void TheMethod(){

// Do something

}
412   2  

2 ответов:

вы можете добавить 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();

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

Comments

    Ничего не найдено.