The question pretty much says it all; I have users who do not have permission to edit their own PATH
environment variable and if they need to have it modified for some reason, they need to log out so an Admin can log in and change the PATH
for them, before the user logs back in again. This isn't ideal. Can it be done in a better way?
-
Just curious - but how exactly are you preventing users from changing their own default environment? Are you just denying them access to My Computer / Properties / Advanced / Environment Variable? They could still modify HKCU/Environment through a variety of methods.– CooperApr 4, 2011 at 13:15
-
See also superuser.com/questions/189654/…– PatJul 29, 2013 at 19:17
-
Group policy preferences? Just a thought.– Simon CatlinJul 29, 2013 at 21:19
7 Answers
You can always invoke a cmd shell with administrator rights (or any other runas method), and use a tool such as SETX to modify the path permanently. Existing shells and/or running programs will probably be using the old path, but any new shell/program will use the new settings.
For accounts without admin privileges:
Open "User Accounts" and choose "Change my environment variables" (http://support.microsoft.com/kb/931715).
This dialog will show you your current user variables as well as the system variables. You may need to add a local PATH variable if you haven't already.
To update your Path to include the Python 3.3 directory, for instance, click New:
Variable Name: PATH Variable Value: %PATH%;C:\Python33
This creates a local PATH by taking the current system PATH and adding to it.
-
3I've got to think this answers, "I have users who do not have permission to edit their own PATH...", and does so permanently, better than the rest. Very nicely done. Wonder why clicking that from the My Computer is admin protected if this isn't? Just protect non-local fields the same way the UI does when accessed this way.– ruffinSep 10, 2014 at 15:10
-
1Unfortunately, this doesn't seem to work. When my users attempt this, it prompts them for the admin password. As I enter the admin password, it ends up opening the dialog for MY path statement. Dec 8, 2021 at 18:51
My Computer / Properties / Advanced / Environment Variables. Changes there take effect immediately except for already open command prompt windows. No need to log out and back in.
NOTE: If you don't have access to that window, you might be able to get it by running rundll32 sysdm.cpl,EditEnvironmentVariables
from the Run window or command-line.
-
regular users on my network are not able to change their own environment variables like this, unless I can open that screen with elevated privs via "run as..." or something similar, this won't work for me Jul 1, 2009 at 7:00
In addition to the answers above, you can also update the registry (which has the advantage of being scriptable):
The PATH variable is stored in HKEY_CURRENT_USER\Environment.
To read the current path:
reg query HKEY_CURRENT_USER\Environment /v PATH
To append a value c:\somedir to the path:
reg add HKEY_CURRENT_USER\Environment /v PATH /d "%PATH%;c:\somedir"
Note that processes read the environment when being launched, so you would have to restart the process for it to get the new path.
Update: Another way I found is to run:
rundll32 sysdm.cpl,EditEnvironmentVariables
Again, this applet edits the registry and has the same effect as the above.
In a command prompt you can do:
set PATH=C:\somedir;%PATH%
but this only changes it for the command prompt (and any apps launched from the command prompt). Assuming you want this to apply to everything the user does you change the users environment variables. Right click My Computer, Properties, Advanced, Environment variables and in the "User variables for add a variable:
PATH = C:\whatever
When the user logs in this gets added to the system wide path.
-
I need to change the order of entries already in the PATH, so adding removing from the User Variables doesn't work for me in this case Jul 1, 2009 at 7:01
-
setx
, as @Berzemus mentioned, can edit the system PATH variable (the/m
switch) permanently.– PatJul 29, 2013 at 19:12
The user can set a PATH variable at a command-prompt that will override the system-wide PATH variable, even if the user doesn't have "Administrator" rights. The change will take effect for new processes the user starts from that command prompt. (The existing Explorer process, and any other processes the user is running when the change is made, will not "see" the change.)
On Windows 10, a user without administrator privileges can edit their own path variable by going to Settings and searching for "Edit environment variables for your account" which will pull up all of your environment variables. Then just highlighting "Path" in the top user variables box, you can click edit and set the path. Okay to save and the path should be set for any new console that's opened.