Cómo configurar “Ejecutar este progtwig como administrador” mediante progtwigción

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á comstackdo, 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 progtwig 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.

Puede establecer programáticamente el indicador “Ejecutar este progtwig 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 progtwig 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/

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.

¿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.

Use un progtwig wrap que usa ShellExcute que usa “runas” como su “verbo” para ejecutar el progtwig que desee.

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.

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 progtwigs en Windows).

    Intereting Posts