SQL – Duplicar estructura y datos de una tabla
22/03/2012Oracle: Calcular primer y último día del mes
28/03/2012El 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".
-
<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 Comments
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
Estupendo amigo, me fue de maravillas gracias por tu aporte
Buen articulo.
Muy útil.