J'ai besoin de supprimer les variables système des postes de travail client. J'ai plus de 500 clients, donc je veux fournir un fichier batch à l'utilisateur pour s'exécuter pour supprimer les variables système.Comment supprimer une variable d'environnement de la configuration du système avec un fichier de commandes
Répondre
Vous devez modifier cette clé de Registre:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Environment
Les changements sont efficaces après le redémarrage.
La commande setx avec une valeur de chaîne vide ne le supprime pas. Et ce n'est pas seulement du picotement, parce que la logique est assez différente. Parce que si la variable spécifique à l'utilisateur remplace une variable globale, il n'est pas possible de supprimer la variable spécifique à l'utilisateur et d'avoir à nouveau la variable globale "redevenue active". La variable spécifique à l'utilisateur de chaîne vide bloque la variable globale. Il faut effectivement l'EFFACER (en utilisant la fenêtre Evironment Variables) pour y parvenir.
J'ai juste essayé aujourd'hui ceci, avec la variable globale JAVA_HOME étant surchargée par un JAVA_HOME spécifique d'utilisateur. Il n'a pas été possible de réactiver le varialble global sans supprimer complètement la variable spécifique à l'utilisateur. Et jusqu'à présent, je n'ai pas vu une méthode pour le faire à partir de la ligne de commande ou du script batch.
(pas assez de points de réputation pour ajouter un commentaire à la réponse ci-dessus à propos de setx, doivent donc ajouter ma propre réponse ...)
point intéressant. voir ma réponse – barlop
You may want to make these two permanent with setx but obviously no need to
C:\>set uvar=HKCU\Environment
C:\>
C:\>set mvar=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
C:\>
Quelques termes
Au sein d'une clé (qui est comme un dossier), vous avez une variable avec des données comme a = 5
http://msdn.microsoft.com/en-us/library/3dwk5axy.aspx parle de nom (a) ayant une valeur (5).
La terminologie du registre est un peu différente sur msdn mais reg.exe et wikipedia semblent cohérents. wikipedia http://en.wikipedia.org/wiki/Windows_Registry dit "Valeurs de registre sont des paires nom/données stockées dans les clés" parle d'une paire nom/données. nomme (a) les données (5) et la paire est une valeur. REG semble utiliser/v qui fait probablement référence à la fois au nom de variable et à ses données (comme dans wikipedia), il affiche à la fois le nom de la variable et ses données. Et REG a un/d qui je suppose est juste pour les données.
Un exemple avec setx
C:\>reg query %uvar%
HKEY_CURRENT_USER\Environment
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
...
C:\>setx aaa 3
C:\>reg query %uvar%
HKEY_CURRENT_USER\Environment
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
...
aaa REG_SZ 3
Si vous essayez d'utiliser setx pour le supprimer, le plus proche, vous pouvez obtenir est la compensation comme cet article this MS KB article 195050 MS KB dit que vous laisse avec elle encore dans le enregistrement.
setx ne pas supprimer la variable du registre
C:\>setx aaa ""
SUCCESS: Specified value was saved.
C:\>reg query %uvar%
HKEY_CURRENT_USER\Environment
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
...
aaa REG_SZ
C:\>
Il convient de noter cependant, que la variable est allé aussi loin que l'invite de cmd est concerné. echo% aaa% affichera% aaa% pour que la variable disparaisse. Il y a juste des déchets inutiles dans le registre maintenant.
l'utilisateur fait un point intéressant, que maintenant lorsque vous essayez de définir une variable à l'échelle du système, cela ne fonctionne pas. car il est écrasé par ce qui est dans la variable utilisateur, dans ce cas, il apparaîtra toujours comme indéfini.
C:\>reg delete %uvar% /v aaa
Delete the registry value aaa (Yes/No)? y
The operation completed successfully.
C:\>
Notez que aaa a maintenant disparu. Au dessous de.
C:\>reg query %uvar%
HKEY_CURRENT_USER\Environment
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
...
C:\>
Si vous voulez le faire pour une variable d'environnement système/machine plutôt qu'une variable utilisateur.
-les lignes ci-dessous doivent être d'une invite cmd privilégiée administrative
-Avis la clé est HKLM \ SYSTEM \ CurrentControlSet \ Control session \ Manager \ Environment
-Le% Mvar% (à la différence% UVar%) a besoin de devis Autour de ça, la clé a un espace dedans. Si vous manquez les citations ce n'est pas grave, vous obtenez juste une erreur qui pourrait vous rappeler d'utiliser des citations.
-Et bien sûr, si vous voulez définir une variable d'environnement dans cette partie du registre avec setx, utilisez par exemple. setx aaa 5 -m c'est-à-dire le -m après.
C:\>set mvar=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
C:\>reg delete "%mvar%" /v aaa
Delete the registry value aaa (Yes/No)? y
The operation completed successfully.
C:\>
autre note
Vous pourriez être en mesure de créer une variable d'environnement juste avec REG ADD ou REG SUPPR .. (à la place de setx) mais de toute façon, lorsque vous définissez une variable que vous voudrez peut-être utiliser régler aussi, de sorte qu'il est défini pour la session en cours, pas seulement le prochain. Et un lien re setx https://superuser.com/questions/647505/set-enviroment-variable-setx
Si vous voulez éviter le redémarrage, vous devrez trouver un moyen de diffuser un WM_SETTINGSCHANGE
à chaque fenêtre active après avoir supprimé la valeur.
Cela fera de nouvelles fenêtres CMD remarquer que la variable a été supprimée (et tout autre programme qui comprend WM_SETTNGSCHANGE
).
- 1. Un problème avec le fichier de commandes
- 2. Perl's $ | réglage affectent les commandes du système?
- 3. Utilisation du fichier de commandes pour créer un répertoire virtuel IIS à partir du fichier de configuration
- 4. Comment supprimer une partie du fichier avec awk
- 5. Comment saisir une chaîne d'un utilisateur dans une variable d'environnement à partir d'un fichier de commandes
- 6. Comment puis-je spécifier les propriétés du système dans la configuration de Tomcat au démarrage?
- 7. Utilisation de xcopy dans un fichier de commandes avec% programfiles%
- 8. Comment comparer une date avec la date du système?
- 9. Exécuter un fichier de commandes présent dans la machine distante
- 10. Rediriger la sortie du fichier de commandes exe
- 11. Appel du fichier de commandes Windows à partir de Linux
- 12. Itérer dans une liste de commandes dans un fichier dans la programmation du shell
- 13. Configuration d'un fichier de configuration pour CodeIgniter
- 14. Comment définir un nom de tampon Emacs avec une variable locale de fichier?
- 15. Comment afficher l'icône du système pour un fichier dans SWT?
- 16. Comment libérer le système RAM lors de la création et de la suppression des commandes utilisateur
- 17. envoyer des commandes à une fenêtre/un processus démarré à partir d'un fichier de commandes
- 18. bzr supprimer pour supprimer un fichier avec la branche ayant des modifications inconditionnelles
- 19. Emplacement du fichier de configuration XML SSIS
- 20. Comment supprimer du texte entre parenthèses avec une regex?
- 21. Rechargement un fichier de configuration sous jBoss
- 22. Visual Studio peut-il régénérer un fichier Web.config du service WCF avec la configuration par défaut?
- 23. Comment supprimer le message système Windows
- 24. Lors de la configuration d'une session avec PHP, comment la rendre globale sur l'ensemble du site?
- 25. Comment supprimer l'attribut readonly lors de la création d'une configuration
- 26. fin de ligne avec des commandes personnalisées
- 27. PowerShell 1 ne capture pas la sortie du fichier de commandes avec le té
- 28. Supprimer des lignes du fichier
- 29. Luttant avec une configuration d'exécution de certains composants du château
- 30. Comment obtenir la configuration du proxy HTTP du système en Java
J'ai trouvé mon paramètre d'environnement setx dans \ HKEY_CURRENT_USER \ Environment \. Mais merci pour le pointeur sur où regarder dans le registre. Et curieusement, je n'avais pas besoin d'un redémarrage pour que ça affecte le prochain dos \ cmd que j'ai ouvert. Intéressant. – PHenry