vc中獲取windows版本信息,一般是調用GetVersionEx 這個API函數來獲取的,這個API需要OSVERSIONINFOEX 這個結構體作為參數,OSVERSIONINFOEX 的對應的具體的OS版本類型詳細如下:
| Operating system | Version number | dwMajorVersion | dwMinorVersion | Other |
|---|---|---|---|---|
| Windows 8.1 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
| Windows Server 2012 R2 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
| Windows 8 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
| Windows Server 2012 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
| Windows 7 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
| Windows Server 2008 R2 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
| Windows Server 2008 | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
| Windows Vista | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
| Windows Server 2003 R2 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) != 0 |
| Windows Home Server | 5.2 | 5 | 2 | OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER |
| Windows Server 2003 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) == 0 |
| Windows XP Professional x64 Edition | 5.2 | 5 | 2 | (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) |
| Windows XP | 5.1 | 5 | 1 | Not applicable |
| Windows 2000 | 5.0 | 5 | 0 | Not applicable |
| * For applications that have been manifested for Windows 8.1. Applications not manifested for 8.1 will return the Windows 8 OS version value (6.2). To |
||||
本人就獲取 windows xp,vista,win8 ,win8.1 等系統版本信息 寫了個函數,實現如下:
VOID GetOSVersion(CString& strOSVersion)
{
OSVERSIONINFOEX osver = {0};
osver.dwOSVersionInfoSize = sizeof(osver);
::GetVersionEx((OSVERSIONINFO*)&osver);
if( osver.dwMajorVersion == 5
&& (osver.dwMinorVersion == 1 || osver.dwMinorVersion == 2)
)
{
strOSVersion = L"OS:Windows XP";
}
else if(osver.dwMajorVersion == 6 && osver.dwMinorVersion == 0)
{
strOSVersion = L"OS:Windows Vista";
}
else if(osver.dwMajorVersion == 6 && osver.dwMinorVersion == 1)
{
strOSVersion = L"OS:Windows 7";
}
else if(osver.dwMajorVersion == 6 && osver.dwMinorVersion == 2)
{
strOSVersion = L"OS:Windows 8";
}
else if(osver.dwMajorVersion == 6 && osver.dwMinorVersion == 3)
{
strOSVersion = L"OS:Windows 8.1";
}
}
