diff options
Diffstat (limited to 'PC/import_nt.c')
-rw-r--r-- | PC/import_nt.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/PC/import_nt.c b/PC/import_nt.c index f0a27350b0..573106fd3f 100644 --- a/PC/import_nt.c +++ b/PC/import_nt.c @@ -34,7 +34,7 @@ FILE *PyWin_FindRegisteredModule(const char *moduleName, #endif struct filedescr *fdp = NULL; FILE *fp; - HKEY keyBase = HKEY_LOCAL_MACHINE; + HKEY keyBase = HKEY_CURRENT_USER; int modNameSize; long regStat; @@ -56,8 +56,17 @@ FILE *PyWin_FindRegisteredModule(const char *moduleName, modNameSize = pathLen; regStat = RegQueryValue(keyBase, moduleKey, pathBuf, &modNameSize); - if (regStat != ERROR_SUCCESS) - return NULL; + if (regStat != ERROR_SUCCESS) { + /* No user setting - lookup in machine settings */ + keyBase = HKEY_LOCAL_MACHINE; + /* be anal - failure may have reset size param */ + modNameSize = pathLen; + regStat = RegQueryValue(keyBase, moduleKey, + pathBuf, &modNameSize); + + if (regStat != ERROR_SUCCESS) + return NULL; + } /* use the file extension to locate the type entry. */ for (fdp = _PyImport_Filetab; fdp->suffix != NULL; fdp++) { size_t extLen = strlen(fdp->suffix); |