import ctypes


class OSVERSIONINFOEXW(ctypes.Structure):
    _fields_ = [('dwOSVersionInfoSize', ctypes.c_ulong), ('dwMajorVersion',
        ctypes.c_ulong), ('dwMinorVersion', ctypes.c_ulong), (
        'dwBuildNumber', ctypes.c_ulong), ('dwPlatformId', ctypes.c_ulong),
        ('szCSDVersion', ctypes.c_wchar * 128), ('wServicePackMajor',
        ctypes.c_ushort), ('wServicePackMinor', ctypes.c_ushort), (
        'wSuiteMask', ctypes.c_ushort), ('wProductType', ctypes.c_byte), (
        'wReserved', ctypes.c_byte)]

def get_os_version():
    """
    Get's the OS major and minor versions.  Returns a tuple of
    (OS_MAJOR, OS_MINOR).
    """
os_version = OSVERSIONINFOEXW()
os_version.dwOSVersionInfoSize = ctypes.sizeof(os_version)
retcode = ctypes.windll.Ntdll.RtlGetVersion(ctypes.byref(os_version))
if retcode != 0:
    raise Exception('Failed to get OS version')
return os_version.dwMajorVersion, os_version.dwMinorVersion
Detect Windows 8.1 in Python?