¿Ejecutar un script de AutoIt como administrador local?

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Bloqueado
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

13 de junio de 2018 - 16:55

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. ;)
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

14 de junio de 2018 - 13:45

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é. ;)
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

14 de junio de 2018 - 15:56

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:
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

14 de junio de 2018 - 18:13

¿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
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

15 de junio de 2018 - 08:49

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?
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

15 de junio de 2018 - 09:41

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"
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Avatar de usuario
Sfonteneau
Experto en WAPT
Mensajes: 2312
Registrado: 10 de julio de 2014 - 23:52
Contacto :

15 de junio de 2018 - 11:13

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)
Avatar de usuario
Jonattend
Mensajes: 43
Inscripción: 26 de marzo de 2018 - 14:45

15 de junio de 2018 - 16:51

¡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!
Versión del servidor WAPT: 1.8.1 en Debian 10
Versión del agente WAPT: 1.8.1.6756
Versión de configuración WAPT: 1.8.1.6756 en Windows10 v1909
Versión de implementación WAPT: 1.8.1.6756
Bloqueado