- Windows 7.
- C'est pour ma propre machine, donc cela n'a pas d'importance si elle nécessite des droits d'administrateur ou autre chose.
- De préférence en Python ou .NET, mais je peux apprendre un peu de programmation Win32 (C/C++) si nécessaire.
Répondre
si vous voulez variable d'environnement définie de façon permanente, vous pouvez insérer la nouvelle valeur dans Registre. par exemple avec vbscript, ajoutez le chemin « c: \ test » dans la variable PATH
Set WshShell = WScript.CreateObject("WScript.Shell")
strReg = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path"
strSetting = WshShell.RegRead(strReg)
strNewSetting = strSetting&";c\test"
WshShell.RegWrite strReg, strNewSetting
Donc, si vous utilisez Python ou d'autres langues, vous pouvez faire la même chose en utilisant propre api/modules de votre langue pour lire et écrire Registre
Utilisez la classe environnement comme celui-ci:
Environment.SetEnvironmentVariable("foo", "bar");
J'ai oublié de mentionner, est-ce que c'est juste pour la durée du programme ou est-ce permanent? – Javier
Cela n'affectera que l'environnement de programme actuel. Les modifications à l'échelle du système se trouvent dans le registre (voir la réponse de ghostdog) et nécessitent que le programme soit relancé après avoir effectué le changement. – Joshua
La modification de variables d'environnement par programmation concerne uniquement la durée du programme. Je n'ai pas entendu parler de modifier réellement l'environnement à l'échelle du système et de le rendre efficace ici et là. Je ne pense pas que cela puisse être fait, cela exigerait de fouiller à un niveau privilégié et éventuellement de jouer avec le système de base pour y parvenir.
Même sous Unix, cela ne peut pas être fait malgré certains hacks pour y parvenir. Je me souviens d'avoir vu un code qui modifiait réellement les variables d'environnement sous MSDOS, en modifiant la structure de données de l'environnement _psp de MSDOS, mais c'était un système monotâche et 16 bits sans aucune protection. Pour résumer, je ne pense pas que vous le puissiez et il serait imprudent de le faire, il pourrait être perçu comme si le système était sous la menace d'un 'cheval de Troie' ou d'un 'virus' pour ce faire, pas seulement que, en tant qu'utilisateur, je ne voudrais pas qu'un programme modifie la variable d'environnement du système sans mon consentement! Bien sûr, un programme peut écrire au registre pour le rendre permanent, mais j'aimerais quand même savoir quel est le but et pourquoi.
Jetez un coup d'œil à [this] (http://msdn.microsoft.com/fr-fr/library/windows/desktop/ms682653 (v = vs.85) .aspx) pour une variable d'environnement de jeu de méthodes qui colle. -1 pour FUD. – ssc
En C# ce qui suit crée une variable d'environnement permanent:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
Est-ce que cela deviendra permanent? – Javier
Cela dépend de la valeur de l'énumération EnvironmentVariableTarget utilisée. Voir http://msdn.microsoft.com/en-us/library/system.environmentvariabletarget.aspx – kicsit
ma fenêtre de débogage se bloque lorsque j'ajoute "EnvironmentVariableTarget.Machine" –
ou vous pouvez essayer un script Windows PowerShell; PowerShell est installé sur Windows 7 par défaut.
course powershell.exe
PS C:\> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")
Ensuite, par exemple, de cmd.exe
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\>echo %TestVariable%
Test value.
C:\>
Or (dans une nouvelle) Powershell.exe
PS C:\> echo $ENV:TestVariable
Test Value.
PS C:\>
départ http://technet.microsoft.com/en-us/library/ff730964.aspx
Cela fonctionne comme décrit, mais un shell DOS est déjà ouvert lorsque la variable env est définie ne semble pas ramasser la modification, donc apparemment, le PowerShell ne diffuse pas un message 'WM_SETTINGCHANGE' comme décrit [ici] (http://msdn.microsoft.com/en-us/library/ windows/desktop/ms725497 (v = vs.85) .aspx). Bon début cependant. – ssc
F ou quelqu'un d'autre à la recherche d'une réponse rapide commandline
SETX est disponible sur les serveurs Windows (en mode natif, je pense - http://technet.microsoft.com/en-us/library/cc755104.aspx)
+1 Plus simple que la réponse précédente et fonctionne sur win7 ultimate too – daitangio
setx.exe ne pouvait pas être un outil pire pour étendre 'Path'. Les valeurs de l'utilisateur et du système 'Path' ne devraient jamais être confondues, et les variables en pourcentage dans une valeur' REG_EXPAND_SZ' devraient rester non étendues. setx.exe ne peut pas faire cela. Qu'est-ce qu'il peut faire est de faire un gâchis horrible qui ne peut être défait. – eryksun
ne nous blâme pas pour vouloir utiliser la ligne de commande fournie par Microsoft: Description: Crée ou modifie des variables d'environnement dans l'environnement utilisateur ou système . Peut définir des variables basées sur des arguments, des regkeys ou entrée de fichier. – user1885834
- 1. locale modifier par programme
- 2. Modifier les couleurs en C par programme #
- 3. Tomcat: Modifier les hôtes virtuels par programme?
- 4. Pouvons-nous modifier les claviers par programme?
- 5. Comment modifier UIView par programme?
- 6. Modifier l'état UIButton par programme
- 7. Modifier un UIImage par programme
- 8. Modifier les variables récapitulatives retournées par Hmisc summary()
- 9. Modifier les variables globales en C++
- 10. Modifier l'ordre de tabulation par programme
- 11. Modifier le clavier par programme en Dvorak
- 12. Modifier la température de l'affichage par programme
- 13. Comment modifier par programme les options dans Access?
- 14. Modifier par programme les formules de rapport de cristal
- 15. Comment modifier les paramètres de l'iPhone par programme
- 16. modifier l'orientation des étiquettes, par programme
- 17. Modifier l'utilisateur du service Windows par programme
- 18. Modifier la vue ExpandableList par programme
- 19. Modifier par programme le ListBoxItem sélectionné
- 20. iPhone SDK: modifier par programme IBAction
- 21. Comment modifier un SubItem sélectionné par programme?
- 22. Modifier la résolution de l'écran par programme?
- 23. Comment modifier un DataTemplate par programme?
- 24. Comment modifier par programme UIColor de vue
- 25. Modifier le navigateur par défaut par programme Mac OSX
- 26. Comment modifier les variables d'une autre portée?
- 27. les utilisateurs peuvent-ils modifier les variables de session?
- 28. call_user_func et les variables par référence
- 29. Comment modifier les fichiers programme en Python?
- 30. Comment modifier les propriétés par défaut du pool d'applications par programme dans .NET
Sauvegardez simplement cela sous .vbs et lancez-le. –