Derechos de administrador para un solo método

¿Es posible exigir derechos de administrador para un único método?

Algo como esto:

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

Puede agregar un atributo PrincipalPermission a su método para exigir privilegios administrativos para su ejecución:

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

Esto se describe con más detalle en el siguiente artículo:

Principios de seguridad y derechos de administrador local en C # .Net

Si está buscando una manera de elevar un proceso ya existente, dudo que esto sea posible ya que los privilegios de administrador se otorgan en el proceso a un proceso al inicio (consulte esta pregunta relacionada). Tendría que ejecutar su aplicación “como administrador” para obtener el comportamiento deseado.

Sin embargo, hay algunos trucos que podrían permitirle hacer lo que desea, pero tenga en cuenta que esto podría generar riesgos de seguridad graves. Vea el siguiente hilo en los foros de MSDN:

Ejecución del servidor MyElevatedCom sin solicitar credenciales de administrador del usuario estándar

Actualización (del comentario)

Parece que si una actualización requiere elevación, la actualización de la aplicación se realiza mejor mediante un proceso separado (ya sea otro ejecutable o su aplicación llamada con un modificador de línea de comando). Para ese proceso separado, puede solicitar la elevación de la siguiente manera:

 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(); 

Un método puede requerir privilegios administrativos para ejecutarse, pero no es posible elevarlo automáticamente a Admin al ejecutar un método.