现在的位置: 首页 > 综合 > 正文

获取windows系统的版本名称

2018年04月15日 ⁄ 综合 ⁄ 共 1785字 ⁄ 字号 评论关闭
windows系统的版本信息从OSVERSIONINFO 结构体获取,该结构体的详细定义如下:</span>

<pre name="code" class="cpp">typedef struct _OSVERSIONINFOA {
    DWORD dwOSVersionInfoSize;
    DWORD dwMajorVersion;//主版本号
    DWORD dwMinorVersion;//次版本号
    DWORD dwBuildNumber;
    DWORD dwPlatformId;
    CHAR   szCSDVersion[ 128 ];     // Maintenance string for PSS usage
} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;



void GetSystemName(std::string &strOsName)
{
	SYSTEM_INFO info;        
	GetSystemInfo(&info);    
	OSVERSIONINFOEX os; 
	os.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);   
	strOsName = _T("unknown OperatingSystem.");
	if(GetVersionEx((OSVERSIONINFO *)&os))
	{ 

		switch(os.dwMajorVersion) 
		{
		case 4:
			switch(os.dwMinorVersion) 
			{ 
			case 0:
				if(os.dwPlatformId == VER_PLATFORM_WIN32_NT)
					strOsName =_T("Windows NT 4.0");  
				else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
					strOsName =_T("Windows 95");
				break;
			case 10:
				strOsName =_T("Windows 98");
				break;
			case 90:
				strOsName =_T("Windows Me");
				break;
			}
			break;

		case 5:
			switch(os.dwMinorVersion) 
			{ 
			case 0:
				strOsName =_T("Windows 2000"); 
				break;

			case 1:
				strOsName =_T("Windows XP"); 
				break;

			case 2:
				if(os.wProductType==VER_NT_WORKSTATION 
					&& info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
				{
					strOsName =_T("Windows XP Professional x64 Edition");
				}
				else if(GetSystemMetrics(SM_SERVERR2)==0)
					strOsName =_T("Windows Server 2003"); 
				else if(GetSystemMetrics(SM_SERVERR2)!=0)
					strOsName =_T("Windows Server 2003 R2");
				break;
			}
			break;

		case 6:
			switch(os.dwMinorVersion)
			{
			case 0:
				if(os.wProductType == VER_NT_WORKSTATION)
					strOsName =_T("Windows Vista");
				else
					strOsName =_T("Windows Server 2008"); 
				break;
			case 1:
				if(os.wProductType == VER_NT_WORKSTATION)
					strOsName =_T("Windows 7");	
				else
					strOsName =_T("Windows Server 2008 R2");
				break;
			case 2:
				if(os.wProductType == VER_NT_WORKSTATION)
					strOsName =_T("Windows 8");	
				else
					strOsName =_T("Windows Server 2012");
				break;
			case 3:
				if(os.wProductType == VER_NT_WORKSTATION)
					strOsName =_T("Windows 8.1");	
				else
					strOsName =_T("Windows Server 2012 R2");
				break;
			}
			break;
		}
	} 

} 

抱歉!评论已关闭.