diff --git a/PC/getpathp.c b/PC/getpathp.c
index 1a50dd9..d73cd73 100644
--- a/PC/getpathp.c
+++ b/PC/getpathp.c
@@ -155,6 +155,9 @@
 }
 
 #ifdef MS_WIN32
+#include "malloc.h" // for alloca - see comments below!
+extern const char *PyWin_DLLVersionString; // a string loaded from the DLL at startup.
+
 
 /* Load a PYTHONPATH value from the registry.
    Load from either HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER.
@@ -172,9 +175,23 @@
 	LONG rc;
 	char *retval = NULL;
 	char *dataBuf;
+	const char keyPrefix[] = "Software\\Python\\PythonCore\\";
+	const char keySuffix[] = "\\PythonPath";
+	int versionLen;
+	char *keyBuf;
+
+	// Tried to use sysget("winver") but here is too early :-(
+	versionLen = strlen(PyWin_DLLVersionString);
+	// alloca == no free required, but memory only local to fn.
+	// also no heap fragmentation!  Am I being silly?
+	keyBuf = alloca(sizeof(keyPrefix)-1 + versionLen + sizeof(keySuffix)); // chars only, plus 1 NULL.
+	// lots of constants here for the compiler to optimize away :-)
+	memcpy(keyBuf, keyPrefix, sizeof(keyPrefix)-1);
+	memcpy(keyBuf+sizeof(keyPrefix)-1, PyWin_DLLVersionString, versionLen);
+	memcpy(keyBuf+sizeof(keyPrefix)-1+versionLen, keySuffix, sizeof(keySuffix)); // NULL comes with this one!
+
 	rc=RegOpenKey(keyBase,
-		      "Software\\Python\\PythonCore\\"
-		      MS_DLL_ID "\\PythonPath", 
+		      keyBuf,
 		      &newKey);
 	if (rc==ERROR_SUCCESS) {
 		RegQueryInfoKey(newKey, NULL, NULL, NULL, NULL, NULL, NULL, 
diff --git a/PC/import_nt.c b/PC/import_nt.c
index 1eef4d2..7530d2e 100644
--- a/PC/import_nt.c
+++ b/PC/import_nt.c
@@ -10,6 +10,9 @@
 #include "osdefs.h"
 #include <windows.h>
 #include "importdl.h"
+#include "malloc.h" // for alloca
+
+extern const char *PyWin_DLLVersionString; // a string loaded from the DLL at startup.
 
 /* Return whether this is Win32s, i.e., Win32 API on Win 3.1(1).
    This function is exported! */
@@ -29,13 +32,32 @@
 
 FILE *PyWin_FindRegisteredModule( const char *moduleName, struct filedescr **ppFileDesc, char *pathBuf, int pathLen)
 {
-	char moduleKey[128];
+	char *moduleKey;
+	char *pos;
+	const char keyPrefix[] = "Software\\Python\\PythonCore\\";
+	const char keySuffix[] = "\\Modules\\";
 	struct filedescr *fdp = NULL;
 	FILE *fp;
 	int modNameSize = pathLen;
+	int versionLen, moduleLen;
 	HKEY keyBase = PyWin_IsWin32s() ? HKEY_CLASSES_ROOT : HKEY_LOCAL_MACHINE;
-	strcpy(moduleKey, "Software\\Python\\PythonCore\\" MS_DLL_ID "\\Modules\\");
-	strcat(moduleKey, moduleName);
+
+	// conceptually, this code is setting up:
+	// sprintf(buf, "Software\\Python\\PythonCore\\%s\\Modules\\%s", PyWin_DLLVersionString, moduleName);
+	// the sprintf would be clearer, but slower and less "length-safe"
+	versionLen = strlen(PyWin_DLLVersionString);
+	moduleLen = strlen(moduleName);
+	// alloca == no free required, but memory only local to fn, also no heap fragmentation!
+	moduleKey = alloca(sizeof(keyPrefix)-1 + versionLen + sizeof(keySuffix) + moduleLen); // chars only, plus 1 NULL.
+	pos = moduleKey;
+	memcpy(pos, keyPrefix, sizeof(keyPrefix)-1);
+	pos += sizeof(keyPrefix)-1;
+	memcpy(pos, PyWin_DLLVersionString, versionLen);
+	pos +=versionLen;
+	memcpy(pos, keySuffix, sizeof(keySuffix));
+	pos += sizeof(keySuffix)-1;
+	memcpy(pos, moduleName, moduleLen+1); // NULL comes with this one!
+
 	if (RegQueryValue(keyBase, moduleKey, pathBuf, &modNameSize)!=ERROR_SUCCESS)
 		return NULL;
 	// use the file extension to locate the type entry.
