API得到Windows版本
2016-12-06 00:11
260 查看
API得到Windows版本
/** * Windows Version * https://msdn.microsoft.com/en-us/library/windows/desktop/dn481241(v=vs.85).aspx * In Windows 8.1 and Windows 10, the GetVersion and GetVersionEx functions have been deprecated. * In Windows 10, the VerifyVersionInfo function has also been deprecated. * Operating system Version number (Major.Minor) * * Windows 10 6.4, 7.x, 10.0 * Windows 8.1 6.3 * Windows 8 6.2 * Windows 7 6.1 * Windows Server 2008 R2 6.1 * Windows Server 2008 6.0 * Windows Vista 6.0 * Windows Server 2003 R2 5.2 * Windows Server 2003 5.2 * Windows XP 5.1 * Windows 2000 5.0 * Windows NT40 4.0 * Windows NT35 3.0 */ typedef enum OSWindowsVersion { OS_UNKNOWN = 0, OS_WINNT35 = 35, OS_WINNT40 = 40, OS_WIN2000 = 50, OS_WINXP = 51, OS_WIN2003 = 52, OS_WINXP64 = 52, OS_Vista = 60, OS_WIN7 = 61, OS_WIN8 = 62, OS_WIN2012 = 62, OS_WIN8_1 = 63, OS_WIN10 = 100 } OSWindowsVersion; OSWindowsVersion GetWindowsVersion(); // Author: cheungmine // 20161205
BOOL GetNtdllVersion(DWORD *dwMajorVer, DWORD *dwMinorVer, DWORD *dwBuildNum) { typedef void (WINAPI *PFN_RTLGETNTVERSIONNUMBERS)(DWORD*, DWORD*, DWORD*); HMODULE hNtdll = LoadLibrary("ntdll.dll"); if (hNtdll) { PFN_RTLGETNTVERSIONNUMBERS pfnGetWinVer = (PFN_RTLGETNTVERSIONNUMBERS) GetProcAddress(hNtdll, "RtlGetNtVersionNumbers"); if (pfnGetWinVer) { pfnGetWinVer(dwMajorVer, dwMinorVer, dwBuildNum); FreeLibrary(hNtdll); return TRUE; } FreeLibrary(hNtdll); } return FALSE; } OSWindowsVersion GetWindowsVersion() { DWORD majorVer = 0; DWORD minorVer = 0; DWORD buildNum = 0; BOOL isNtVer = 0; OSVERSIONINFO info; OSWindowsVersion osVer = OS_UNKNOWN; SeZero(&info, sizeof(info)); info.dwOSVersionInfoSize = sizeof(info); if (GetVersionEx(&info) && info.dwPlatformId == VER_PLATFORM_WIN32_NT) { switch (info.dwMajorVersion) { case 3: osVer = OS_WINNT35; break; case 4: osVer = OS_WINNT40; break; case 5: if (info.dwMinorVersion == 0) { osVer = OS_WIN2000; } else if (info.dwMinorVersion == 1) { osVer = OS_WINXP; } else if (info.dwMinorVersion >= 2) { osVer = OS_WIN2003; } break; case 6: if (info.dwMinorVersion == 0) { osVer = OS_Vista; } else if (info.dwMinorVersion == 1) { osVer = OS_WIN7; } else if (info.dwMinorVersion == 2) { // 8 or 8.1 or 10 osVer = OS_WIN8; if (GetNtdllVersion(&majorVer, &minorVer, &buildNum)) { if (majorVer == 6) { if (minorVer == 3) { osVer = OS_WIN8_1; } else if (minorVer >= 4) { osVer = OS_WIN10; } } else if (majorVer >= 7) { osVer = OS_WIN10; } } } else if (info.dwMinorVersion == 3) { osVer = OS_WIN8_1; } else if (info.dwMinorVersion >= 4) { osVer = OS_WIN10; } break; default: if (info.dwMajorVersion >= 7) { osVer = OS_WIN10; } break; } } else if (GetNtdllVersion(&majorVer, &minorVer, &buildNum)) { // should not run to this!! switch (majorVer) { case 3: osVer = OS_WINNT35; break; case 4: osVer = OS_WINNT40; break; case 5: if (minorVer == 0) { osVer = OS_WIN2000; } else if (minorVer == 1) { osVer = OS_WINXP; } else if (minorVer >= 2) { osVer = OS_WIN2003; } break; case 6: if (minorVer == 0) { osVer = OS_Vista; } else if (minorVer == 1) { osVer = OS_WIN7; } else if (minorVer == 2) { osVer = OS_WIN8; } else if (minorVer == 3) { osVer = OS_WIN8_1; } else if (minorVer >= 4) { osVer = OS_WIN10; } break; default: if (majorVer >= 7) { osVer = OS_WIN10; } break; } } return osVer; }
相关文章推荐
- API得到Windows版本
- 重学Windows(二):得到Windows的版本及平台:Win32(x86), Win64 (x64)还是Win64(IA64)
- GetWindowsName如何得到当前操作系统的名字及版本
- 如何得到Windows操作系统版本信息(包括2003 R2、Vista和Windows 2008 Server)
- Windows下的Android SDK下载,2.2之前各个版本及Google API,文档说明等
- QTCreator中字符编码问题以及WINDOWS API A/W两种版本的说明
- GetWindowsName如何得到当前操作系统的名字及版本
- fastdfs python版本API不兼容windows解决
- 因在Windows 8.1中微软没有对版本API进行更新 导致桌面软件识别版本号为6.2.9200
- 【转】如何得到Windows操作系统版本信息(包括2003 R2、Vista和Windows 2008 Server)
- Windows下的Android SDK下载,2.2之前各个版本及Google API,文档说明等
- 一个得到浏览器(IE)版本的函数
- 得到当前操作系统的版本的
- Windows的版本定义
- API Spying Techniques for Windows 9x, NT and 2000
- ##Windows XP SP2 build 2177组件的版本信息
- 打开*.HLP时,系统提示"*.hlp是为此Windows版本不支持的语言创建的"的解决方法!
- 利用Ip Helper Api 来得到局域网中计算机MAC 地址的一个程序
- Apache 2 + PHP Windows安装指南(官方版本)
- Windows和Linux得到本机IP地址的通用函数