Quiero ejecutar mi aplicación de consola C# como administrador sin UAC en una cuenta que no sea de administrador. El problema es que cuando desactivo UAC con el Programador de tareas o el kit de compatibilidad de Microsoft, mi aplicación se ejecuta sin derechos de administrador. La única vez que puedo interrumpir una aplicación con privilegios de administrador es cuando hago clic derecho, ejecuto como administrador e ingreso la contraseña. Pero no quiero hacer eso. Quiero ejecutar la aplicación en una cuenta que no sea de administrador y con privilegios de administrador. No sé dónde está el problema. Cuando intento ejecutar una aplicación con "runas" y uso una cuenta de administrador con la contraseña correcta, aparece un mensaje emergente: acceso denegado. No sé si el problema está en mi aplicación o en algún otro lugar.
Gracias
Respuesta1
Agregue el archivo de manifiesto de la aplicación e ingrese el siguiente código
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Respuesta2
El proceso de utilizar el Programador de tareas para "ejecutar con los privilegios más altos" no es la forma de evitar UAC.
Si tiene una aplicación que necesita ejecutarse e interactuar con el usuario que inició sesión, entonces esa aplicación se ejecutará con los permisos del usuario. Puede utilizar el programador de tareas para ejecutar una tarea como un usuario diferente, pero luego no interactuará con el usuario que inició sesión. La ejecución de una tarea como usuario que ha iniciado sesión limita la aplicación al permiso más alto que tenga el usuario.
El otro procedimiento de utilizar el kit de herramientas de compatibilidad de aplicaciones tampoco resuelve el problema. Lo que esto hace es tomar una aplicación que se comporta mal y que "requiere" una contraseña de administrador pero que en realidad no "necesita" permisos de administrador y hacer que se ejecute sin ningún aviso de UAC/administrador.
Si su aplicación "requiere" permisos de administrador, entonces el usuario TIENE que ejecutar la aplicación como otro usuario con permisos de administrador utilizando el nombre de usuario y la contraseña de ese usuario o fallará.
Deshabilitar UAC en la computadora no solo reducirá severamente la seguridad del sistema, sino que hará que cuando ejecute cualquier aplicación con una cuenta de usuario limitada, ni siquiera se le pedirá que actualice con las credenciales de un usuario administrador y su aplicación. si requiere acceso de administrador, fallará.
El problema aquí es que su aplicación requiere permisos de administrador. Eso es lo que hay que arreglar. ¿Qué hace que requiera permisos de administrador? ¿Por qué? Rediseñelo para que no sea así. De lo contrario, no existe una forma "segura" de permitir que un usuario que no sea administrador ejecute una aplicación con permisos de administrador. Ya no es una práctica aceptable, y no lo ha sido desde hace años, diseñar aplicaciones que requieran ese nivel de permiso para que las utilicen los usuarios estándar.
Si es absolutamente necesario que un usuario estándar ejecute una aplicación como administrador, puede usar el comando "runas" o algunas herramientas de administrador de terceros que permiten a un usuario solicitar acceso y a un administrador responder de forma remota para permitir la aplicación. Nuevamente, el problema es la aplicación, no el sistema operativo. Intentar solucionar esto no sería aceptable en la mayoría de los casos de uso que requerían que los usuarios usaran cuentas limitadas en primer lugar.