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版本号。