¿Cómo configuro mi aplicación para que se ejecute como administrador automáticamente?


9

He creado un archivo de parche con un ejecutable dentro de él usando la función Winrar SFX.
Después de ejecutar el archivo SFX y la extracción termina, mi archivo ejecutable nunca se ejecutará porque no tiene privilegios de administrador. Me pregunto CÓMO puedo otorgar acceso de administrador a ese archivo mediante alguna forma de programación (como un archivo por lotes).

Sé que puedo hacer clic derecho en él, ir a "Propiedades", elegir la pestaña "Compatibilidad" y luego marcar la casilla "Ejecutar como administrador".

El problema es que los usuarios que descargarán ese parche no lo saben (y mi exe solo se ejecuta cuando hace clic derecho y elige "Abrir como administrador", de lo contrario, nunca se abrirá ni mostrará la ventana emergente de UAC).

He intentado algunas formas, como "Elevator Runner (Elevate me)", etc., pero en realidad estoy buscando algo más simple que.
Solo necesito hacer que el exe siempre se ejecute como administrador.


2
Nota para los mods: aquí no se requiere migración a SO .
Karan

Respuestas:


15

Lo que debe hacer es incrustar un manifiesto de aplicación en el EXE.

  1. Guarde lo siguiente como un archivo de texto llamado App.exe.manifest :

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. Descargue el SDK de Windows.

  3. En su interior encontrará mt.exe, es decir, la herramienta de manifiesto . Invocarlo de la siguiente manera:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. Si no hay errores, ya está hecho. Puede eliminar el archivo de manifiesto y distribuir solo el EXE. Ejecutarlo debería hacer que solicite automáticamente acceso de administrador cada vez.

Fuente


Lo probaré Por cierto, ¿es posible hacer que este "Manifiesto" sea un poco mejor? ¿Le gusta hacerlo ejecutándose como administrador sin solicitar acceso de administrador? Gracias
Rafael Vidal

¿Significa que quiere que se eleve silenciosamente y obtenga acceso de administrador? A menos que apague UAC, eso no es posible, de lo contrario, ¿cuál sería el punto de UAC y no cree que cada malware lo haría?
Karan

Entiendo su punto, pero sé que hay formas ... no es fácil seguro, pero hay, como el programa "Elevate Me" ... De todos modos, hacer que el exe se ejecute como administrador es suficiente por ahora. Realmente gracias de antemano
Rafael Vidal

1
Todos estos programas para evitar el aviso de elevación utilizan el conocido truco del Programador de tareas que requiere acceso de administrador. Como está buscando hacer esto en cualquier PC arbitraria donde se ejecute su SFX, no puede crear silenciosamente la tarea programada sin el consentimiento del usuario estándar. De hecho, si algún programa hiciera esto en mi PC (crear silenciosamente una tarea programada para omitir UAC), lo clasificaría instantáneamente como malware y lo eliminaría.
Karan

Bastante bueno Karan, funcionó perfectamente. Solo sugeriría que agregue a la respuesta la necesidad de ejecutar CMD como ADMIN, de lo contrario no funcionará ... Gracias nuevamente
Rafael Vidal

2

Al crear su archivo, solicite acceso administrativo .ingrese la descripción de la imagen aquí


MDMoore313 gracias por su tiempo, pero supongo que no me expliqué bien. No necesito ejecutar SFX como administrador. Necesito ejecutar un archivo específico como admin ("my_app.exe"), que se encuentra dentro del archivo SFX. El punto es que al hacer doble clic en ese archivo, no se ejecutará. La única forma de ejecutarlo es hacer clic derecho y elegir "Ejecutar como administrador"
Rafael Vidal

@RafaelVidal ¿SFX lanza su aplicación? Si es así, su aplicación tendrá derechos de administrador. Si no, actualizaré mi respuesta.
MDMoore313

No, no inicia la aplicación. El usuario debe hacerlo manualmente, por lo que puede marcar la casilla "Ejecutar como administrador" en la pestaña "Compatibilidad" o hacer clic con el botón derecho en el menú contextual "Ejecutar como administrador"
Rafael Vidal

@RafaelVidal ¿Hay alguna razón por la que no desea que WinRAR inicie el exe y simplemente haga que el usuario ejecute el SFX? parece que eso lograría el mismo objetivo y resolvería su problema de administración. Si todavía está enfocado en marcar su programa para que se ejecute como administrador, tendría más posibilidades de obtener una respuesta en el desbordamiento de pila (
marque

SFX inicia el archivo, pero los usuarios pueden ejecutar ese archivo por sí mismos más adelante y luego no habrá SFX para ejecutarlo. Es por eso que el exe debe ser marcado como "ejecutar como administrador"
Rafael Vidal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.