Blog

.Net C# – Ejecutar aplicaciones como administrador

Posted by:

El problema de permisos

Al programar aplicaciones para Windows 7 (ya pasaba en Vista), pero no merece la pena mentarlo, la UAC (User Account Control) no permitía modificar según que directorios del sistema por tratarse de directorios “sensibles”, tales como el directorio Windows o Archivos de Programas (program files) entre otros.

La manera de verificar si el problema de permisos que teníamos era motivado por el UAC, era coger la aplicación y ejecutarla en modo administrador. Si de esta manera podíamos ejecutarla sin problemas, entonces podíamos solucionarlo ejecutando la aplicación de dos maneras:

Botón derecho: ejecutar como administrador

En las propiedades del archivo ejecutable, marcar el check “ejecutar como Administrador”.

¿Sencillo, no? Pues no, porque si hacemos una aplicación para distribuir masivamente, no podemos decirles a los usuarios que salten a pata coja, se cojan la oreja con la mano izquierda y con la lengua se toquen la nariz.

Es tarea del programador hacer que la aplicación sea sencilla y usable en su nivel máximo, por lo que vamos a ver que opciones tenemos para que el usuario final simplemente tenga que dar dos clicks en el icono para ejecutar la aplicación.

El manifiesto de una aplicación

Un manifiesto de aplicación es un archivo XML que describe una aplicación implementada mediante ClickOnce. Pero si queréis más información, os dejo aquí el link de msdn para que os culturiceis.

Del manifiesto, realmente lo que nos interesa en esta situación es que nos va a permitir decir a la aplicación que se ejecutará con derechos de adminitrador, y así nuestros usuarios (pequeños lusers) no tendrán que saltar a la pata coja ni hacer nada raro. Unicamente deberán aceptar cuando les aparezca el mensaje que la aplicación necesita correr con derechos de administrador.

Pero vamos paso a paso:

CÓMO CREAR UN MANIFIESTO O UN FICHERO MANIFIESTO

Pues desde el explorador de soluciones, añadimos un nuevo elemento “Archivo de manifiesto de aplicación”.

Una vez tengamos nuestro fichero, hemos de hacer una pequeña modificación en el requested Execution Level para dejarlo en “requireAdministrador” en lugar de “asInvoker“.

XML:

  1. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Level Description
asInvoker Does not require elevation, runs without requesting elevation using privileges of its parent process.
highestAvailable Requests the highest available privilege tokens of its parent process. An administrator account will attempt to elevate to full administrator level, but a standard account will only request elevation to its own highest set of access tokens.
requireAdministrator Requires elevation to full administrator privileges.

Propiedades de la Aplicación

Finalmente, en las propiedades de la aplicación, incluiremos nuestro manifiesto modificado para ejecutarse en modo administrador.

En la opción de aplicación, en recursos debemos especificar el icono por defecto y el fichero Manifiesto.

3


About the Author:

Discussion

  1. jose Berron  August 21, 2012

    Muchas gracias por tu ayuda compañero. Me a venido fenomenal porque estaba teniendo este mismo problema.
    Solo añadir una cosa, no es necesario que la instalación sea clickonce vale para cualquier programa hecho en .net

    Saludetes

  2. Christian LL  October 4, 2012

    Estupendo amigo, me fue de maravillas gracias por tu aporte

  3. ALFREDO  December 3, 2012

    Buen articulo.
    Muy útil.

Add a Comment

UA-30641277-1