1. AsInvoker: Al tener esta entrada en el ensamblado, la aplicacion obtiene los privilegios de aquel usuario o proceso que lo ejecuto, esta configuracion es la que se establece por defecto en cualquier proyecto nuevo
2. HighestAvailable: Con esta entrada, la aplicacion exije los privilegios mas altos posibles de acuerdo al usuario que ejecuto el programa, si se ejecuta como un usuario administrador, la aplicacion nos hara la peticion mediante un prompt de UAC para ejecutarse con los privilegios mas altos
3.requireAdministrator: Esta declaracion en el manifiesto establece que la aplicacion requiere los privilegios de administrador del sistema para poder ejecutarse, este nivel de ejecucion tambien haria una solicitud de confirmacion para un usuario Administrador y un prompt de Runas para un usuario con una cuenta limitada, esto quiere decir que solicitaria las credenciales (usuario y password) del administrador del sistema
Para establecer esta configuracion lo primero es ir a la configuracion de nuestra aplicacion, en el explorador de soluciones hacemos doble click en "My project"
Esto abrira la configuracion de nuestra aplicacion, en la primera pestaña tenemos la configuracion de la UAC
Podemos ver que ahi se especifica con lineas comentadas las posibles opciones que podemos establecer para el requestedExecutionLevel y solo con cambiar el atributo level a "requireAdministrator" ya tendriamos establecida la configuracion de la UAC para solicitar privilegios.
Solo bastaria guardar los cambios, al compilar la aplicacion, el visual studio puede que requiera reiniciar.
En nuestra carpeta de release podemos ver que nuestra aplicacion ahora aparece con el clasico escudo de Windows vista para una aplicacion con privilegios
Listo!, ya tenemos una aplicacion que aunque depende de la confirmacion del usuario para ejecutarse ya podria realizar tareas administrativas evitando el error de UnauthorizedAccessException.
Hay que tomar en cuenta que, si estamos creando una aplicacion implementando ClickOnce no nos es posible modificar esta configuracion, ya que, como maneja diversos niveles de confianza añade otras entradas al ensamblado y el nivel de ejecucion debe ser "AsInvoker", ya que si lo cambiamos provocariamos un error de compilacion.
Tampoco se podria establecer esta configuracion en librerias dll ya que estas heredan los privilegios de la aplicacion que las contiene referenciadas.
Ejemplo realizado en Visual Studio 2008
No hay comentarios:
Publicar un comentario