Contactez nous

executer un script AutoIT en tant qu'Administrateur local ?

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum

* Questions can be asked in English or in French. If the thread is started in English, stick to English, if it is started in French, stick to French.
* Vous pouvez poser vos questions en Français ou en Anglais. Si un sujet est commencé en français, merci de répondre en français. Si un sujet est commencé en anglais, merci de répondre en anglais.
* Please prefix of the title of the thread to [SOLVED] if it is solved.
* Merci de préfixer le titre du thread par [RESOLU] si il est résolu.

Bonjour,

J'avance bien sur WAPT et la création de paquet ainsi que la modification de paquet existant.

Dans un cadre pédagogique, je dois installer une application nécessitant, à son premier démarrage (et uniquement à ce moment là), d'insérer un nom, organisation et un numéro de série.

J'ai testé divers choses sans résultat pour l'instant :
- regShot avant et après insertion du serial puis export vers un .reg
- exécution du .reg silencieusement après installation (via le def install() dans le paquet WAPT) : le logiciel ne s'active pas ... il doit peut-être y avoir d'autres modifications / créations de fichiers une fois la licence insérée.

Autre test : via autoit
- installation de l'application via WAPT
- dans le "def install()" de WAPT, exécution d'un script autoit pour démarrer l'application et simuler des saisies clavier ...
L'installation du programme fonctionne bien mais le "souci" est que le script autoit est exécuté via le compte Système ... et le programme, si démarré en compte Système, ne semble pas prendre en compte le script.

Dans mon script autoit, j'ai forcé le lancement du programme en tant qu'Administrateur Local.
Il apparaît bien dans les processus mais mon script autoIT (lancé en compte SYS) ne bouge pas ...
En gros, je me retrouve avec un programme lancé en Administrateur local et un script en attente lancé en tant que compte SYS.
En lançant les deux en compte SYS, pas mieux ...

Je n'ai trouvé aucune option dans le script python pour demandé un lancement du script en tant qu'administrateur ....

Après, peut-être qu'il existe une méthode plus simple ... ?

PS : en installant le logiciel de manière classique PUIS en exécutant mon script autoIT à la main (compte Administrateur du coup), l'activation réussie ...

Merci pour vos pistes ;)
Bonjour,
J'ai pu prendre contact avec l'éditeur du logiciel qui vient de me proposer un fichier licence adapté à ma licence et mon établissement.
Donc un copier / coller du fichier licence au bon endroit devrait être OK (via def install()).

Je fais des essais et je vous ferais un feedback ;)
Toujours pas ... l'éditeur m'a bien fourni un fichier licence ... mais il faut qu'il soit lancé une fois pour s'activer ... pire, il ouvre une boite de dialogue ... qu'il faut annuler pour enfin voir que le logiciel est activé . . . .... je poursuis mes recherches mais je commence à être à court d'idées :roll:
Deux solution qui fonctionne peu être ? :

Créer une tache planifier "interactive" qui lance l'installation, a mon avis l'émulation clavier fonctionne a l’intérieur.
Autre solution peu être:

Créer un service windows "interactif" qui lance l'installation, puis le lancer .

Dans les deux ces deux solution sont très moche ...

Je ne parviens pas non plus a faire un runas en compte system ni a utiliser psexec en compte system.

Un autre solution:

J'ai déjà vu un copain le faire.

Intégrer dans autoit l’identifiant mot de passe administrateur (je sais que c'est possible)
Lancer l'installation du autoit dans un session_setup l'autoit se lancera automatiquement en administrateur donc.

Par contre ... il est simple de récupérer le mot de passe dans l'autoit ...

Simon
Merci pour les pistes ...

J'ai une idée en tête mais je ne sais pas si c'est faisable avec WAPT :
- installation silencieuse du programme via WAPT (compte SYS)
- dans le paquet WAPT, def install() : création d'une tache planifiée interactive au login du compte Administrateur
- dans cette tache, ouverture du fichier autoit lançant le programme + simulation clavier
- toujours dans l'autoIT : suppression de la tache planifiée administrateur + suppression du fichier autoIT lui-même ... + reboot

Peut-être qu'avec un session setup, c'est plus simple ? (j'ai pas encore testé le session setup ...)

Qu'en pensez-vous ?
Je viens de faire un essai avec le session_setup : cela fonctionne bien pour mon Administrateur local ... mais le souci est que cela s’exécute aussi pour mes utilisateurs du domaine.

L'idéal serait de pouvoir lancer le session setup une fois pour l'Administrateur et c'est tout.

Il est bien précisé sur la doc que "Le session_setup de chaque paquet n’est exécuté qu”une seule fois par paquet ou version de paquet et par profil utilisateur" ... me faut trouver une astuce pour désactiver le session_setup après qu'il soit lancé par l'Administrateur .....

Actuellement dans mon session_setup() :

Code : Tout sélectionner

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

Code : Tout sélectionner

run(r'....\fichier_autoIT_activation_logiciel)
"desactiver le session_setup"
"suppression du fichier fichier_autoIT_activation_logiciel"
Le plus simple, faire un condition dans le session setup.

Code : Tout sélectionner

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)
Piouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffffffffff, j'ai enfin réussi !

Merci pour l'astuce du session_setup et du get_current_user() ;)

Dans mon def install(), j'installe le logiciel.

Dans le session_setup():

Code : Tout sélectionner

if get_current_user() == u'Administrateur':
         run(r'....\fichier_autoIT_activation_logiciel)
         delete_ay_next_reboot("C:\xxxxx\fichier_autoIT_activation_logiciel")
J'ai appris pas mal de choses du coup avec tout ça :)
J'ai un second logiciel dans le même genre, je vais reprendre ça et voir le résultat.

Résolu !