From 856a6b7709a7257722a4e5b14859ca6a422dad52 Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Thu, 12 Aug 2010 22:28:43 +0800 Subject: [PATCH] (add_registry): Set path for runemacs.exe to use. --- nt/ChangeLog | 4 ++++ nt/addpm.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/nt/ChangeLog b/nt/ChangeLog index 72920c2b58f..07550e1b2d2 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,7 @@ +2010-08-12 Jason Rumney + + * addpm.c (add_registry): Set path for runemacs.exe to use. + 2010-08-08 Óscar Fuentes * cmdproxy.c (main): Use _snprintf instead of wsprintf, 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); -- 2.11.4.GIT