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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值