58 votes

Remplacement de HOMEDRIVE et HOMEPATH en tant qu'utilisateur Windows 7

Mon employeur a une stratégie de groupe Active Directory qui définit mon lecteur HOMEDRIVE de mon ordinateur portable Windows 7 à "M:" (un lecteur réseau mappé) et mon HOMEPATH à "\". Comme je n'ai que des autorisations en lecture seule pour la racine de ce lecteur partagé, je ne peux pas créer de fichiers ou de répertoires dans mon répertoire personnel Windows. Mes tentatives de travailler avec le service informatique ont été infructueuses.

Y a-t-il un moyen pour moi de changer globalement ces variables d'environnement au démarrage ou à la connexion ? J'ai besoin que toutes les applications utilisent des valeurs alternatives (comme "C:" et "\Utilisateurs\monnom"). J'ai des utilitaires installés (comme gvim et autres) qui stockent des fichiers de préférence dans le répertoire personnel de l'utilisateur.

IMPORTANT : Modifier ces variables d'environnement sous "Propriétés du système > Variables d'environnement" ne fonctionne pas. J'ai essayé de définir ces variables à la fois en tant que Variables utilisateur et Variables système (y compris un redémarrage). En tapantSET HOMEdans une fenêtre DOS, il est clair que mes réglages sont ignorés. De plus, l'utilisation de "Démarrer dans" dans un raccourci Windows ne résoudra également pas ce problème, car j'ai besoin que des éléments du menu contextuel Explorer (comme "Modifier avec Vim") fonctionnent correctement.

J'ai des droits d'administration sur cet ordinateur portable d'entreprise, mais je ne suis pas un expert de Win7. À l'époque, un script de démarrage aurait résolu cela en une minute. Est-ce même possible aujourd'hui ? Merci.

0voto

camilohe Points 146

Une alternative un peu plus simple serait d'exécuter le script ci-dessous (env-reset.vbs) en tant que tâche planifiée à la connexion, déverrouillage et peut-être aussi toutes les quelques minutes.

Set shell = WScript.CreateObject("WScript.Shell")  
Set venv = shell.Environment("Volatile")  

scriptingHost = LCase(Right(Wscript.FullName,Len("cscript.exe")))
interactive = Wscript.Interactive And (scriptingHost = "cscript.exe")

If interactive Then 
  Wscript.Echo "WSCRIPT"
  Wscript.Echo "  ScriptingHost = " & scriptingHost
  Wscript.Echo "  FullName = " & Wscript.FullName
  Wscript.Echo "  ScriptFullName = " & Wscript.ScriptFullName
End If  

If interactive Then Call showVolatile()

homedrive = Left(venv("USERPROFILE"),2)
homepath = Mid(venv("USERPROFILE"),3)
If interactive Then 
  Wscript.Echo "COMPUTED"
  Wscript.Echo "  homedrive = " & homedrive
  Wscript.Echo "  homepath = " & homepath
End If  
venv("HOMEDRIVE") = homedrive
venv("HOMEPATH")  = homepath

If interactive Then Call showVolatile()

Wscript.Quit(0)

Sub showVolatile()
  Wscript.Echo "VOLATILE"
  Wscript.Echo "  USERPROFILE = " & venv("USERPROFILE")  
  Wscript.Echo "  HOMEDRIVE = " & venv("HOMEDRIVE")  
  Wscript.Echo "  HOMEPATH = " & venv("HOMEPATH")  
  Wscript.Echo "  HOMESHARE = " & venv("HOMESHARE")

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X