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?.
- Agregar fichero de manifiesto (manifest) a aplicación Visual Studio .Net C# C Sharp.
- 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.
- Ejecución de una aplicación con privilegios elevados o elevación de privilegios y comprobar que solicita este tipo de acceso.
¿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.
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»:
Buscaremos y seleccionaremos «Archivo de manifiesto de aplicación» y pulsaremos en «Agregar»:
Se abrirá la ventana de edición para el fichero app.manifest:
Modificaremos la línea:
1 |
<requestedExecutionLevel level="asInvoker" uiAccess="false" /> |
Por:
1 |
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> |
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 ….»:
En «Aplicación», en «Manifiesto» elegiremos el fichero de manifiesto creado anteriormente, por defecto «app.manifest»:
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:
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:
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.
Al ejecutar una aplicación de este tipo, con elevación de privilegios, Windows mostrará este mensaje antes de ejecutarla:
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.