Jerome a écrit :Coucou,
Yupyup est le nom de ton admin (a remplacer hein ...)
Jérôme
Non, pas du tout, "yupyup" est le contenu de la variable Admin ( Le nom "Admin" ici est arbitraire et
sans importance aucune outre pour faciliter la compréhension humaine de par une nomenclature
sans équivoque ).
EnvSet et EnvGet permettent de définir et de récupérer des
variables d'environnements.
Une variable d'environnement, c'est comme une variable régulière, à l'exception du
fait qu'elle est accessible par tous les programmes qu'autoit démarre à l'aide d'une
des fonctions run.
Voici mon exemple annoté
SagePourpre a écrit :
Code : Tout sélectionner
If EnvGet('Admin') = 'yupyup' Then ; On vérifie la valeur d'environnement Admin
RegWrite("HKEY_USERS\.DEFAULT\Control Panel\Keyboard","InitialKeyboardIndicators","REG_SZ","2")
Else
EnvSet('Admin','yupyup') ; Si la variable Admin n'était pas égale à yupyup, on donne la valeur yupyup à notre variable )
runas("administrateur","toto","petitbateau",1,@ScriptFullPath) ; doit être compilé pour fonctionner
EndIf
En gros, ce script est exécuté deux fois une à la suite de l'autre.
La première fois,
Envget('Admin') est égal à "" puisque elle n'a pas été définie...
Par conséquent, mon If nous envoie à
EnvSet, qui assigne la chaîne de caractère yupyup à la variable d'environnement "Admin"
Ensuite, le script est relancé en tant qu'administrateur à l'aide de RunAs
Comme il n'y a plus d'instructions, cette première exécution de script se termine et le processus est fermé.
MAIS....
Le script a été relancé grâce à RunAs, cette fois en tant qu'administrateur.
C'est là qu'arrive l'utilité de la variable d'environnement.
Elle a été définie dans la première exécution du script et automatiquement "passée" à la deuxième
exécution du script par l'entremise de la fonction Run/RunAs/RunWait.
Par conséquent, lorsque ce deuxième processus vérifie la variable d'environnement "Admin", il a comme
réponse le contenu qui y a été placé la première fois, c'est-à-dire "yupyup" dans ce cas précis.
Le script effectue donc l'action correspondante et écrit la valeur dans la base de registre.
J'ai donc utilisé une variable d'environnement (qui aurait plus s'appeler "Pigeon" au lieu d' "Admin" ) comme méthode
pour indiquer à mon script qu'il exécutait ce script avec les privilèges nécessaires pour écrire dans le registre.
Et pour @scriptfullpath, c'est le chemin complet du script.