summaryrefslogtreecommitdiff
path: root/nt/addpm.c
diff options
context:
space:
mode:
Diffstat (limited to 'nt/addpm.c')
-rw-r--r--nt/addpm.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/nt/addpm.c b/nt/addpm.c
index 20b289f6761..4fcebe2ca14 100644
--- a/nt/addpm.c
+++ b/nt/addpm.c
@@ -62,6 +62,8 @@ DdeCallback (UINT uType, UINT uFmt, HCONV hconv,
#define REG_GTK "SOFTWARE\\GTK\\2.0"
#define REG_APP_PATH \
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe"
+#define REG_RUNEMACS_PATH \
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\runemacs.exe"
static struct entry
{
@@ -129,10 +131,25 @@ add_registry (char *path)
/* Make sure the emacs bin directory continues to be searched
first by including it as well. */
char *dll_paths;
+ HKEY runemacs_key = NULL;
len = strlen (path) + 5 + size;
dll_paths = (char *) alloca (size + strlen (path) + 1);
sprintf (dll_paths, "%s\\bin;%s", path, gtk_path);
RegSetValueEx (hrootkey, "Path", 0, REG_SZ, dll_paths, len);
+
+ /* Set the same path for runemacs.exe, as the Explorer shell
+ looks this up, so the above does not take effect when
+ emacs.exe is spawned from runemacs.exe. */
+ if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_RUNEMACS_PATH,
+ 0, "", REG_OPTION_NON_VOLATILE,
+ KEY_WRITE, NULL, &runemacs_key, NULL)
+ == ERROR_SUCCESS)
+ {
+ RegSetValueEx (runemacs_key, "Path", 0, REG_SZ,
+ dll_paths, len);
+
+ RegCloseKey (runemacs_key);
+ }
}
}
RegCloseKey (gtk_key);