Besoin d'aide avec les Variables d'Environnement en VBScript

Besoin d'aide avec les Variables d'Environnement en VBScript - VB/VBA/VBS - Programmation

Marsh Posté le 20-06-2005 à 08:58:09    

Bonjour
 
Je bloque sur un problème de variable d'environnemnt et je n'arrive pas à trouver l'info dont j'ai besoin.
Je crée des scripts en VBScript sous XP/2000 pour info.
 
 
Mon problème vient des variables d'envionnement, je les conais très peu. Je sais qu'il éxiste 3 environnement de déclaration:
Volatile, User, System, Process
-User çà va, c'est uniquement accéssible à l'utilisateur connecté
-Volatile je suppose que çà ne dure que le temps de l'utilisation (dans un script par ex) ensuite çà disparait
-Mais System, Process je vois pas la différenc. J'ai trouvé une petite explication http://www.windowsitpro.com/Articl [...] leID=22709 mais j'aimerais avoir plus d'explication.
 
 
Parceque j'ai besoin pour un script, suivant certain choix fait par la personne à la suyite d'un traitement d'initialiser une variable d'environnement pour l'utiiser dans ce même script juste derrière et de la laisser en place car elle est utilisé par d'autre chose plustard.
 

Code :
  1. ...
  2. lancement_proeng = "C:\Program Files\proe2001"
  3. ...
  4. Set fso = CreateObject("Scripting.FileSystemObject" )
  5. Set f = fso.GetFolder(lancement_proeng)
  6. set oEnv_system=shell.Environment("System" )
  7. set oEnv_process=shell.Environment("Process" )
  8. oEnv_system("lancement_proeng" ) = f.shortpath
  9. oEnv_process("lancement_proeng" ) = f.shortpath
  10. ...
  11. shell.Run GetPath() & "proe.cmd"


Je vous passe les détails, j'initialise une variable ensuite j'effectue une petite astuce pour pouvoir en récuperer le Nom court mais là n'est pas le problème.
Le problème est que après 2jours de tests, je me trouve obligé de créer la même variable aussi bien dans SYSTEM que PROCESS.
 
En effet, si je le fait seulement dans SYSTEM, le script proe.cmd appélé ensuite ne fonctionne pas car il n'utilise pas la valeur de la variable d'environnement "lancement_proeng" initiliasé dans le script mais la valeur au moment du lancement du script (la valeur précedente donc) ce qui ne va pas du tout.
C'est pourquoi j'initialise aussi la même valeur pour "lancement_proeng" mais dans PROCESS et là, le script proe.cmd appelé marche correctement car il utilise la bonne valeur pour "lancement_proeng".
Mais si je ne fait pas l'ajout dans SYSTEM aussi, la variable d'environnement "lancement_proeng" n'est pas référencé dans SYSTEM une fois le script terminé. Quand je vais voir dans Panneau de config/Système/Variable d'environnement/ elle n'y figure pas et donc les autres fichiers qui en ont besoins plustard ne marchent pas...
 
Donc j'aimerais comprendre pourquoi ? et si ya un autre moyen de faire parceque tel quel, çà marche mais je ne sais pas pourquoi :(

Message cité 1 fois
Message édité par kioo le 20-06-2005 à 15:24:36
Reply

Marsh Posté le 20-06-2005 à 08:58:09   

Reply

Marsh Posté le 21-06-2005 à 08:29:20    

pti up
j'en suis toujours au même point depuis hier

Reply

Marsh Posté le 25-11-2005 à 12:58:13    

kioo a écrit :

pti up
j'en suis toujours au même point depuis hier


 
Salut  :hello:  
 
Peux tu me poster ton script complet ?  
 
Je suis très loins d'être capable de t'apporter de l'aide mais j'aimerais bien pouvoir le dépioter histoire de voire comment ça marche...  
 
Je commence tout juste (depuis deux jours) à faire du Script VB, j'ai besoin de lire des petits scripts pour pouvoir m'impregner un peu.
 
 :sol:


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 25-11-2005 à 15:54:28    

kioo a écrit :

Bonjour
(...), si je le fait seulement dans SYSTEM, le script proe.cmd appélé ensuite ne fonctionne pas car il n'utilise pas la valeur de la variable d'environnement "lancement_proeng" initiliasé dans le script mais la valeur au moment du lancement du script (la valeur précedente donc) ce qui ne va pas du tout.
C'est pourquoi j'initialise aussi la même valeur pour "lancement_proeng" mais dans PROCESS et là, le script proe.cmd appelé marche correctement car il utilise la bonne valeur pour "lancement_proeng".
Mais si je ne fait pas l'ajout dans SYSTEM aussi, la variable d'environnement "lancement_proeng" n'est pas référencé dans SYSTEM une fois le script terminé. Quand je vais voir dans Panneau de config/Système/Variable d'environnement/ elle n'y figure pas et donc les autres fichiers qui en ont besoins plustard ne marchent pas...
 
Donc j'aimerais comprendre pourquoi ? et si ya un autre moyen de faire parceque tel quel, çà marche mais je ne sais pas pourquoi :(


 
De ce que je connais de ce problème en BATCH-DOS...
 
On a exactement le même problème lorsqu'on travaille avec les variables "SYSTEME" : si on fait un  

setx /m MyVar Roudoudou


Et qu'ensuite on appèle cette variable MyVar dans le script, elle est inconnue.
il faut faire un

setx MyVar Roudoudou

pour la voire dans le script, le /m permet de forcer l'affectation en "SYSTEM"
Si on ouvre un autre Shell cette variable est exploitable.
 
En fait, un process ne travaille pas sur les variables SYSTEME directement, il en fait une copie dans son environnement de travail (PROCESS) et il utilise les COPIES.
En VBS il semble que ce soit la même chose : les variables SYSTEM sont les originales, les variables PROCESS sont les copies.
En fait, l'interpreteur VBS se fait passer les variables d'environement "ByVal" et non "ByRef"
 
 
Edit : orthographe et cocquilles


Message édité par madmartigan le 25-11-2005 à 15:55:53

---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed