[..] Problème avec EnvUpdate()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

[..] Problème avec EnvUpdate()

#1

Message par keltharak »

Bonjour,

J'ai un souci avec la fonction EnvUpdate(). L'idée est de créer une variable d'environnement machine et de la lire dans le même script. Pour la création pas de problème, j'ajoute une valeur dans la clé de registre qui va bien ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment") et ça fonctionne. Mais pour utiliser ensuite cette variable dans mon script, là ça coince...

Voici mon code (je n'ai gardé que la partie sur cette variable):
► Afficher le texte
Mes 3 affichages restent désespérément vide, alors que j'ai bien un EnvUpdate() après chaque ajout ou suppression de la variable. Et si je fait un "set" dans une fenetre msdos avant la suppression de la variable je la vois sans problème. (ça ne raffraichi pas non plus les fenêtres msdos déja lancés avant mon programme)

J'imagine que je n'utilise pas cette fonction correctement mais je ne vois pas comment la.

Merci d'avance.
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#2

Message par SrBelial »

plutôt qu'utiliser l'écriture dans le registre, utilise directement la fonction EnvSet($var, $val)

j'ai testé et ça marche ...

edit : ou alors fais tout en passant par RegWrite et RegRead ....
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#3

Message par keltharak »

Le problème de SetEnv c'est que ça crée une variable utilisateur non ?

Pour la lecture de la variable par le registre j'y ai pensé, mais ce que je n'aime pas dans cette idée c'est qu'on ne teste pas tout à fait le même mécanisme, c'est peut-être infondé comme crainte mais je trouve plus propre de lire la même information que ce que lirons mes autres programmes ensuite. Mais si je ne trouve pas d'autre solution c'est surement ce que je ferai.

Je suis entrain de chercher sur le forum anglais (j'aurai effectivement du commencer par la mais je n'ai pas le réflexe désolé) et c'est très curieux car les programmeurs semble dire que la fonction EnvUpdate marche bien si l'on veut actialisé la liste des variable d'environnement du process autoit...
► Afficher le texte
C'est un exemple du forum anglais (ici), j'ai rajouté une msgbox à la fin pour afficher le path et bien ça ne marche pas non plus chez moi. je commence à me demander si le problème ne vient pas de mon PC...
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#4

Message par SrBelial »

je te rassure, ton exemple ne marche pas non plus chez moi, sauf si j'utilise EnvSet() au lieu de RegWrite() ...
donc soit le problème vient du fait que ce n'est pas la bonne clé, soit ça vient d'ailleurs ...

d'ailleurs pour être plus précis, EnvSet crée une variable d'environnement temporaire : elle ne sera lisible que par les programmes lancés depuis le script autoit !!! (via la commande run notamment) ...

une fois le script fini, la variable n'existe plus ....

si tu tiens à passer par la base de registre, une bonne idée serait de créer une variable à la main, l'exporter dans un fichier .reg, et ensuite copier/coller le chemin de la clé pour être sur que tu as le bon chemin dans le script ....

essaie peut-être en changeant le type de valeur que tu crée dans le registre ...

EDIT : en fait c'est pas la création de la variable qui gène, j'ai regardé, c'est le EnvGet() qui marche pas !
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#5

Message par keltharak »

OK ! Merci beaucoup pour ton aide précieuse ! En fin de compte je vais donc lire ma variable directement dans le registre, je ne vois pas d'autre solution.

Hum... je pense que c'est le envupdate qui ne marche pas plutot.
Si je fais un :

Code : Tout sélectionner

Opt("ExpandEnvStrings", 1)
...
MsgBox(0, "%Test_variable%", "%temp%")
%temp% est remplacé mais pas %Test_variable%. Maintenant si je fais :

Code : Tout sélectionner

MsgBox(0, envget("Test_variable"), envget("temp"))
Temp est bien reconnu mais Test_variable reste vide.
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#6

Message par SrBelial »

non le envupdate fonctionne comme il faut !
j'ai testé ainsi :

* ajout de la clé dans le registre
* appel à envupdate
* regardé les variables d'environnement directement depuis les propriétés du poste de travail

=> la variable existait bien, mais n'était simplement pas visible par envget()
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#7

Message par Tlem »

En fait, EnvUpdate() fonctionne parfaitement, le seul problème, c'est que lorsque vous lancez le script, la variable d'environnement à une valeur. Pour le système elle est mise à jour pour toute nouvelle session d'un programme, mais ceux qui sont en cours de fonctionnement, ne voient pas cette mise à jour ... Y compris le script en cours. ;)

Essayez de lancer deux fois un script de modification d'une variable d'environnement et vous verrez que sur le deuxième lancement elle sera mise à jour. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Problème avec EnvUpdate()

#8

Message par SrBelial »

hé bien voila qui éclaircit les choses même pour moi ^__^
merci thierry !
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Répondre