2010-03-10 14 views
7

Estoy escribiendo un instalador NSIS y el programa de instalación eleva "como administrador" según sea necesario en Windows 7/vista. Necesito ejecutar el programa instalado al final de la instalación y no quiero iniciarlo con los mismos privilegios que el instalador.Cómo iniciar un programa como un usuario normal desde un instalador elevado UAC

Los comandos regulares de NSIS ejecutan el proceso secundario con los mismos permisos que el instalador.

Existe un complemento de UAC para NSIS, pero la documentación no es excelente y parece v. Nuevo; Prefiero no usar ese complemento.

Idealmente, estoy buscando un pequeño .exe que pueda incluir que lanzará el programa de destino sin elevación de UAC. ¿Existe esto?

¿Alguna otra sugerencia?

Gracias!

Respuesta

4

sólo tiene dos opciones:

  • Deseleccionar y quitar la casilla de verificación de ejecución (Cuando se ejecuta en TE6 +)
  • Usar el plugin UAC (No es que nueva, pero es un dolor de use, entonces le sugiero que solo busque la primera opción)

No hay ningún programa externo que pueda usar, ya que es imposible volver al usuario original desde un proceso elevado (Puede intentar y obtener bastante cerca, pero no lo hará et al usuario correcto en todos los casos)

+2

Opción 1 es lo que habíamos elegido, pero esto no es "ideal". ¿Microsoft ha hecho imposible ejecutar un proceso "de-elevated"? Parece absurdo no tener una API para eso. Soy nuevo en NSIS y no lo conozco demasiado bien, así que no estoy del todo seguro de cómo UAC interactuará con el script MultiUser.nsh. Entonces, esa es otra complicación con la que no me gustaría lidiar. –

+3

@KZ: Sí, es imposible lanzar un proceso no elevado desde uno elevado. La única solución es comenzar con un proceso no elevado, hacer que inicie su proceso elevado y hacer que el proceso elevado se comunique nuevamente con el proceso no elevado. elevado cuando quieres lanzar algo. Eso es lo que hace el plugin de UAC. Lo he estado usando durante muchos meses sin problemas. –

+0

Bien entonces, volviendo a la opción 1 y 2. Supongo que me voy a dedicar a la integración el complemento UAC para una compilación posterior. Gracias por la ayuda! –

0

me encontré con el siguiente, lo que podría ser wrappered a AA sencilla utilidad de línea de comandos:

http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/

sólo se tarda aproximadamente una hora para conseguir que el código de trabajo para mi proyecto, y funciona sin problemas hasta el momento. ;)

+0

¿Y si el usuario que ejecuta el instalador (RunAs/Secondary Logon) no es el mismo que el usuario de inicio de sesión/shell del explorador? ¡Simplemente no hay forma de volver atrás que funcione en todos los casos! – Anders

+0

¿Por qué oh por qué MS no dio un método directo para hacer esto? ¡Extraño! Como esto funcionará en el caso típico (el usuario final ejecuta nuestro instalador en modo de privilegios elevados), nos funcionará. Pero, suspiro ... – Mordachai

Cuestiones relacionadas