您的位置:首页 > 其它

获得Windows版本及SP信息

2010-12-16 14:55 344 查看
Operating systemVersion numberdwMajorVersiondwMinorVersionOther
Windows 76.161OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION

Windows Server 2008 R2

6.161OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008

6.060OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista

6.060OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2

5.252GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server

5.252OSVERSIONINFOEX.wSuiteMask == VER_SUITE_WH_SERVER
Windows Server 2003

5.252GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition

5.252(OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP

5.151Not applicable
Windows 2000

5.050Not applicable
enum E_WinVersion
{
WINUNKNOWN = 0,
WIN32S,
WIN95,
WIN98,
WINME,
WINNT,
WIN2K,
WINXP,
WIN2003,
WINVISTA,
WIN7,
WIN2005,
WIN2008,
WIN2008R2,
};


BOOL GetWinVerSpInfo(int &nWindowsVersion, int &nSP)
{
OSVERSIONINFOEX osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));

osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !( GetVersionEx ((OSVERSIONINFO *) &osvi)) )
return FALSE;

int wVersion = WINUNKNOWN;
switch (osvi.dwPlatformId)
{
case VER_PLATFORM_WIN32s:
wVersion = WIN32S;
break;

case VER_PLATFORM_WIN32_WINDOWS:
if ( osvi.dwMinorVersion == 0 )
wVersion = WIN95;
else if ( osvi.dwMinorVersion == 10)
wVersion = WIN98;
else if ( osvi.dwMinorVersion == 90)
wVersion = WINME;
break;

case VER_PLATFORM_WIN32_NT:
if ( osvi.dwMajorVersion <= 4 )
wVersion = WINNT;
else if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
wVersion = WIN2K;
else if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
wVersion = WINXP;
else if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )
wVersion = WIN2003;
else if ( osvi.dwMajorVersion == 6 )
{
if(osvi.dwMinorVersion==0)
{
wVersion = osvi.wProductType == VER_NT_WORKSTATION ? WINVISTA : WIN2008;
}
else if(osvi.dwMinorVersion==1)
{
wVersion = osvi.wProductType == VER_NT_WORKSTATION ? WIN7 : WIN2008R2;
}
}
break;

default:
break;
}

nWindowsVersion = wVersion;
nSP = osvi.wServicePackMajor;

return TRUE;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: