C.4.3 The MS-Windows System Registry

On MS-Windows, the environment variables emacs_dir, EMACSLOADPATH, EMACSDATA, EMACSPATH, EMACSDOC, SHELL, TERM, HOME, LANG, and PRELOAD_WINSOCK can also be set in the HKEY_CURRENT_USER or the HKEY_LOCAL_MACHINE section of the system registry, under the /Software/GNU/Emacs key. When Emacs starts, as well as checking the environment, it also checks the system registry for those variables.

To determine the value of those variables, Emacs goes through the following procedure. First, it checks the environment. If the variable is not found there, Emacs looks for a registry key by the name of the variable under /Software/GNU/Emacs; first in the HKEY_CURRENT_USER section of the registry, and if not found there, in the HKEY_LOCAL_MACHINE section. Finally, if Emacs still cannot determine the values, it uses the compiled-in defaults.

Note that the registry settings have global system-wide effect: they will affect all Emacs sessions run on the system. Thus, if you run different Emacs versions, or use both installed and un-installed Emacs executables, or build newer versions of Emacs, the settings in the registry will cause all of them to use the same directories, which is probably not what you want. For this reason, we recommend against setting these variables in the registry. If you have such settings in the registry, we recommend that you remove them.

If you run the Emacs MS-Windows installation program addpm.exe, it will update any existing registry settings of the emacs_dir, EMACSLOADPATH, EMACSDATA, EMACSPATH, EMACSDOC, SHELL, and TERM variables to have the values suitable for the installed Emacs version with which addpm.exe came. Note that addpm.exe will not create any registry setting that didn’t exist, it will only update existing settings, which are most probably inherited from an old Emacs installation, so that they are compatible with the newly installed Emacs version. Running addpm.exe is no longer necessary when installing recent versions of Emacs, so we only recommend doing that if you are upgrading from an older version, and cannot remove these settings from the registry for some reason.

In addition to the environment variables above, you can also add settings to the /Software/GNU/Emacs registry key to specify X resources (see X Options and Resources). Most of the settings you can specify in your .Xdefaults file can be set from that registry key.