diff -Naur Python-2.7.9-orig/configure.ac Python-2.7.9/configure.ac --- Python-2.7.9-orig/configure.ac 2014-12-11 13:49:44.961800000 +0300 +++ Python-2.7.9/configure.ac 2014-12-11 13:49:45.086600000 +0300 @@ -2451,6 +2451,14 @@ fi]) AC_MSG_RESULT($with_dbmliborder) + +# Determine if windows modules should be used. +AC_SUBST(USE_WIN32_MODULE) +USE_WIN32_MODULE='#' +case $host in + *-*-mingw*) USE_WIN32_MODULE=;; +esac + # Determine if signalmodule should be used. AC_SUBST(USE_SIGNAL_MODULE) AC_SUBST(SIGNAL_OBJS) diff -Naur Python-2.7.9-orig/Modules/Setup.config.in Python-2.7.9/Modules/Setup.config.in --- Python-2.7.9-orig/Modules/Setup.config.in 2014-12-11 13:49:43.323800000 +0300 +++ Python-2.7.9/Modules/Setup.config.in 2014-12-11 13:49:45.086600000 +0300 @@ -12,5 +12,8 @@ # The signal module @USE_SIGNAL_MODULE@signal signalmodule.c +# build-in modules for windows platform: +@USE_WIN32_MODULE@_winreg ../PC/_winreg.c + # The rest of the modules previously listed in this file are built # by the setup.py script in Python 2.1 and later. diff -Naur Python-2.7.9-orig/PC/_winreg.c Python-2.7.9/PC/_winreg.c --- Python-2.7.9-orig/PC/_winreg.c 2014-12-10 18:59:57.000000000 +0300 +++ Python-2.7.9/PC/_winreg.c 2014-12-11 13:49:45.086600000 +0300 @@ -17,6 +17,25 @@ #include "malloc.h" /* for alloca */ #include "windows.h" +#ifndef SIZEOF_HKEY +/* used only here */ +#if defined(MS_WIN64) +# define SIZEOF_HKEY 8 +#elif defined(MS_WIN32) +# define SIZEOF_HKEY 4 +#else +# error "SIZEOF_HKEY is not defined" +#endif +#endif + +#ifndef REG_LEGAL_CHANGE_FILTER +#define REG_LEGAL_CHANGE_FILTER (\ + REG_NOTIFY_CHANGE_NAME |\ + REG_NOTIFY_CHANGE_ATTRIBUTES |\ + REG_NOTIFY_CHANGE_LAST_SET |\ + REG_NOTIFY_CHANGE_SECURITY ) +#endif + static BOOL PyHKEY_AsHKEY(PyObject *ob, HKEY *pRes, BOOL bNoneOK); static PyObject *PyHKEY_FromHKEY(HKEY h); static BOOL PyHKEY_Close(PyObject *obHandle); @@ -1095,6 +1114,10 @@ static PyObject * PyDeleteKeyEx(PyObject *self, PyObject *args) { +#ifdef KEY_WOW64_64KEY +/* KEY_WOW64_64KEY is defined for _WIN32_WINNT >= 0x0502, + * i.e. Windows Server 2003 with SP1, Windows XP with SP2 + * and not supported on w2k. */ HKEY hKey; PyObject *obKey; HMODULE hMod; @@ -1130,6 +1153,11 @@ return PyErr_SetFromWindowsErrWithFunction(rc, "RegDeleteKeyEx"); Py_INCREF(Py_None); return Py_None; +#else /*def KEY_WOW64_64KEY*/ + PyErr_SetString(PyExc_NotImplementedError, + "not implemented on this platform"); + return NULL; +#endif } static PyObject *