This article was previously published under Q104011
You can modify user environment variables by editing the followingRegistry key:
HKEY_CURRENT_USER \ Environment
You can modify system environment variables by editing the followingRegistry key:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment
Note that any environment variable that needs to be expanded (for example,when you use %SYSTEM%) must be stored in the registry as a REG_EXPAND_SZregistry value. Any values of type REG_SZ will not be expanded when readfrom the registry.
Note that RegEdit.exe does not have a way to add REG_EXPAND_SZ. UseRegEdt32.exe when editing these values manually.
However, note that modifications to the environment variables do notresult in immediate change. For example, if you start another CommandPrompt after making the changes, the environment variables will reflect theprevious (not the current) values. The changes do not take effect until youlog off and then log back on.
To effect these changes without having to log off, broadcast aWM_SETTINGCHANGE message to all windows in the system, so that anyinterested applications (such as Windows Explorer, Program Manager, Task Manager, ControlPanel, and so forth) can perform an update.
For example, on Windows NT-based systems, the following code fragment should propagatethe changes to the environment variables used in the Command Prompt:
None of the applications that ship with Windows 95 and Windows 98, including Windows Explorer and ProgramManager, respond to this message. Thus, while this articlecan technically be implemented on Windows 95 and Windows 98, there is no effect except tonotify third-party applications. The only method of changing globalenvironment variables on Windows 95 is to modify the autoexec.bat file andreboot.