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