Comment puis-je modifier la variable d'environnement PATH d'un utilisateur sans me déconnecter?

22

La question dit à peu près tout; J'ai des utilisateurs qui ne sont pas autorisés à modifier leur propre PATHvariable d'environnement et s'ils ont besoin de la faire modifier pour une raison quelconque, ils doivent se déconnecter afin qu'un administrateur puisse se connecter et modifier le PATHpour eux, avant que l'utilisateur se reconnecte . Ce n'est pas idéal. Peut-on le faire d'une meilleure manière?

ninesided
la source
Juste curieux - mais comment empêchez-vous exactement les utilisateurs de changer leur propre environnement par défaut? Leur refusez-vous simplement l'accès à Poste de travail / Propriétés / Avancé / Variable d'environnement? Ils pourraient toujours modifier HKCU / Environnement à travers une variété de méthodes.
Cooper
Préférences de stratégie de groupe? Juste une pensée.
Simon Catlin

Réponses:

6

Vous pouvez toujours invoquer un shell cmd avec des droits d'administrateur (ou toute autre méthode runas) et utiliser un outil tel que SETX pour modifier le chemin de façon permanente. Les shells existants et / ou les programmes en cours d'exécution utiliseront probablement l'ancien chemin, mais tout nouveau shell / programme utilisera les nouveaux paramètres.

Berzemus
la source
25

Pour les comptes sans privilèges d'administrateur:

Ouvrez "Comptes d'utilisateurs" et choisissez "Modifier mes variables d'environnement" ( http://support.microsoft.com/kb/931715 ).

Cette boîte de dialogue vous montrera vos variables utilisateur actuelles ainsi que les variables système. Vous devrez peut-être ajouter une variable PATH locale si vous ne l'avez pas déjà fait.

Pour mettre à jour votre chemin pour inclure le répertoire Python 3.3, par exemple, cliquez sur Nouveau:

Nom de la variable: PATH Valeur de la variable:% PATH%; C: \ Python33

Cela crée un CHEMIN local en prenant le CHEMIN système actuel et en l'ajoutant.

Curtis Nelson
la source
2
Je dois penser que cela répond, " J'ai des utilisateurs qui n'ont pas la permission de modifier leur propre CHEMIN ...", et le fait en permanence , mieux que les autres. Très bien fait. Vous vous demandez pourquoi cliquer sur le Poste de travail est protégé par l'administrateur si ce n'est pas le cas? Protégez simplement les champs non locaux de la même manière que l'interface utilisateur lorsque vous y accédez.
ruffin
10

Poste de travail / Propriétés / Avancé / Variables d'environnement. Les modifications prennent effet immédiatement, à l' exception des fenêtres d'invite de commande déjà ouvertes. Pas besoin de se déconnecter et de se reconnecter.

REMARQUE: si vous n'avez pas accès à cette fenêtre, vous pourrez peut-être l'obtenir en exécutant à rundll32 sysdm.cpl,EditEnvironmentVariablespartir de la fenêtre Exécuter ou de la ligne de commande.

John Gardeniers
la source
les utilisateurs réguliers de mon réseau ne sont pas en mesure de modifier leurs propres variables d'environnement comme celle-ci, sauf si je peux ouvrir cet écran avec des privilèges élevés via "Exécuter en tant que ..." ou quelque chose de similaire, cela ne fonctionnera pas pour moi
neuf
4

Dans une invite de commande, vous pouvez faire:

set PATH=C:\somedir;%PATH%

mais cela ne le change que pour l'invite de commande (et toutes les applications lancées à partir de l'invite de commande). En supposant que vous souhaitez que cela s'applique à tout ce que l'utilisateur fait, vous modifiez les variables d'environnement des utilisateurs. Cliquez avec le bouton droit sur Poste de travail, Propriétés, Avancé, Variables d'environnement et dans "Variables utilisateur pour ajouter une variable:

PATH = C:\whatever

Lorsque l'utilisateur se connecte, cela est ajouté au chemin d'accès à l'échelle du système.

John Rennie
la source
Je dois changer l'ordre des entrées déjà dans le CHEMIN, donc l'ajout de la suppression des variables utilisateur ne fonctionne pas pour moi dans ce cas
neuf
setx, comme @Berzemus l'a mentionné, peut modifier la variable système PATH (le /mcommutateur) de façon permanente.
Pat
2

L'utilisateur peut définir une variable PATH à l'invite de commande qui remplacera la variable PATH à l'échelle du système, même si l'utilisateur ne dispose pas des droits "Administrateur". La modification prendra effet pour les nouveaux processus que l'utilisateur démarre à partir de cette invite de commande. (Le processus Explorer existant et tout autre processus que l'utilisateur exécute lorsque la modification est apportée ne "verront" pas la modification.)

Evan Anderson
la source
1

En plus des réponses ci-dessus, vous pouvez également mettre à jour le registre (ce qui a l'avantage d'être scriptable):

La variable PATH est stockée dans HKEY_CURRENT_USER \ Environment.

Pour lire le chemin actuel:

reg query HKEY_CURRENT_USER\Environment /v PATH

Pour ajouter une valeur c: \ somedir au chemin:

reg add HKEY_CURRENT_USER\Environment /v PATH /d "%PATH%;c:\somedir"

Notez que les processus lisent l'environnement lors de leur lancement, vous devrez donc redémarrer le processus pour qu'il obtienne le nouveau chemin.

Mise à jour: Une autre façon que j'ai trouvée est d'exécuter:

rundll32 sysdm.cpl,EditEnvironmentVariables

Encore une fois, cette applet modifie le registre et a le même effet que ci-dessus.

Kristopher Noronha
la source