web-dev-qa-db-fra.com

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

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

Supposons que vous ayez un serveur de production qui héberge une variété d'applications et qu'une nouvelle application a besoin d'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. Quels choix avez-vous? Je n'aime pas l'option attendre un bon moment pour redémarrer. Il doit y avoir un meilleur moyen. Qu'est-ce que je rate?

186
Chad Braun-Duin

Les modifications apportées aux variables d'environnement doivent prendre effet immédiatement, si vous effectuez la modification via la boîte de dialogue Propriétés principale de l'ordinateur en question (accédez à Poste de travail | Propriétés | Avancé | Variables d'environnement). Une fois les modifications enregistrées, Explorer diffuse un WM_SETTINGCHANGE message à toutes les fenêtres pour les informer du changement. Tous les programmes générés via Explorer après cela devraient obtenir l'environnement mis à jour, bien que les programmes déjà en cours ne le seront pas, à moins qu'ils ne gèrent le message de changement de paramètre.

Je ne suis pas en mesure de dire à partir de 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 de la base de connaissances peut également être utile: Comment propager des variables d'environnement vers le système

166
Charlie
  1. Dans une invite de commande, tapez: runas /user:yourusername@yourdomain cmd
  2. Il ouvrira une nouvelle invite cmd, puis tapez: taskkill /f /im Explorer.exe
  3. Tapez ensuite: Explorer.exe

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

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

66
Ron AndKim Stengel

Une chose à garder à l'esprit est que de nombreux programmes obtiennent les variables d'environnement lors de leur premier démarrage.Par conséquent, même si Windows n'a pas besoin d'un redémarrage, certains programmes peuvent avant de pouvoir utiliser les nouvelles variables. Un bon exemple de cela est d'avoir à ouvrir une nouvelle fenêtre d'invite de commandes après avoir ajouté un PATH (oui, j'ai été déclenché par cela).

20
nedm

Bien que je n'aie pas assez de réputation pour commenter la réponse la plus votée à cette question, je voudrais dire qu'elle n'est pas tout à fait correcte. Je le sais car peu importe la solution de contournement que j'ai essayée dans ce post, rien n'a vraiment fonctionné.

l'article de ko lié à cette réponse déclare en fait que:

Cependant, notez que les modifications apportées aux variables d'environnement n'entraînent pas de changement immédiat. Par exemple, si vous démarrez une autre invite de commandes après avoir effectué les modifications, les variables d'environnement refléteront les valeurs précédentes (et non les valeurs actuelles). Les modifications ne prennent effet que lorsque vous vous déconnectez, puis vous reconnectez.

La partie concernant les variables d'environnement qui rétablissent les valeurs précédentes après le rechargement de l'invite de commande est exactement ce que j'ai vécu dans Windows Server 2008.

L'article poursuit en disant:

Pour effectuer ces modifications sans avoir à vous déconnecter, diffusez un message WM_SETTINGCHANGE à 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 des tâches, le Panneau de configuration, etc.) puissent effectuer une mise à jour.

Cela n'implique pas qu'Explorer diffuse un message WM_SETTINGCHANGE une fois que vous avez modifié les variables d'environnement système, ou qu'il fonctionne réellement. Je ne sais pas comment vous feriez ce qui est suggéré dans l'article de la base de connaissances (pour propager les modifications immédiatement) à partir de l'invite de commandes.

16
testworks

Faites l'env. variable disponible immédiatement:

1. Open a Shell

En fonction de la variable d'environnement que vous souhaitez modifier, procédez comme suit: (supposez que vous souhaitez ajouter un nouveau CHEMIN 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
Pedro Sousa

Une solution possible pour les services consiste à les exécuter temporairement en tant qu’autre utilisateur (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 le service, cliquez sur les propriétés du service et, dans le deuxième onglet, entrez les informations de connexion pour 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 utilisateur actuel, le redémarrage de Explorer.exe peut également être nécessaire. Notez également que l'exécution de services en tant que compte d'utilisateur normal peut créer des risques de sécurité.

3
Odin

Puisque 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 vous obligera à ouvrir une nouvelle fenêtre de commande avant qu'elle ne prenne effet. En conséquence, selon le cas d'utilisation; vous devrez peut-être combiner cela avec l'une des autres techniques ci-dessus.

Veuillez consulter l'URL suivante pour plus de détails :

1
Doug