En Vista y Windows 7 y posteriores, se ha añadido un mecanismo de seguridad llamado UAC (Control de Cuenta de Usuario), y si se activa UAC, incluso si el usuario inicia sesión con privilegios de administrador, sus aplicaciones no pueden escribir en el directorio del sistema, el registro del sistema y otras configuraciones que puedan afectar por defecto al funcionamiento normal del sistema. Este mecanismo mejora enormemente la seguridad del sistema, pero para los desarrolladores de aplicaciones no podemos obligar a los usuarios a desactivar el UAC, pero a veces la aplicación que desarrollamos necesita ejecutarse como administrador, ¿cómo lograr esa función? Así es como un programa en C# implementa la posibilidad de que el usuario ejecute con privilegios de administrador. En este ejemplo, el programa WinForm demuestra que se genera y modifica un nuevo proyecto en consecuencia: Método 1: Inicia vía System.Diagnostics.Process.Start(): Método de implementación: Modifica el archivo del programa generado por defecto, y el código modificado es el siguiente: Dado que el código ya ha sido comentado, no entrará en detalles; Efecto: Como se inicia llamando a la llamada externa de System.Diagnostics.Process.Start(), al ejecutarse directamente a través de VS, no solicitará a VS que necesite derechos de administrador, solo el propio programa necesita derechos de administrador, lo cual es diferente del programa que genera la aplicación. Esta es la principal diferencia respecto a la implementación del método 2. Método 2: Añadiendo un archivo manifiesto de aplicación: En el proyecto Añadir nuevo elemento, selecciona Archivo de manifiesto de la aplicación y haz clic en el botón Añadir Una vez añadido, el archivo app.manifest se abre por defecto, lo que hará: Modificado a: Luego abre las Propiedades del Proyecto y modifica el Manifest en Recursos de la pestaña Aplicaciones al nuevo app.manifest. Reconstruye el proyecto y, cuando vuelvas a abrir el programa, se te pedirá que ejecutes con privilegios de administrador. Ten en cuenta que si empiezas a depurar en VS, se te indicará que esta tarea requiere que la aplicación tenga privilegios elevados. Como se muestra a continuación: Selecciona Reiniciar con otras credenciales para hacerlo. Método 3: Modificar directamente las propiedades del archivo del programa Haz clic derecho en el archivo del programa en la pestaña de Compatibilidad en el cuadro de diálogo Propiedades que aparece Marca "Ejecutar este programa como administrador".
|