234 votes

Comment ajouter une variable d'environnement Windows sans redémarrer ?

Je voudrais ajouter une variable d'environnement à une machine Windows (de bureau ou serveur) et être en mesure de l'utiliser sans redémarrer cette machine.

Imaginons que vous ayez un serveur de production qui héberge une variété d'applications et qu'une nouvelle application nécessite une variable d'environnement particulière pour s'exécuter. Vous ne voulez pas le redémarrer pendant que les utilisateurs sont connectés à vos autres applications. Quelles options avez-vous? Je n'aime pas l'option d'attendre un bon moment pour redémarrer. Il doit y avoir une meilleure solution. Qu'est-ce que je rate?

2 votes

J'ai eu le même problème. J'ai lu quelque part que tuer le processus explorer.exe mettrait à jour les variables et ça a marché. Ensuite, j'ai simplement dû exécuter explorer depuis le gestionnaire des tâches.

5 votes

Vous devez fermer l'invite de commandes et la rouvrir pour que vos variables d'itinéraire soient mises à jour. Les variables sont chargées au démarrage de cmd.

1 votes

Ouvrir un nouveau cmd en utilisant le gestionnaire de tâches ou la fenêtre de l'explorateur ne fonctionne pas (du moins avec Win10), mais en utilisant le menu Démarrer et en tapant cmd puis en vérifiant la variable fonctionne.

198voto

n0pe Points 1339

Les changements apportés aux variables d'environnement devraient prendre effet immédiatement, si vous effectuez le changement via la boîte de dialogue Principales propriétés de l'ordinateur en question (allez à Poste de travail | Propriétés | Avancé | Variables d'environnement). Après avoir enregistré les modifications, l'Explorateur diffuse un message WM_SETTINGCHANGE à toutes les fenêtres pour les informer du changement. Les programmes lancés via l'Explorateur après cela devraient obtenir l'environnement mis à jour, bien que les programmes déjà en cours d'exécution ne le feront pas, sauf s'ils manipulent le message de changement de paramètre.

Je ne peux pas dire d'après votre description du problème quel problème spécifique vous rencontrez avec cela. Pouvez-vous nous en dire plus sur le scénario spécifique qui ne fonctionne pas?

Cet article KB peut également être utile : Comment propager les variables d'environnement vers le système

3 votes

D'accord, je suppose que j'ai dû voir ce comportement sur un service en cours d'exécution ou quelque chose du genre. J'ai ajouté une nouvelle variable d'environnement en utilisant la méthode décrite ci-dessus. Ensuite, j'ai pu voir la valeur après avoir ouvert une nouvelle invite de commandes et utilisé la commande "echo %%". Merci à vous deux pour vos réponses.

5 votes

Pour les utilisateurs de PowerShell, cet extrait peut être utile: poshcode.org/2049

9 votes

Si vous utilisez cmd, vous devez le redémarrer si vous modifiez une variable d'environnement

95voto

  1. Dans une invite de commandes, tapez : runas /user:votreusername@votredomaine cmd
  2. Cela ouvrira une nouvelle invite de commandes, puis tapez : taskkill /f /im explorer.exe
  3. Ensuite, tapez : explorer.exe

Maintenant, après avoir fermé toutes les invites de commandes, vous verrez que la variable PATH a été vraiment mise à jour.

Toutes les invites de commandes doivent être fermées. Ouvrez une nouvelle invite de commandes, tapez path et vous verrez les nouvelles données.

6 votes

Parmi toutes les réponses sur cette page, c'est la seule qui a réellement fonctionné pour moi. Merci!!

2 votes

Cela a fonctionné pour moi. Je pense que le problème est que si vous exécutez cmd via l'explorateur (pour vous éviter d'avoir à taper de longs chemins), alors l'explorateur n'est jamais fermé, même si vous fermez toutes les fenêtres de l'explorateur. Merci pour la solution :)

0 votes

A fonctionné pour moi. Vous pouvez également simplement utiliser le Gestionnaire des tâches pour tuer les tâches de l'explorateur et le redémarrer (Fichier> Exécuter nouvelle tâche).

23voto

nedm Points 5600

Une chose à garder à l'esprit est que de nombreux programmes obtiennent les variables d'environnement lorsqu'ils sont démarrés pour la première fois, donc même si Windows n'a pas besoin d'un redémarrage, certains programmes pourraient en avoir besoin avant de pouvoir utiliser les nouvelles variables. Un bon exemple de cela est de devoir ouvrir une nouvelle fenêtre d'invite de commande après avoir ajouté un chemin (oui, cela m'est déjà arrivé).

4 votes

Ce problème affecte TOUS LES SERVICES, même un service redémarré ne verra pas les nouvelles variables d'environnement.

1 votes

Êtes-vous sûr que ce n'est pas à cause de la partage d'un processus svchost?

19voto

Darbio Points 4515

Alors que je n'ai pas assez de réputation pour commenter la réponse la plus votée à cette question, je tiens à dire qu'elle n'est pas tout à fait correcte. Je le sais parce qu'aucun des contournements que j'ai essayé dans ce post n'a réellement fonctionné.

Le article kb lié dans cette réponse indique en réalité que :

Cependant, notez que les modifications apportées aux variables d'environnement ne produisent pas de changement immédiat. Par exemple, si vous lancez une autre invite de commandes après avoir apporté les modifications, les variables d'environnement refléteront les valeurs précédentes (et non les valeurs actuelles). Les changements n'ont pas d'effet avant que vous ne vous déconnectiez et vous reconnectiez.

La partie concernant la réinitialisation des variables d'environnement aux valeurs précédentes après le rechargement de l'invite de commandes est exactement ce que j'ai vécu sous Windows Server 2008.

L'article continue en disant :

Pour effectuer ces changements sans avoir à vous déconnecter, envoyez un message WM_SETTINGCHANGE à toutes les fenêtres du système, de sorte que toutes les applications intéressées (comme Windows Explorer, Gestionnaire de programme, Gestionnaire des tâches, Panneau de configuration, etc.) puissent effectuer une mise à jour.

Cela n'implique pas qu'Explorer envoie un message WM_SETTINGCHANGE une fois que vous avez modifié les variables d'environnement système, ni que cela fonctionne effectivement. Je ne suis pas sûr de comment vous pourriez faire ce qui est suggéré dans l'article KB (pour propager les changements immédiatement) à partir de l'invite de commandes.

1 votes

Ceci est la seule réponse qui me convient. Aucune des autres, y compris tuer Explorer de la manière difficile ou la manière "appropriée", ne fait aucune différence.

7voto

lifeofmle Points 147

Étant donné que les gens n'ont pas encore ajouté cette réponse, je voulais mentionner que vous pouvez définir des variables système permanentes qui survivent au redémarrage avec la commande SETX.

par exemple

setx PATH "%PATH%;c:\temp\my\new\path"

Veuillez noter que ce qui précède ne fonctionnera pas dans la fenêtre de commande actuelle et nécessitera l'ouverture d'une nouvelle fenêtre de commande avant de prendre effet. Par conséquent, en fonction du cas d'utilisation, vous devrez peut-être combiner cela avec l'une des autres techniques ci-dessus.

0 votes

Ne fonctionne pas :/ "syntaxe invalide"

1 votes

Essaye maintenant. Apparemment, il fallait des guillemets doubles.

0 votes

Merci, ouais j'ai compris.... sauf que je reçois un avertissement de troncature, donc je ne peux pas y ajouter... :(

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X