Marque MSI para que se ejecute como cuenta de Administrador elevada


Tengo una acción personalizada como parte de un MSI.

DEBE ejecutarse como una cuenta de dominio que también sea miembro de la cuenta de Administradores locales.

No puede usar el indicador NoImpersonate para ejecutar la acción personalizada como NT Authority\System, ya que no obtendrá acceso a los recursos de red.

En Vista / 2008 con UAC activado si NoImpersonate está desactivado, se ejecutará como el usuario ejecutante pero con el token sin privilegios y no obtendrá acceso a recursos locales como .installState. Ver Arquitectura UAC

Alguien sabe de una manera de cualquiera

  • ¿Forzar el MSI para que se ejecute con el token elevado de la misma manera que se ejecuta desde un símbolo del sistema elevado?

  • Forzar la CustomAction para ejecutar elevado (requireAdministrator en manifest no parece funcionar)?

  • Averigüe si UAC está habilitado y si no se ha ejecutado elevado y si es así advertir o cancelar la instalación?

Author: Eddie, 2008-11-20

3 answers

Respondiendo a mi propia pregunta para cualquier otro pobre s0d mirando esto.

  • No puede agregar un manifiesto a un MSI. Podría agregar una CONFIGURACIÓN.EXE o bootstrapper para shell el MSI y manifestar que con requireAdministrator pero eso derrota parte del punto de usar un MSI.

  • Agregar un manifiesto a una acción personalizada no funciona, ya que se ejecuta desde msiexec.exe

La forma en que he abordado esto es establecer la propiedad MSIUSEREALADMINDETECTION a 1 por lo tanto, la condición Privilegiada realmente funciona y agrega una Condición de inicio para Privileged que da un mensaje de error sobre la ejecución a través de un símbolo del sistema con privilegios y luego cierra la instalación.

Esto tiene el efecto secundario feliz - cuando se ejecuta un msi desde un símbolo del sistema elevado, las CustomActions diferidas se ejecutan como el usuario actual con un token de Administrador completo (en lugar de un token de usuario estándar) independientemente de la configuración NoImpersonate.

Más detalles - http://www.microsoft.com/downloads/details.aspx?FamilyID=2cd92e43-6cda-478a-9e3b-4f831e899433

[Edit] - He puesto script aquí que le permite agregar la propiedad MSIUSEREALADMINDETECTION como VS no tiene la capacidad de hacerlo y Orca es un dolor.

 33
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:09:11

Requiredministrator en el manifiesto debería funcionar.

También puede usar un gestor de arranque .archivo exe que puede usar ShellExecute con" RUNAS " como verbo (puedes usar 7-zip para crear el gestor de arranque, o hay muchas otras formas).

 1
Author: Peter Crabtree,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-20 04:57:56

Puede crear un archivo de archivo sfx simple para el archivo msi con Winrar y estas opciones:

  • Pestaña Configuración > Ejecutar después de la ejecución entrada : su nombre de archivo msi

  • Pestaña avanzada > Marcar Solicitar acceso administrativo opción casilla de verificación

 0
Author: Mohammadreza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-15 11:07:26