Meilleur auteur de réponses
Modification des variables d'environnement TMP et TEMP

Question
-
Bonjour,
Après avoir installé Windows 7 64 bits sur un SSD, j'ai lu qu'il était préférable de déplacer les fichiers temporaires vers un disque dur. Pour cela, il faut modifier les variables TEMP et TMP. C'est ce que j'essaye de faire depuis hier pour celles du système et des utilisateurs.
Mais, ça ne fonctionne pas.
A chaque fois que je quitte la session puis que j'y reviens, les variables ont repris leurs valeurs par défaut sur C:\....
J'ai essayé de recréer mon dossier F:\Temp. Ça ne change rien.
D’où cela vient-il ? Comment y remédier ?
Merci pour votre aide,
Benmardi 4 juin 2013 14:08
Réponses
-
Tout dépend de la façon dont tu as voulu modifier ces variables!
En effet, on peut modifier une variable d'environnement de différentes manières :
- par la commande SET :
SET <nom-de-variable>=<contenu-de-la-variable>
SET temp=F:\temp
-> Cette modification est TEMPORAIRE (le temps de la session)
- depuis le panneau de configuration
Système :
(clic droit/propriétés sur le poste de travail p.ex.)
Paramètres système avancés
ou encore (plus rapide) en exécutant la commande :
sysdm.cpl @0,3
Bouton "Variables d'environnement"
Variables système" (ou "Variables utilisateur pour ...")
Sélectionner "TEMP" (ou TMP)
Bouton "Modifier"
Taper la nouvelle valeur
OK ... OK ... OK
-> Cette modification est PERMANENTE
- Depuis la BDR (pour les "accros" !) :
Valeur commune à tous les comptes :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Temp (ou Tmp)
(type REG_EXPAND_SZ)
Valeur spécifique au compte en cours :
HKCU\Environment\Temp (ou Tmp)
(type REG_EXPAND_SZ)
-> Cette modification est PERMANENTE, mais nécessite une réouverture de session
- Par programmation (applis ou scripts)
Exemple :
Le script ci-dessous ("SetTemp.vbs") sert à affecter à la variable "TEMP" le dossier passé en paramètres
----------- couper ici -----------
Set Args= Wscript.Arguments
if args.count=0 then wscript.quit
Set fso=Wscript.GetObject("Scripting.FileSystemObject")
Dossier=args(0)
If not fso.FolderExists(Dossier) then
Wscript.echo "Le dossier " & Dossier & " n'existe pas!"
Wscript.quit
end if
Set shell = WScript.CreateObject("WScript.Shell")
Set env=Shell.Environment("system")
env("TEMP")=Dossier
----------- couper ici -----------
Exemple d'utilisation :
cscript h:\outils\scripts\settemp.vbs "c:\trucs à la con\tests\trucmuche"
(les guillemets sont indispensables s'il y a des espaces dans le nom du dossier)
-> Cette modification est PERMANENTE, mais nécessite une réouverture de "shell" (nouvelle fenêtre de commandes p.ex.)
- Proposé comme réponse Aski. _MVP mardi 4 juin 2013 17:53
- Marqué comme réponse Dan BajenaruMicrosoft employee mardi 11 juin 2013 12:39
mardi 4 juin 2013 14:45 - par la commande SET :
-
Le lundi 10/06/2013 22:39:19, Benoit Lar a écrit dans le message <news:05b84499-f886-4795-994c-5c22e65fdfc8@communitybridge.codeplex.com> ce qui suit :
J'ai fait la correction. Maintenant, j'ai le message : "d:\Temp\SetTemp.vbs(11,1) Erreur d'execution Microsoft VBScript : Permission refusée."
A tous les coups tu N'AS PAS LU mes préceptes précédents
(dans mon message du 06/06 à 10h00) :
"[...]
NB: je ne l'ai pas précisé explicitement parce que
cela va de soi, si on veut modifier une variable
d'environnement SYSTEME (donc stockée dans
HKLM\SYSTEM\CurrentControlSet\.....), il faut bien
évidemment le faire EN TANT QU'ADMINISTRATEUR, sinon
cela sera refusé par UAC (User Account Control)"As-tu lancé le script depuis une fenêtre de comandes ouverte EN TANT QU'ADMINISTRATEUR ?
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY
http://www.bellamyjc.fr ou http://jc.bellamy.free.fr- Marqué comme réponse Dan BajenaruMicrosoft employee mardi 11 juin 2013 12:39
mardi 11 juin 2013 06:57
Toutes les réponses
-
Bonjour,
Avec les SSD de nouvelles génération ce n'est pas vraiment nécessaire de changer l'emplacement des fichiers temporaire et bien d'autre choses..
Voici les infos les plus importantes: http://www.revuedugeek.com/post/2010/09/27/Windows-7-Optimisations-SSD
Si tu veux tout de meme changer l'emplacement, voici la solution: http://answers.microsoft.com/en-us/windows/forum/windows_7-files/change-location-of-temp-files-folder-to-another/19f13330-dde1-404c-aa27-a76c0b450818
mardi 4 juin 2013 14:25 -
Tout dépend de la façon dont tu as voulu modifier ces variables!
En effet, on peut modifier une variable d'environnement de différentes manières :
- par la commande SET :
SET <nom-de-variable>=<contenu-de-la-variable>
SET temp=F:\temp
-> Cette modification est TEMPORAIRE (le temps de la session)
- depuis le panneau de configuration
Système :
(clic droit/propriétés sur le poste de travail p.ex.)
Paramètres système avancés
ou encore (plus rapide) en exécutant la commande :
sysdm.cpl @0,3
Bouton "Variables d'environnement"
Variables système" (ou "Variables utilisateur pour ...")
Sélectionner "TEMP" (ou TMP)
Bouton "Modifier"
Taper la nouvelle valeur
OK ... OK ... OK
-> Cette modification est PERMANENTE
- Depuis la BDR (pour les "accros" !) :
Valeur commune à tous les comptes :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Temp (ou Tmp)
(type REG_EXPAND_SZ)
Valeur spécifique au compte en cours :
HKCU\Environment\Temp (ou Tmp)
(type REG_EXPAND_SZ)
-> Cette modification est PERMANENTE, mais nécessite une réouverture de session
- Par programmation (applis ou scripts)
Exemple :
Le script ci-dessous ("SetTemp.vbs") sert à affecter à la variable "TEMP" le dossier passé en paramètres
----------- couper ici -----------
Set Args= Wscript.Arguments
if args.count=0 then wscript.quit
Set fso=Wscript.GetObject("Scripting.FileSystemObject")
Dossier=args(0)
If not fso.FolderExists(Dossier) then
Wscript.echo "Le dossier " & Dossier & " n'existe pas!"
Wscript.quit
end if
Set shell = WScript.CreateObject("WScript.Shell")
Set env=Shell.Environment("system")
env("TEMP")=Dossier
----------- couper ici -----------
Exemple d'utilisation :
cscript h:\outils\scripts\settemp.vbs "c:\trucs à la con\tests\trucmuche"
(les guillemets sont indispensables s'il y a des espaces dans le nom du dossier)
-> Cette modification est PERMANENTE, mais nécessite une réouverture de "shell" (nouvelle fenêtre de commandes p.ex.)
- Proposé comme réponse Aski. _MVP mardi 4 juin 2013 17:53
- Marqué comme réponse Dan BajenaruMicrosoft employee mardi 11 juin 2013 12:39
mardi 4 juin 2013 14:45 - par la commande SET :
-
J'ai bien utilisé la méthode 2. Pourtant, dans mon cas, les modifications ne sont pas permanentes... ce qui ne semble pas normal. Je trouve pas pourquoi.mardi 4 juin 2013 19:41
-
Le mardi 04/06/2013 21:41:36, Benoit Lar a écrit dans le message <news:2bad1c7a-8775-4180-a668-06f0d5fc2f9c@communitybridge.codeplex.com> ce qui suit :
J'ai bien utilisé la méthode 2. Pourtant, dans mon cas, les modifications ne sont pas permanentes... ce qui ne semble pas normal. Je trouve pas pourquoi.
Qu'est-ce qui te fait dire que les modifs ne sont pas permanentes?
Comment vérifies-tu que la variable a été (ou non) modifiée?Car il y a un petit piège !
P.ex., si tu as ouvert au préalable une fenêtre de commandes, et si tu affiche le contenu des variables d'environnement (par une commande "SET" ou encore par "echo %nom-de-la-variable%"), tu n'auras que les valeurs lors de l'ouverture de la fenêtre de commandes!
Il n'y a pas de rafraîchissement automatique!
Si tu modifies (méthode 2) une variable via le panneau de config (par sysdm.cpl @0,3), cette variable sera bien modifiée IMMÉDIATEMENT et de façon PERMANENTE, je suis absolument CATÉGORIQUE!
MAIS cela n'apparaîtra pas dans la MÊME fenêtre de commandes!Il FAUT FERMER cette fenêtre de commandes, puis la ROUVRIR, et de nouveau exécuter une commande SET ou ECHO %...% pour se rendre compte que la variable a bien été modifiée.
D'ailleurs, si tu as encore des doutes, il suffit d'ouvrir REGEDIT, et contrôler le contenu des variables concernées dans les clefs
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\
HKCU\Environment\NB: je ne l'ai pas précisé explicitement parce que cela va de soi, si on veut modifier une variable d'environnement SYSTEME (donc stockée dans HKLM\SYSTEM\CurrentControlSet\.....), il faut bien évidemment le faire EN TANT QU'ADMINISTRATEUR, sinon cela sera refusé par UAC (User Account Control)
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY
http://www.bellamyjc.fr ou http://jc.bellamy.free.frjeudi 6 juin 2013 08:00 -
Bonjour,
Je viens de faire de nouveau essai. Mon compte "Benoit" est administrateur. J'utilise la méthode 2. Je modifie la variable en remplaçant par "D:\Temp". Je quitte la session. J'ouvre la session. Mes modifications sont perdues.
J'ai essayé la méthode 3 (modification direct de la base de registre). Même chose. A l'ouverture de session, les modifications on disparu.
Il y a surement autre chose que je fais mal mais je ne sais pas quoi (droit sur le répertoire D:\Temp ?)
samedi 8 juin 2013 15:19 -
Rectification
Quand je fais un echo, la variable est bien modifiée
Par contre, quand j'ouvre les propriété système, elle ne le sont pas !?
Quand je regarde dans la base de registre, elles sont revenues à l'ancienne valeur C:\windows\temp pour celle du systeme.
Bref, ça fonctionne mais ça ne fonctionne pas
samedi 8 juin 2013 15:31 -
Le samedi 08/06/2013 17:31:56, Benoit Lar a écrit dans le message <news:cd194f32-202f-4405-a65b-8642ed82ac6e@communitybridge.codeplex.com> ce qui suit :
Rectification
Quand je fais un echo, la variable est bien modifiée
Par contre, quand j'ouvre les propriété système, elle ne le sont pas !?
Quand je regarde dans la base de registre, elles sont revenues à l'ancienne valeur C:\windows\temp pour celle du systeme.
Bref, ça fonctionne mais ça ne fonctionne pasATTENTION !!!!
En ce qui concerne les variables TEMP et TMP, il existe DEUX environnements : "SYSTEM" et "USER" !
Mais quand on exécute dans une fenêtre de commandes la commande :
echo %variable%cela affiche UNIQUEMENT la variable dans l'environnement "USER" (lié au compte en cours, donc stocké dans HKCU\Environment\ ), et non pas celle de SYSTEM!
je viens d'écrire un petit script VBS qui affiche le contenu de n'importe quelle variable respectivement dans les DEUX environnements SYSTEM et USER :
fichier "getvar.vbs"-------------- couper ici --------------
' ----------------------------------------------------------
' Script de test de variables d'environnement SYSTEM et USER
' JC BELLAMY © 2013
' ----------------------------------------------------------
Dim shell, args
Set shell = WScript.CreateObject("WScript.Shell")
Set args = Wscript.Arguments
If args.count=0 Then wscript.quit
nomvar=args(0)
S=""
call valvar("system")
call valvar("user ")
wscript.echo S
Wscript.quit'--------------------------------------------------------------------
Sub valvar(environment)
Set env=Shell.Environment(trim(environment))
S=S & VBCRLF & "Environnement " & environment & " : " & nomvar & "=" & env(nomvar)
End Sub
-------------- couper ici --------------
P.ex. :
C:\>getvar tempEnvironnement system : temp=%SystemRoot%\TEMP
Environnement user : temp=%USERPROFILE%\AppData\Local\Temp
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY
http://www.bellamyjc.fr ou http://jc.bellamy.free.frsamedi 8 juin 2013 17:16 -
Bonjour Benoit Lar,
Merci de nous tenir au courant sur la suite de vos démarches.
Cordialement,
Dan
Dan BAJENARU, MSFT Votez! Appel à la contribution
Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.lundi 10 juin 2013 09:34 -
1) J'ai modifié les variables TEMP et TMP de SYSTEM et USER via Ordinateur>Propriété>Paramètre avancé>Variables d'environnement.
J'exécute le script GetTemp ci-dessus et les variables sont bien modifiée.
Je quitte la session
Je me reconnecte
Elles ont repris leurs valeurs par défaut !?
2) J'ai essayé le script SetTemp mais j'ai une erreur ""d:\Temp\SetTemp.vbs(3,1) Erreur d'exécution Licrosoft VBScript: Nom du fichier ou de la classe introuvable lors de l'opération Automation"
lundi 10 juin 2013 15:42 -
Le lundi 10/06/2013 17:42:26, Benoit Lar a écrit dans le message <news:7d3bd533-728d-4740-8775-2435729c8df8@communitybridge.codeplex.com> ce qui suit :
1) J'ai modifié les variables TEMP et TMP de SYSTEM et USER via Ordinateur>Propriété>Paramètre avancé>Variables d'environnement.
J'exécute le script GetTemp ci-dessus et les variables sont bien modifiée.
Je quitte la session
Je me reconnecte
Elles ont repris leurs valeurs par défaut !?Il doit y avoir quelque part un script ou un programme qui rétablit les variables d'environnement!
Il faudrait que tu "épluches" tout ce qu'il y a comme processus lancés lors des ouvertures de session dans :Les DOSSIERS démarrage :
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\StartupLes CLEFS démarrage :
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
>2) J'ai essayé le script SetTemp mais j'ai une erreur ""d:\Temp\SetTemp.vbs(3,1) Erreur d'exécution Licrosoft VBScript: Nom du fichier ou de la classe introuvable lors de l'opération Automation"
Ooops !!!!
Erreur de ma part!Il faut remplacer la 3ème ligne
Set fso=WScript.GetObject("Scripting.FileSystemObject")par :
Set fso=WScript.CreateObject("Scripting.FileSystemObject")Désolé ...
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY
http://www.bellamyjc.fr ou http://jc.bellamy.free.frlundi 10 juin 2013 17:32 -
J'ai fait la correction. Maintenant, j'ai le message : "d:\Temp\SetTemp.vbs(11,1) Erreur d'execution Microsoft VBScript : Permission refusée."
Pour ce qui est du script ou du logiciel qui modifierai les variables, j'ai rien trouvé pour l'instant
lundi 10 juin 2013 20:39 -
Le lundi 10/06/2013 22:39:19, Benoit Lar a écrit dans le message <news:05b84499-f886-4795-994c-5c22e65fdfc8@communitybridge.codeplex.com> ce qui suit :
J'ai fait la correction. Maintenant, j'ai le message : "d:\Temp\SetTemp.vbs(11,1) Erreur d'execution Microsoft VBScript : Permission refusée."
A tous les coups tu N'AS PAS LU mes préceptes précédents
(dans mon message du 06/06 à 10h00) :
"[...]
NB: je ne l'ai pas précisé explicitement parce que
cela va de soi, si on veut modifier une variable
d'environnement SYSTEME (donc stockée dans
HKLM\SYSTEM\CurrentControlSet\.....), il faut bien
évidemment le faire EN TANT QU'ADMINISTRATEUR, sinon
cela sera refusé par UAC (User Account Control)"As-tu lancé le script depuis une fenêtre de comandes ouverte EN TANT QU'ADMINISTRATEUR ?
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY
http://www.bellamyjc.fr ou http://jc.bellamy.free.fr- Marqué comme réponse Dan BajenaruMicrosoft employee mardi 11 juin 2013 12:39
mardi 11 juin 2013 06:57 -
Effectivement, ça marche tout de suite mieux... Je pensais être admin mais ce n'étant pas complètement le cas. J'ai trouvé un post ou tu expliques ça.. je regarderais ce soir
Les modifications sont bien faites mais à la fermeture/ouverture de session suivante, elles sont perdues...
J'aimerais bien savoir ce qui provoque cela car ce sont quand même des variables systèmes donc je ne vois pas pourquoi une application tierce se permettrait de les modifier...
mardi 11 juin 2013 07:45 -
Après plusieurs essaie, la modification n'est vraiment pas conservée.
Comme tu l'as dit, j'ai regardé si quelques choses ne modifie pas les variables à l'ouverture de session mais j'ai rien trouvé...
Je sèche...
mardi 11 juin 2013 13:54