summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2019-10-03 15:31:21 (GMT)
committerGitHub <noreply@github.com>2019-10-03 15:31:21 (GMT)
commit353fb1ecbfd58752dabae115c4964095e1e35e5f (patch)
tree727229cbf8102514ac48fef8ebec49db1a0e8717 /PC
parenta0e3d27e4e3cb5b67e325df080fb18b70c2910cf (diff)
downloadcpython-353fb1ecbfd58752dabae115c4964095e1e35e5f.zip
cpython-353fb1ecbfd58752dabae115c4964095e1e35e5f.tar.gz
cpython-353fb1ecbfd58752dabae115c4964095e1e35e5f.tar.bz2
bpo-38359: Ensures pyw.exe launcher reads correct registry key (GH-16561)
Diffstat (limited to 'PC')
-rw-r--r--PC/launcher.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/PC/launcher.c b/PC/launcher.c
index a260860..2749a4e 100644
--- a/PC/launcher.c
+++ b/PC/launcher.c
@@ -141,6 +141,8 @@ static wchar_t * get_env(wchar_t * key)
}
#if defined(_DEBUG)
+/* Do not define EXECUTABLEPATH_VALUE in debug builds as it'll
+ never point to the debug build. */
#if defined(_WINDOWS)
#define PYTHON_EXECUTABLE L"pythonw_d.exe"
@@ -154,10 +156,12 @@ static wchar_t * get_env(wchar_t * key)
#if defined(_WINDOWS)
#define PYTHON_EXECUTABLE L"pythonw.exe"
+#define EXECUTABLEPATH_VALUE L"WindowedExecutablePath"
#else
#define PYTHON_EXECUTABLE L"python.exe"
+#define EXECUTABLEPATH_VALUE L"ExecutablePath"
#endif
#endif
@@ -297,8 +301,12 @@ _locate_pythons_for_key(HKEY root, LPCWSTR subkey, REGSAM flags, int bits,
}
data_size = sizeof(ip->executable) - 1;
append_name = FALSE;
- status = RegQueryValueExW(ip_key, L"ExecutablePath", NULL, &type,
+#ifdef EXECUTABLEPATH_VALUE
+ status = RegQueryValueExW(ip_key, EXECUTABLEPATH_VALUE, NULL, &type,
(LPBYTE)ip->executable, &data_size);
+#else
+ status = ERROR_FILE_NOT_FOUND; /* actual error doesn't matter */
+#endif
if (status != ERROR_SUCCESS || type != REG_SZ || !data_size) {
append_name = TRUE;
data_size = sizeof(ip->executable) - 1;