IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment modifier les variables d'environnement ?


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut Comment modifier les variables d'environnement ?
    Hi,

    Je souhaiterais changer la variable d'environnement %Chemin% avec le code suivant (dans un fichier de commandes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Echo off
    Echo %Chemin%
    ChangerVariableChemin.exe
    Echo %Chemin%
    Pause
    L'exécutable est sensé changer la variable %Chemin%. Pendant l'exécution de ChangerVariableChemin.exe, une série de WriteLn me permet de contrôler le contenu ma variable. Elle change effectivement de valeur. Après l'exécutable, %Chemin% reprend sa valeur initiale. J'ai été voir la publication de Pierre Castelain traitant des variables d'environnement, mais je n'arrive pas à mes fins !

    Il semble qu'au lancement de l'exécutable, un nouvel environnement avec des variables héritées soit créé. A la sortie de l'exécutable, l'environnement hérité disparait et donc, toute tentative de modification de la variable %Chemin% n'aboutit pas.

    Une idée ?

    Merci

    JJ

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Tu pourrais essayer de "jouer" directement dans le registre, j'ai trouvé ( mais pas testé ) plusieurs clefs qui semblent contenir des variables d'environnement, ça ne devrait pas être trop dangereux de modifier quelques valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
     
    HKEY_CURRENT_USER\Environment

  3. #3
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Utilise le code source fourni dans l'article "Les variables d'environnement" et appelle la procédure SetUserEnvVar en passant True comme argument BroadcastChange afin que les applications actuellement ouvertes soient informées du changement de valeur de la variable.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut Variables d'environnement
    Merci Pierre pour ta réponse...

    ...mais cela ne fonctionne qu'à moitié ! En effet, dans l'exemple utilisé, le deuxième echo revoit la même valeur inital. Pourtant, la variable a bien été modifiée car quand je relance le script une seconde fois, le premier echo me retourne la valeur modifiée.
    J'en conclu que c'est le BroadcastChange qui ne s'exécute pas correctement.

    Ton avis ?

    JJE

Discussions similaires

  1. Réponses: 15
    Dernier message: 24/01/2009, 23h24
  2. Réponses: 15
    Dernier message: 28/06/2007, 19h28
  3. [Free Pascal] Comment gérer les variables d'environnement
    Par TheBigMac dans le forum Free Pascal
    Réponses: 4
    Dernier message: 15/04/2006, 11h32
  4. [.NET]Modifier les variables d'environnement dans...
    Par GusS dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 09/02/2005, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo