Página 1 de 1

¿Ejecutar un script de AutoIt como administrador local?

Publicado: 13 de junio de 2018 - 16:55
por Jonattend
Hola,

estoy progresando bien con WAPT y creando y modificando paquetes existentes.

Para fines educativos, necesito instalar una aplicación que requiere, en su primer inicio (y solo entonces), que el usuario ingrese un nombre, organización y número de serie.

He probado varias cosas sin éxito hasta ahora:
- regShot antes y después de insertar el número de serie, luego exportar a un archivo .reg
- ejecutar silenciosamente el archivo .reg después de la instalación (a través de la función `def install()` en el paquete WAPT): el software no se activa... puede haber otras modificaciones/creaciones de archivos después de que se inserta la licencia.

Otra prueba: a través de AutoIt
- instalar la aplicación a través de WAPT
- en la función `def install()` de WAPT, ejecutar un script de AutoIt para iniciar la aplicación y simular la entrada del teclado...
El programa se instala correctamente, pero el problema es que el script de AutoIt se ejecuta bajo la cuenta del Sistema... y el programa, si se inicia bajo la cuenta del Sistema, no parece reconocer el script.

En mi script de AutoIt, forcé al programa a iniciarse como administrador local.
Aparece correctamente en los procesos, pero mi script de AutoIt (ejecutado como cuenta de sistema) no se ejecuta...
Básicamente, termino con un programa ejecutándose como administrador local y un script ejecutándose en cola como cuenta de sistema.
Ejecutar ambos como cuenta de sistema no soluciona el problema...

No he encontrado ninguna opción en el script de Python para solicitar que el script se ejecute como administrador... ¿

Quizás haya un método más sencillo?

PD: Al instalar el software normalmente y luego ejecutar manualmente mi script de AutoIt (como administrador), la activación se realiza correctamente...

Gracias por cualquier sugerencia. ;)

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 14 de junio de 2018 - 13:45
por Jonattend
Hola,
logré contactar al editor del software, quien me proporcionó un archivo de licencia adaptado a mi licencia y a mi institución.
Por lo tanto, copiar y pegar el archivo de licencia en la ubicación correcta debería funcionar sin problemas (mediante `def install()`).

Lo estoy probando y les informaré. ;)

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 14 de junio de 2018 - 15:56
por Jonattend
Todavía nada... el editor me proporcionó un archivo de licencia... pero debe iniciarse una vez para activarse... peor aún, abre un cuadro de diálogo... que tengo que cancelar antes de poder ver finalmente que el software está activado... Continúo mi búsqueda, pero estoy empezando a quedarme sin ideas :rollo:

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 14 de junio de 2018 - 18:13
por sfonteneau
¿Dos posibles soluciones? 1.

Crear una tarea programada "interactiva" que inicie la instalación; en mi opinión, la emulación de teclado funciona dentro de ella.
Otra posible solución:

Crear un servicio de Windows "interactivo" que inicie la instalación y luego ejecutarlo.

Ambas soluciones son muy feas...

Tampoco consigo que `runas` funcione como cuenta del sistema ni usar `psexec` como cuenta del sistema.

Otra solución:

He visto a un amigo hacerlo.

Integrar el nombre de usuario y la contraseña del administrador en AutoIt (sé que es posible).
Iniciar la instalación de AutoIt en un `session_setup`; AutoIt se iniciará automáticamente como administrador.

Sin embargo... es fácil recuperar la contraseña de AutoIt...

Simon

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 15 de junio de 2018 - 08:49
por Jonattend
Gracias por las sugerencias...

Tengo una idea, pero no sé si es factible con WAPT:
- Instalación silenciosa del programa mediante WAPT (cuenta SYS)
- En el paquete WAPT, `def install()`: creación de una tarea programada interactiva al iniciar sesión con la cuenta de administrador
- En esta tarea, abrir el archivo AutoIt que ejecuta el programa + simulación de teclado
- Aún en AutoIt: eliminación de la tarea programada del administrador + eliminación del propio archivo AutoIt... + reinicio.

¿Quizás una configuración de sesión sería más sencilla? (Aún no he probado la configuración de sesión...)

¿Qué opinas?

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 15 de junio de 2018 - 09:41
por Jonattend
Acabo de probar session_setup: funciona bien para mi administrador local... pero el problema es que también se ejecuta para los usuarios de mi dominio.

Lo ideal sería que el administrador solo tuviera que iniciar la configuración de la sesión una vez y listo.

El documento establece claramente que "La configuración de sesión para cada paquete se ejecuta solo una vez por paquete o versión de paquete y por perfil de usuario"...Necesito encontrar una manera de deshabilitar session_setup después de que el administrador lo haya iniciado...".

Actualmente en mi session_setup():

Código: Seleccionar todo

run(r'....\fichier_autoIT_activation_logiciel)
Objetivo final: session_setup():

Código: Seleccionar todo

run(r'....\fichier_autoIT_activation_logiciel)
"desactiver le session_setup"
"suppression du fichier fichier_autoIT_activation_logiciel"

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 15 de junio de 2018 - 11:13
por sfonteneau
La forma más sencilla es agregar una condición en la configuración de la sesión.

Código: Seleccionar todo

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)

Re: ¿Ejecutar un script de AutoIt como administrador local?

Publicado: 15 de junio de 2018 - 16:51
por Jonattend
¡Ufff! ¡Por fin lo logré!

Gracias por el consejo sobre session_setup y get_current_user() ;)

En mi def install(), instalo el software.

En session_setup():

Código: Seleccionar todo

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)
         delete_ay_next_reboot("C:\xxxxx\fichier_autoIT_activation_logiciel")
He aprendido mucho de todo esto :)
Tengo un segundo programa del mismo tipo, lo voy a probar de nuevo y veré el resultado.

¡Resuelto!