Pagina 1 di 1

Eseguire uno script AutoIt come amministratore locale?

Pubblicato: 13 giugno 2018 - 16:55
di Jonattend
Ciao,

sto facendo buoni progressi con WAPT e nella creazione e modifica di pacchetti esistenti.

Per scopi didattici, devo installare un'applicazione che richiede, al primo avvio (e solo in quel caso), all'utente di inserire nome, organizzazione e numero di serie.

Ho provato diverse soluzioni senza successo finora:
- regShot prima e dopo l'inserimento del numero di serie, quindi esportazione in un file .reg
- esecuzione silenziosa del file .reg dopo l'installazione (tramite la funzione `def install()` nel pacchetto WAPT): il software non si attiva... potrebbero esserci altre modifiche/creazioni di file dopo l'inserimento della licenza.

Un altro test: tramite AutoIt
- installazione dell'applicazione tramite WAPT
- nella funzione `def install()` di WAPT, esecuzione di uno script AutoIt per avviare l'applicazione e simulare l'input da tastiera...
Il programma si installa correttamente, ma il problema è che lo script AutoIt viene eseguito con l'account di sistema... e il programma, se avviato con l'account di sistema, non sembra riconoscere lo script.

Nel mio script AutoIt, ho forzato l'avvio del programma come amministratore locale.
Il programma appare correttamente nei processi, ma il mio script AutoIt (avviato con l'account di sistema) non viene eseguito...
In pratica, mi ritrovo con un programma in esecuzione come amministratore locale e uno script in coda in esecuzione con l'account di sistema.
Avviarli entrambi con l'account di sistema non risolve il problema...

Non ho trovato alcuna opzione nello script Python per richiedere l'esecuzione dello script come amministratore...

Forse esiste un metodo più semplice...?

PS: Installando il software normalmente e poi eseguendo manualmente il mio script AutoIt (come amministratore), l'attivazione ha successo...

Grazie per qualsiasi suggerimento. ;)

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 14 giugno 2018 - 13:45
di Jonattend
Ciao,
sono riuscito a contattare l'editore del software che mi ha appena fornito un file di licenza adattato alla mia licenza e alla mia istituzione.
Quindi, copiare e incollare il file di licenza nella posizione corretta dovrebbe andare bene (tramite `def install()`).

Lo sto testando e vi farò sapere. ;)

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 14 giugno 2018 - 15:56
di Jonattend
Ancora niente... l'editore mi ha fornito un file di licenza... ma deve essere avviato una volta per attivarlo... peggio ancora, apre una finestra di dialogo... che devo annullare prima di poter vedere finalmente che il software è attivato... Continuo la mia ricerca, ma sto iniziando a rimanere senza idee :rotolo:

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 14 giugno 2018 - 18:13
di sfontenau
Due possibili soluzioni? 1.

Creare un'attività pianificata "interattiva" che avvii l'installazione; a mio parere, l'emulazione della tastiera funziona al suo interno.
Un'altra possibile soluzione:

creare un servizio Windows "interattivo" che avvii l'installazione, quindi eseguirlo.

Entrambe le soluzioni sono molto brutte...

Inoltre non riesco a far funzionare `runas` come account di sistema o a usare `psexec` come account di sistema.

Un'altra soluzione:

ho visto un amico farlo.

Integrare il nome utente e la password dell'amministratore in AutoIt (so che è possibile).
Avviare l'installazione di AutoIt in un `session_setup`; AutoIt si avvierà quindi automaticamente come amministratore.

Tuttavia... è facile recuperare la password da AutoIt...

Simon

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 15 giugno 2018 - 08:49
di Jonattend
Grazie per i suggerimenti...

Ho un'idea, ma non so se sia fattibile con WAPT:
- installazione silenziosa del programma tramite WAPT (account SYS)
- nel pacchetto WAPT, `def install()`: creazione di un'attività pianificata interattiva all'accesso dell'account Administrator
- in questa attività, apertura del file AutoIt, avvio del programma + simulazione della tastiera
- sempre in AutoIt: eliminazione dell'attività pianificata dell'amministratore + eliminazione del file AutoIt stesso... + riavvio.

Forse una configurazione di sessione sarebbe più semplice? (Non ho ancora testato la configurazione di sessione...)

Cosa ne pensi?

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 15 giugno 2018 - 09:41
di Jonattend
Ho appena provato session_setup: funziona bene per il mio amministratore locale... ma il problema è che funziona anche per gli utenti del mio dominio.

Idealmente, l'amministratore dovrebbe avviare la configurazione della sessione una sola volta e il gioco è fatto.

Il documento afferma chiaramente che "Il session_setup per ciascun pacchetto viene eseguito una sola volta per pacchetto o versione del pacchetto e per profilo utente"...Devo trovare un modo per disattivare session_setup dopo che è stato avviato dall'amministratore...".

Attualmente nel mio session_setup():

Codice: Seleziona tutto

run(r'....\fichier_autoIT_activation_logiciel)
Obiettivo finale: session_setup():

Codice: Seleziona tutto

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

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 15 giugno 2018 - 11:13
di sfontenau
Il modo più semplice è aggiungere una condizione nella configurazione della sessione.

Codice: Seleziona tutto

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

Oggetto: Esecuzione di uno script AutoIt come amministratore locale?

Pubblicato: 15 giugno 2018 - 16:51
di Jonattend
Uff! Finalmente ce l'ho fatta!

Grazie per il suggerimento su session_setup e get_current_user() ;)

Nel mio def install() installo il software.

In session_setup():

Codice: Seleziona tutto

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)
         delete_ay_next_reboot("C:\xxxxx\fichier_autoIT_activation_logiciel")
Ho imparato molto da tutto questo :)
Ho un secondo programma software dello stesso tipo, proverò di nuovo e vedrò il risultato.

Risolto!