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.

43voto

Terrance Points 1206

Voici quelques hacks que j'ai développés. Ils ne sont pas élégants, mais peuvent être fonctionnels dans votre environnement d'entreprise.

Uniquement HOMEDRIVE

Il semble que de nombreuses applications n'utilisent que HOMEDRIVE / HOMEPATH. Dans ce cas, vous pouvez créer un script de démarrage qui remappe la lettre de lecteur de base vers votre chemin d'utilisateur local via le chemin administrateur de lecteur UNC :

set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Serveur\Utilisateurs\nom_utilisateur

net use g: /delete
net use g: \\localhost\C$\Utilisateurs\nom_utilisateur

Défaut Local de HOMEDRIVE

Si vous n'avez pas besoin d'accéder du tout à "Serveur" par son nom, vous pouvez provoquer la défaillance du paramètre de stratégie de groupe et retomber sur votre machine locale. La manière la plus simple de le faire est d'ajouter une entrée à C:\Windows\System32\drivers\etc\hosts comme :

127.0.0.1   Serveur

Après le redémarrage, vous devriez voir quelque chose comme :

set HOME
HOMEDRIVE=C:
HOMEPATH=\Utilisateurs\nom_utilisateur

HOMEDRIVE/SHARE avec des chemins UNC locaux / distants hybrides

Si vous souhaitez accéder à "Serveur" par son nom pour certains chemins UNC, mais remplacer d'autres par des chemins locaux, j'ai développé l'abominable suivant. Remarque : les connexions directes au serveur "Serveur" se résoudront toujours sur votre machine locale. Je recommande cette solution uniquement si "Serveur" est uniquement un serveur de fichiers :

  1. Modifiez C:\Windows\System32\drivers\etc\hosts pour rediriger "Serveur" vers votre machine locale :

    127.0.0.1   Serveur
  2. Ajoutez la valeur de registre Multi-String suivante à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 pour permettre le passage des informations d'identification au chemin UNC local :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\
    BackConnectionHostNames = Serveur
  3. Créez un répertoire fictif qui servira de racine pour Serveur :

    set DUMMY_LOC=C:\Serveur_Factice
    
    mkdir %DUMMY_LOC%
    cd /D %DUMMY_LOC%
  4. Pour chaque chemin UNC que vous souhaitez diriger vers le véritable Serveur :

    rem Vous pouvez également utiliser une IP ci-dessous, mais il est plus susceptible de se casser si le DNS change
    set SERVER_FQDN=Serveur.réseau.blah.com
    
    rem Jetez un coup d'œil à ce qui est disponible...
    net view \\%SERVER_FQDN%\
    
    mklink /D Exemple_Distant \\%SERVER_FQDN%\Exemple_Distant
    net share Exemple_Distant=%DUMMY_LOC%\Exemple_Distant /grant:everyone,FULL
  5. Pour chaque partage UNC que vous voulez définir localement (comme Utilisateurs) :

    rem Le lien n'est pas vraiment nécessaire pour le partage, je trouve juste plus facile à gérer lorsque tous ces hacks sont dans le même répertoire
    
    mklink /D Utilisateurs C:\Utilisateurs
    net share Utilisateurs=%DUMMY_LOC%\Utilisateurs /grant:everyone,FULL
  6. Redémarrez

Pour l'exemple, cela permettrait de résoudre les chemins UNC suivants :

\\Serveur\Exemple_Distant => \\Serveur.réseau.blah.com\Exemple_Distant
\\Serveur\Utilisateurs          => C:\Utilisateurs

Cette résolution de chemin doit avoir lieu avant les mappings de lecteur. Tant que les chemins UNC associés aux mappings sont valides (qu'ils soient locaux ou distants), les lettres de lecteur doivent se comporter comme prévu.

Par exemple, dans ma configuration, les variables suivantes sont imposées par le domaine :

set HOME
HOMEDRIVE=G:
HOMEPATH=\
HOMESHARE=\\Serveur\Utilisateurs\nom_utilisateur

Mais en raison de mes mappings, le résultat est :

G: => \\Serveur\Utilisateurs\nom_utilisateur => C:\Utilisateurs\nom_utilisateur

3voto

Ali Malekpour Points 131

La meilleure solution que j'ai trouvée a été de définir des variables pendant la connexion et avant userinit.exe.

C'est ce que j'ai fait. J'ai d'abord créé un fichier batch à C:\Windows\System32\userinit.cmd contenant

@ECHO OFF
SET HOMEDRIVE=C:
SET HOMEPATH=\Users\%USERNAME%
SET HOMESHARE=\\localhost\C$\Users\%USERNAME%
@START C:\Windows\system32\userinit.exe

et j'ai ensuite modifié la valeur de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit en C:\Windows\System32\userinit.cmd dans le registre.

Plus d'informations sur : https://technet.microsoft.com/en-us/library/cc939862.aspx

2voto

jimyi Points 13032

J'ai utilisé SETX dans un script de démarrage et cela a fonctionné pour moi. Consultez ma réponse.

0voto

bob Points 21

Je pense que ces chemins sont automatiquement définis à l'endroit où se trouve votre profil utilisateur. Le lecteur de démarrage auquel vous faites référence est l'endroit où se trouvent votre ntuser.dat, vos données d'application et les autres dossiers de profil utilisateur, n'est-ce pas ? Avec NT3.x, le "profil utilisateur" était simplement la ruche de registre utilisateur avec les paramètres et vous pouviez définir un chemin d'accès séparé pour chaque utilisateur. Tout cela a été regroupé dans NT4 en tant que profil utilisateur avec un bureau, mes documents, un menu Démarrer, etc.

Les emplacements de tous les profils sont stockés dans des clés de registre sous

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Vous trouverez des valeurs pour les profils spéciaux, et des sous-clés : une pour chaque profil actif sur le système. Ils sont configurés par l'identifiant de sécurité du compte utilisateur auquel ils appartiennent. Le moyen le plus simple de trouver le vôtre serait de parcourir chacun d'eux à la recherche du bon chemin (sous la valeur ProfileImagePath). Vous devriez juste pouvoir changer cette valeur en n'importe quel chemin voulu ; cela prendra effet la prochaine fois que vous vous connecterez. Assurez-vous de copier vos fichiers vers le nouveau chemin en premier lieu.

Si vous devez déplacer le profil du compte sur lequel vous êtes connecté (c'est-à-dire connecté en tant que MikeC et que vous essayez de copier le profil pour MikeC), le fichier ntuser.dat (la ruche de registre contenant HKEY_CURRENT_USER) sera verrouillé par le noyau. Vous pouvez quand même copier la ruche : accédez à regedit, faites un clic droit sur HKEY_CURRENT_USER, sélectionnez exporter, changez le type en fichiers de ruche de registre, et enregistrez sous le nom de ntuser.dat à votre nouvel emplacement.

D'après mon expérience, si winlogon a un problème pour charger un profil parce que quelque chose est mal configuré, il créera soit une nouvelle copie à partir du profil par défaut, soit vous donnera une copie temporaire à utiliser pour cette session et vous pourrez quand même vous connecter. Cependant, je vous recommande d'avoir un autre compte administrateur à utiliser sur le système au cas où quelque chose se passerait mal.

0voto

John Points 281

Je poste ceci au cas où quelqu'un d'autre viendrait à cette question via Google. Au lieu de changer mon répertoire personnel et de donner des ennuis aux informaticiens, j'ai configuré et exécuté mon développement sur une machine virtuelle. Microsoft propose Windows XP en mode virtuel. http://www.microsoft.com/windows/virtual-pc/download.aspx

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