VC/MFC程序中获取当前Windows操作系统版本名称(2016-04-25修改)

CString getOSName()
{
	CString osName = _T("");
	int a=0,b=0,i=0,j=0;  
	_asm  
	{  
		pushad  
			mov ebx,fs:[0x18] ; get self pointer from TEB  
			mov eax,fs:[0x30] ; get pointer to PEB / database  
			mov ebx,[eax+0A8h] ; get OSMinorVersion  
			mov eax,[eax+0A4h] ; get OSMajorVersion  
			mov j,ebx  
			mov i,eax  
			popad  
	}  

	if((i==5)&&(j==0))  
	{  
		osName = _T("当前系统版本为:Windows 2000");  
	}  
	else if((i==5)&&(j==1))  
	{   
		osName = _T("当前系统版本为:Windows XP");  
	}  
	else if((i==5)&&(j==2))  
	{  
		osName = _T("当前系统版本为:Windows 2003");  
	}  
	else if((i==6)&&(j==0))  
	{  
		osName = _T("当前系统版本为:Windows Vista");  
	}  
	else if((i==6)&&(j==1))  
	{  
		osName = _T("当前系统版本为:Windows 7");  
	}
	else if((i==6)&&(j==2))  
	{  
		osName = _T("当前系统版本为:Windows 8");  
	}
	else if((i==6)&&(j==3))  
	{  
		osName = _T("当前系统版本为:Windows 8.1");  
	}
	else if((i==10)&&(j==0))  
	{  
		osName = _T("当前系统版本为:Windows 10");  
	}
	else
	{
		osName = _T("当前系统低于Windows 2000,或者高于Windows 10,或者未知系统版本");
	}
	return osName;
}


CString Util::getOsVersion()
{
	CString osVersion = _T("");
	OSVERSIONINFO osvi;					//定义OSVERSIONINFO数据结构对象
	memset(&osvi, 0, sizeof(OSVERSIONINFO));		//开空间 
	osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);	//定义大小 
	GetVersionEx (&osvi);					//获得版本信息

	DWORD dwMajorVersion = osvi.dwMajorVersion;			//主版本号
	DWORD dwMinorVersion = osvi.dwMinorVersion;			//副版本
	char swVersion[10]={0};    
	sprintf(swVersion,"%d.%d",dwMajorVersion,dwMinorVersion); 
 
	if (!strcmp(swVersion,"5.0"))
	{
		osVersion =  _T("Windows 2000");     
	}	 
	else if (!strcmp(swVersion,"5.1"))
	{
		osVersion = _T("Windows XP");    
	}	
	else if (!strcmp(swVersion,"5.2"))
	{
		osVersion = _T("Windows XP Professional x64");    
	}	
	else if (!strcmp(swVersion,"6.0"))
	{
		osVersion = _T("Windows Vista");    
	}	
	else if (!strcmp(swVersion,"6.1"))
	{
		osVersion = _T("Windows 7");    
	}	
	else if (!strcmp(swVersion,"6.2"))
	{
		osVersion = _T("Windows 8");      
	}
	else if (!strcmp(swVersion,"6.3"))
	{
		osVersion = _T("Windows 8.1");     
	}
	else if (!strcmp(swVersion,"10.0"))
	{
		osVersion = _T("Windows 10");      
	}
	else
	{
		osVersion = _T("");
	}
	return osVersion;
}


Windows操作系统版本列表:http://blog.csdn.net/msdnchina/article/details/49910517

Windows操作系统版本列表:https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions#cite_note-1


注意:

    第二个方法在Windows 8之后失效,Windows 8.1和Windows 10获取到的还是Windows8版本号。


你可能感兴趣的:(mfc)