windows - under - Cómo configurar "Ejecutar este programa como administrador" mediante programación
windows 10 shortcut run as administrator (7)
¿Has probado el Kit de herramientas de compatibilidad de aplicaciones de Microsoft? Analiza su aplicación y proporciona cuñas de compatibilidad que pueden ayudar a resolver su problema.
Tengo un problema con good ol ''bdeadmin.exe en Vista. Primero, saquemos las respuestas predecibles del camino:
"No debe exigir que su aplicación sea elevada".
Este lo hace Así es la vida.
"Necesita incrustar un archivo de manifiesto".
Ya está compilado, tiene muchos años, la compañía que lo creó no tiene intención de hacerlo nuevamente y se instala desde un Módulo de combinación (archivo MSM).
"BDE está obsoleto, debería usar dbExpress"
Un millón y medio de líneas de código. ''Dijo Nuff.
"Suelta un archivo de manifiesto al lado del EXE".
Intenté eso, no hice nada. Como prueba, ese mismo archivo de manifiesto fue capaz de hacer que varios otros archivos EXE requieran elevación, pero no el que yo quería. Algo allí impide que se lea el manifiesto externo.
"Crea un acceso directo y configura SLDF_RUNAS_USER".
No se puede hacer eso, es un applet del Panel de control.
Lo único que funcionó fue establecer "Ejecutar este programa como administrador" en la pestaña Compatibilidad de su ventana de Propiedades. No debería tener que decirles a los usuarios que hagan esto. Malo para los negocios. Necesito que el instalador haga esto. El archivo MSM usa una ruta estática.
Descubrí que el método de archivo .manifest
no funciona si el .exe
está en C:/Program files/...
y el .exe
se ejecutó previamente sin el archivo .manifest
. Windows recuerda el .manifest
desde la primera vez que se ejecuta .exe
. Esto significa que no puede simplemente enviar el manifiesto cuando los usuarios se quejan de que sus instalaciones no se ejecutan. El archivo de manifiesto debe colocarse antes o durante la misma instalación que coloca el .exe
.
Windows vuelve a comprobar el .manifest
si el .exe
cambia (por ejemplo, nueva versión o diferente número de bytes)
Embale su aplicación en WinRar SFX con modo silencioso + modo de solicitud de administrador.
Mucho más simple que jugar con las variables .MSI.
Esta es una posibilidad remota, pero si tiene la palabra "setup" o "install" en el nombre del EXE, Windows solicitará la elevación cuando la ejecute. No obstante, no sé si eso funcionará con un applet del panel de control.
Me sorprendería si esto fuera posible. Sería una forma ideal para que el código malicioso abuse del sistema. Probablemente va a decirle al usuario que el administrador debe instalarlo o deben tener derechos de administrador (como todos los otros programas en Windows).
Puede establecer programáticamente el indicador "Ejecutar este programa como administrador" (la opción que encuentra en la pestaña Compatibilidad de las propiedades de un EXE), configurando una clave de registro simple. Debe crear un valor de cadena (REG_SZ) en una de estas teclas (si desea que la configuración sea por usuario o por máquina, respectivamente):
HKEY_CURRENT_USER / Software / Microsoft / Windows NT / CurrentVersion / AppCompatFlags / Layers
o
HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows NT / CurrentVersion / AppCompatFlags / Layers
El nombre del valor debe ser la ruta completa a su ejecutable (si la ruta contiene espacios, no rodee la ruta con comillas) y los datos del valor deben contener la cadena RUNASADMIN
.
Para la muestra:
reg.exe Add "HKLM/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers" /v "C:/Program Files/MyApp/Test.exe" /d "PUT__VALUE__HERE"
Modos de compatibilidad
WIN95 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1
Nivel de privilegio
RUNASADMIN Ejecuta programa como administrador
REG ADD "HKLM / SOFTWARE / Microsoft / Windows NT / CurrentVersion / AppCompatFlags / Layers" / v "C: / temp / compatmodel / iconsext.exe" / t REG_SZ / d "WINXPSP3 RUNASADMIN" / f
Referencias: http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/
Use un programa wrap que usa ShellExcute que usa "runas" como su "verbo" para ejecutar el programa que desee.