Iniciar aplicación con privilegios de administrador usando archivo manifest en C# C Sharp .Net

Explicamos cómo forzar el inicio de aplicaciones desarrolladas con Visual Studio .Net C# C Sharp usando el archivo de manifiesto (manifest).

¿Por qué usar la elevación de privilegios en desarrollo de aplicaciones?

Este método solo será necesario para aquellas aplicaciones que desarrollemos que puedan requerir de privilegios elevados para su ejecución. Una aplicación «normal» no necesitará este tipo de privilegios.

Por ejemplo, si estamos desarrollando una aplicación que tiene que accede al Registro de Windows, o al Monitor de Eventos del sistema, es probable que necesite de elevación de privilegios. En cambio, una aplicación de facturación que accede a una base de datos no tiene por qué necesitar este tipo de acceso.

Si la aplicación al ejecutarse no tiene los privilegios suficientes mostrará, en tiempo de diseño, un error como este:

System.Security.SecurityException: ‘No se encontró el origen, pero no se pudo buscar en algunos o todos los registros de eventos. Registros inaccesibles: Security.’

El error anterior es por falta de privilegios en una aplicación que accede al EventLog (Visor de Sucesos del sistema), en otros casos el error puede ser diferente pero por el mismo motivo.

¿Por qué usar la elevación de privilegios en desarrollo de aplicaciones?

Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp

Cuando queremos que una aplicación se ejecute con elevación de privilegios, es decir, queremos que la ejecute un usuario administrador o un rol con estos permisos tendremos varias opciones. La más «sencilla» y que no requiere de código fuente adicional es usar el archivo de manifiesto, como explicamos a continuación.

Agregaremos un archivo de manifiesto (manifest file) a nuestra aplicación Visual Studio .Net C#. Para ello, desde el IDE de desarrollo y con el proyecto abierto, pulsaremos en «Proyecto» – «Agregar nuevo elemento»:

Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp

Buscaremos y seleccionaremos «Archivo de manifiesto de aplicación» y pulsaremos en «Agregar»:

Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp

Se abrirá la ventana de edición para el fichero app.manifest:

Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp

Modificaremos la línea:

Por:

Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp

De esta forma indicamos que la aplicación se ejecute con privilegios elevados.

Asignar fichero de manifiesto a aplicación Visual Studio .Net C# C Sharp

Una vez creado el fichero de manifiesto, el siguiente paso será establecerlo al proyecto. Para ello pulsaremos en «Proyecto» – «Propiedades de ….»:

Asignar fichero de manifiesto a aplicación  Visual Studio .Net C# C Sharp

En «Aplicación», en «Manifiesto» elegiremos el fichero de manifiesto creado anteriormente, por defecto «app.manifest»:

Asignar fichero de manifiesto a aplicación  Visual Studio .Net C# C Sharp

Compilar y depurar aplicación desde Visual Studio .Net con elevación de privilegios

Si compilamos el proyecto desde Visual Studio .Net sin haberlo ejecutado como administradores nos mostrará este mensaje de error:

Ejecutar aplicación y comprobar que solicita acceso como administrador (UAC)

Indicándonos que la ejecución de la aplicación requiere de permisos elevados y especificando que para depurar el programa iniciemos Visual Studio .Net como administradores:

De esta forma podremos iniciar la depuración de la aplicación desde Visual Studio .Net:

Ejecución de una aplicación con privilegios elevados o elevación de privilegios y comprobar que solicita este tipo de acceso

Si tenemos configurado el equipo Windows con el nivel de seguridad apropiado en Control de cuentas de usuario, que se puede consultar desde «Cambiar configuración de Control de cuentas de usuario», en el Panel de control:

Ejecución de una aplicación con privilegios elevados o elevación de privilegios y comprobar que solicita este tipo de acceso

Si el nivel es alto, como en la imagen siguiente, Notificarme siempre cuando:

  • Las aplicaciones intenta instalar software o hacer cambios en el equipo.
  • Realice cambios en la configuración de Windows.
Ejecución de una aplicación con privilegios elevados o elevación de privilegios y comprobar que solicita este tipo de acceso

Al ejecutar una aplicación de este tipo, con elevación de privilegios, Windows mostrará este mensaje antes de ejecutarla:

Ejecución de una aplicación con privilegios elevados o elevación de privilegios y comprobar que solicita este tipo de acceso

Con el texto: Control de cuentas de usuario. ¿Quieres permitir que esta aplicación de un anunciante desconocido haga cambios en el dispositivo?

Además, el ejecutable con la opción de elevación de privilegios se mostrará con un escudo en el icono:

De esta forma hemos comprobado que, efectivamente, la aplicación se ejecuta con privilegios elevados.

alonsojpd

alonsojpd

Presidente y fundador de Proyecto A y AjpdSoft

También te podría gustar...

Deja un comentario