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


C'est probablement une réponse facile, mais je n'ai jamais réussi à la trouver en googlant. Je voudrais simplement ajouter une variable d'environnement à une machine Windows (poste de travail ou serveur) et pouvoir l'utiliser sans redémarrer cette machine.

Supposons que votre serveur de production héberge diverses applications et qu'une nouvelle application nécessite l'exécution d'une variable d'environnement particulière. Vous ne souhaitez pas le redémarrer lorsque les utilisateurs sont connectés à vos autres applications. Quels choix as-tu? Je n'aime pas l'option d'attendre le bon moment pour redémarrer. Il doit y avoir un meilleur moyen. Qu'est-ce que je rate?


162
2018-05-16 04:09


origine


J'ai eu le même problème. J'ai lu quelque part que tuer le processus explorer.exe mettrait à jour les variables et que cela fonctionnerait. Ensuite, il me suffisait de lancer l'explorateur à partir du gestionnaire de tâches. - user19694
Vous devez fermer l'invite de commande et la rouvrir à nouveau pour que vos variables de chemin soient mises à jour. Les variables sont chargées au démarrage de cmd. - NiLInfinite


Réponses:


Les modifications apportées aux variables d'environnement doivent prendre effet immédiatement si vous les modifiez via la boîte de dialogue Propriétés principale de l'ordinateur en question (sous Poste de travail | Propriétés | Avancé | Variables d'environnement). Une fois les modifications enregistrées, Explorer diffuse une WM_SETTINGCHANGE message à toutes les fenêtres pour les informer du changement. Tous les programmes créés via Explorer après cette opération doivent obtenir l'environnement mis à jour, mais pas les programmes déjà en cours d'exécution, à moins qu'ils ne gèrent le message de modification des paramètres.

Je ne suis pas en mesure de dire à partir de la description de votre problème quel problème spécifique vous rencontrez. Pouvez-vous nous en dire plus sur le scénario spécifique qui ne fonctionne pas?

Cet article de la base de connaissances peut également être utile: Comment propager des variables d'environnement sur le système


153
2018-05-16 04:16



Ok, 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 commande et utilisé la commande "echo% <myvar>%. Merci à vous deux pour vos réponses. - Chad Braun-Duin
Pour les utilisateurs de PowerShell, cet extrait peut être utile: poshcode.org/2049 - Anders Zommarin
Si vous utilisez cmd, vous devez le redémarrer si changez la variable env - Neil McGuigan
Je viens d’installer Scala sur mon PC mais le PATH n’a pas été mis à jour; vraisemblablement, le MSI n'a pas diffusé le message WM_SETTINGCHCHANGE. J'ai ajouté une variable système factice, à savoir CHANGE_TO_UPDATE = z, que je mets à jour pour déclencher le message WM_SETTINGCHANGE - problème résolu. - Darren Bishop
Merci pour le CHANGE_TO_UPDATE = z, c’est exactement la solution que je voulais. Cela a fonctionné pour moi et je n'ai pas eu à redémarrer. - iopq


  1. Dans une invite de commande, tapez: runas /user:yourusername@yourdomain cmd
  2. Il va ouvrir une nouvelle invite de commande, puis tapez: taskkill /f /im explorer.exe
  3. Puis tapez: explorer.exe

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

Toutes les invites de commande doivent être fermées. Rouvrez une nouvelle invite de commande, tapez chemin et vous verrez les nouvelles données.


54
2018-03-20 06:36



De toutes les réponses sur cette page, c'est la seule qui a réellement fonctionné pour moi. Je vous remercie!! - CoreDumpError
+1 ....................... - Ijas Ameenudeen
Cela a fonctionné pour moi. Je pense que le problème est que si vous exécutez cmd via explorer (pour vous éviter de devoir taper de longs chemins), alors explorer n'est jamais fermé, même si vous fermez toutes les fenêtres de l'explorateur. Merci pour la solution :) - Steve Mc
Travaillé pour moi Vous pouvez également simplement utiliser le Gestionnaire des tâches pour supprimer les tâches de l’explorateur et le redémarrer (Fichier> Exécuter une nouvelle tâche). - adabyron
Euh S'il vous plaît, ne tuez pas l'explorateur Windows sauf si l'un de ses processus est bloqué. Ouvrez plutôt la boîte de dialogue des fenêtres d’arrêt et annulez-la en maintenant enfoncée ctrl+alt+shift. Cela quittera proprement l'explorateur Windows. Sous Vista +, le dialogue des fenêtres d'arrêt est plus difficile à trouver (mais reste présent, au moins jusqu'à 7 (incertain sur 8 et 10)), il existe donc une deuxième méthode. Ctrl + Maj + clic-droit dans une partie vide du menu Démarrer et choisissez quitter l'explorateur. En 8, l'option de sortie est la même, mais vous utilisez la barre des tâches, pas le menu Démarrer. - Kevin Cathcart


Il convient de garder à l'esprit que de nombreux programmes obtiennent les variables d'environnement lors de leur premier démarrage. Par conséquent, bien que Windows ne nécessite pas de redémarrage, il est possible que certains programmes puissent utiliser les nouvelles variables avant de pouvoir les utiliser. Un bon exemple en est la nécessité d’ouvrir une nouvelle fenêtre d’invite de commande après l’ajout d’un PATH (oui, j’ai été déclenché par cela).


16
2018-05-16 06:11



Ce problème affecte TOUS LES SERVICES, même un service redémarré ne verra pas les nouvelles variables d'environnement. - gimel
Etes-vous sûr que ce n'est pas à cause du partage d'un processus svchost? - Mark Sowul


Même si je n'ai pas assez de réputation pour commenter la réponse la plus votée à cette question, je voudrais dire que ce n'est pas tout à fait correct. Je le sais parce que, quelle que soit la solution de contournement que j'ai essayée dans ce post, rien ne fonctionnait réellement.

le kb article lié à dans cette réponse déclare en fait que:

Cependant, notez que les modifications des variables d’environnement ne   entraîner un changement immédiat. Par exemple, si vous démarrez une autre commande   Invite après avoir apporté les modifications, les variables d’environnement   reflètent les valeurs précédentes (pas les valeurs actuelles). Les changements ne prennent pas   jusqu’à ce que vous vous déconnectiez puis vous reconnectez.

La partie concernant les variables d’environnement réinitialisées aux valeurs précédentes après le rechargement de l’invite de commande correspond exactement à ce que j’ai expérimenté dans Windows Server 2008.

L'article poursuit:

Pour effectuer ces modifications sans avoir à vous déconnecter, diffusez un message WM_SETTINGCHANGE sur toutes les fenêtres du système, afin que toutes les applications intéressées (telles que l'Explorateur Windows, le Gestionnaire de programmes, le Gestionnaire de tâches, le Panneau de configuration, etc.) puissent effectuer une mise à jour.

Cela ne signifie pas qu'Explorer diffuse un message WM_SETTINGCHANGE une fois que vous avez modifié les variables d'environnement du système ou qu'il fonctionne réellement. Je ne sais pas comment vous feriez ce que l'article de la Base de connaissances vous propose (pour propager immédiatement les modifications) à partir de l'invite de commande.


12
2017-11-26 22:30





Faire l'env. variable disponible tout de suite:

1. Open a shell

En fonction de la variable d'environnement que vous souhaitez modifier, procédez comme suit:    (Supposons que vous vouliez ajouter un nouveau PATH pour une application récemment installée) Ainsi, à l'invite du shell, tapez ce qui suit:

2. PATH=%PATH%;C:\type\your\new\path\here

vérifiez que votre nouveau chemin a été ajouté à la variable d'environnement

3. echo %PATH%

Terminé.

Rendre la variable disponible au redémarrage

1. Press WinLogoKey+Pause/Break
2. On the left pane, press 'Advanced System Settings'
3. On the 'Advanced' tab, click 'Environment Variables'
4. In 'System Variables' choose the one you want to modify
5. Click Ok

Testé et fonctionnant sous Windows 7/10


4
2017-11-18 17:00





Une solution possible pour les services consiste à les exécuter temporairement en tant qu'utilisateur différent (autre que LocalSystem, LocalService, NetworkService). Par exemple, pour le service Apache, cela fonctionne sans aucun problème. Pour modifier le compte de service, ouvrez la console services.msc, sélectionnez service, cliquez sur Propriétés du service et, dans le deuxième onglet, entrez les informations d'identification de connexion d'un utilisateur. Redémarrez le service et ses variables d'environnement doivent être à jour.

S'il s'agit d'un utilisateur qui a été connecté, cela devrait fonctionner sans problème. Si vous utilisez le compte d'utilisateur actuel, il peut être nécessaire de redémarrer explorer.exe également. Notez également que l’exécution de services en tant que compte utilisateur normal peut créer des risques de sécurité.


3
2017-08-09 20:26