How can I modify a user’s PATH environment variable without logging out?

Solution 1:

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.

Solution 2:

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.


Solution 3:

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.


Solution 4:

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.


Solution 5:

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.)