Можно ли требовать права администратора для одного метода?
Что-то вроде этого:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
Можно ли требовать права администратора для одного метода?
Что-то вроде этого:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
Вы можете добавить в свой метод атрибут PrincipalPermission требовать административных привилегий для его выполнения:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void MyMethod()
{
}
Более подробно это описано в следующей статье:
Принципы безопасности и права местного администратора в C # .Net
Если вы ищете способ повысить уровень уже существующего процесса, я сомневаюсь, что это возможно, поскольку права администратора предоставляются процессу на уровне процесса при запуске (см. Этот связанный question). Вам нужно будет запустить ваше приложение «от имени администратора», чтобы добиться желаемого поведения.
Однако есть некоторые уловки, которые могут позволить вам делать то, что вы хотите, но имейте в виду, что это может создать серьезные риски для безопасности. См. Следующую ветку на форумах 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();
Request for principal permission failed. Я использую WPF и пытаюсь записать файл внутри Program Files.
- person Mangesh; 02.03.2015
Для запуска метода могут потребоваться административные привилегии, но невозможно автоматически повысить уровень до администратора при выполнении метода.