VC获取操作系统相关信息

1、获取系统版本

 

	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))
	{
		AfxMessageBox(_T("系统版本为 Windows 2000"),MB_OK);
	}
	else if((i==5)&&(j==1))
	{ 
		AfxMessageBox(_T("系统版本为 Windows XP"),MB_OK);
	}
	else if((i==5)&&(j==2))

	{
		AfxMessageBox(_T("系统版本为 Windows 2003"),MB_OK);
	}
	else if((i==6)&&(j==0))
	{
		AfxMessageBox(_T("系统版本为 Windows Vista"),MB_OK);
	}
	else if((i==6)&&(j==1))
	{
		AfxMessageBox(_T("系统版本为 Win7"),MB_OK);
	}

2、获取操作系统位数

 

	SYSTEM_INFO lpsysinfo;	
	typedef VOID(WINAPI *LPFN_GetNativeSysteminfo)(LPSYSTEM_INFO lpsysteminfo);	
	LPFN_GetNativeSysteminfo fGetinfo = (LPFN_GetNativeSysteminfo)GetProcAddress(GetModuleHandle("Kernel32.dll"),"GetNativeSystemInfo");
	fGetinfo(&lpsysinfo);	
	if(lpsysinfo.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 || lpsysinfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
	{		
		AfxMessageBox("64位环境");		
	}	
	else		
	{		
		AfxMessageBox("32位环境");		
	}

3、获取系统语言

 

	LCID language;
	language=GetSystemDefaultLCID();
	CString sysLan;
	switch(language)
	{
	case 2052:
		sysLan = "中文(中国) ";
		break;
	case 3076:
		sysLan = "中文(香港) ";
		break;
	case 1028:
		sysLan = "中文(台湾) ";
		break;
	case 1033:
		sysLan = "英语(英国) ";
	case 1041:
		sysLan = "操他妈的小日本 ";
		//若干format操作.....
		break;
	default:
		sysLan = "其他 ";
		break;
	}
	AfxMessageBox(sysLan);

 

 

其他

更详细的信息可参考msdn:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx

你可能感兴趣的:(VC获取操作系统相关信息)