Si j'exécute à set PATH=%PATH%;C:\\Something\\bin
partir de la ligne de commande ( cmd.exe
) puis que echo %PATH%
je l' exécute, je vois cette chaîne ajoutée au PATH. Si je ferme et ouvre la ligne de commande, cette nouvelle chaîne n'est pas dans PATH.
Comment puis-je mettre à jour PATH de manière permanente à partir de la ligne de commande pour tous les processus à l'avenir, pas seulement pour le processus actuel?
Je ne veux pas faire cela en allant dans Propriétés système → Avancé → Variables d'environnement et mettre à jour PATH ici.
Cette commande doit être exécutée depuis une application Java (voir mon autre question ).
Runtime.getRuntime().exec("my command");
Réponses:
La documentation expliquant comment procéder se trouve sur MSDN . L'extrait clé est le suivant:
Notez que votre application aura besoin de droits d'administrateur élevés pour pouvoir modifier cette clé.
Vous indiquez dans les commentaires que vous seriez heureux de modifier uniquement l'environnement par utilisateur. Pour ce faire, modifiez les valeurs dans HKEY_CURRENT_USER \ Environment . Comme auparavant, assurez-vous de diffuser un
WM_SETTINGCHANGE
message.Vous devriez pouvoir le faire à partir de votre application Java assez facilement en utilisant les classes de registre JNI.
la source
HKEY_CURRENT_USER\Environment
pour éviter l'exigence d'élévation.requestedExecutionLevel
surrequireAdministrator
dans le manifeste de l'application.Vous pouvez utiliser:
Cependant,
setx
tronquera la chaîne stockée à 1024 octets, corrompant potentiellement le PATH./M
changera l' entréePATH
auHKEY_LOCAL_MACHINE
lieu deHKEY_CURRENT_USER
. En d'autres termes, une variable système, au lieu de l'utilisateur. Par exemple:Vous devez garder à l'esprit que le nouveau PATH n'est pas visible dans votre courant
cmd.exe
.Mais si vous regardez dans le registre ou sur un nouveau
cmd.exe
avec"set p"
vous pouvez voir la nouvelle valeur.la source
setx
pour modifier le chemin de la machine au lieu du chemin de l'utilisateur?/m
à la fin de la commande, sur Windows XP et 7. Je ne l'ai pas essayé cependant.setx
commande "L'option par défaut n'est pas autorisée plus de '2' fois" Comment la contourner?Je mets en garde contre l'utilisation de la commande
pour modifier la variable PATH en raison d'une "fonctionnalité" de son implémentation. Sur de nombreuses (la plupart?) Installations ces jours-ci, la variable sera longue -
setx
tronquera la chaîne stockée à 1024 octets, corrompant potentiellement le PATH (voir la discussion ici ).( Je me suis inscrit spécifiquement pour signaler ce problème et je n'ai donc pas la réputation du site pour commenter directement la réponse publiée le 2 mai 2012. Merci à beresfordt d'avoir ajouté un tel commentaire )
la source
Ce script Python [*] fait exactement cela:
Vous trouverez ci-dessous quelques exemples d'utilisation, en supposant qu'il a été enregistré dans un fichier appelé
setenv.py
quelque part dans votre chemin actuel. Notez que dans ces exemples, je n'avais pas de droits d'administrateur , donc les changements n'ont affecté que l'arborescence de registre de mon utilisateur local:[*] Adapté de: http://code.activestate.com/recipes/416087-persistent-environment-variables-on-windows/
la source
À titre de référence, pour quiconque cherche comment changer le chemin via le code, je cite un article utile d'un programmeur Delphi à partir de cette page Web: http://www.tek-tips.com/viewthread.cfm?qid=686382
la source
Dans un réseau d'entreprise, où l'utilisateur n'a qu'un accès limité et utilise des applications portables, il existe ces astuces de ligne de commande:
reg query "HKEY_CURRENT_USER\Environment"
. À utiliser"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
pour LOCAL_MACHINE.reg add "HKEY_CURRENT_USER\Environment" /v shared_dir /d "c:\shared" /t REG_SZ
. À utiliserREG_EXPAND_SZ
pour les chemins contenant d'autres variables %%.reg delete "HKEY_CURRENT_USER\Environment" /v shared_dir
.la source
Ce script http://www.autohotkey.com/board/topic/63210-modify-system-path-gui/
inclut tous les appels d'API Windows nécessaires qui peuvent être refactorisés selon vos besoins. Il s'agit en fait d'une interface graphique AutoHotkey pour changer facilement le PATH système. Doit être exécuté en tant qu'administrateur.
la source