http://www.oschina.net/code/snippet_54100_5403
#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <wchar.h>
#include <Windows.h>
using namespace std;
string getSystemName()
{
SYSTEM_INFO info; //用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info); //调用GetSystemInfo函数填充结构
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX); /*在调用函数前必须用sizeof(OSVERSIONINFOEXA)填充dwOSVersionInfoSize结构成员*/
string vname("");
if(GetVersionEx((OSVERSIONINFO *)&os)) /*调用GetVersionEx函数OSVERSIONINFOEX结构必须将指针类型强制转换*/
{
//下面根据版本信息判断操作系统名称
switch(os.dwMajorVersion)
{ //判断主版本号
case 4:
switch(os.dwMinorVersion)
{ //判断次版本号
case 0:
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT)
vname="Microsoft Windows NT 4.0"; //1996年7月发布
else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
vname="Microsoft Windows 95";
break;
case 10:
vname="Microsoft Windows 98";
break;
case 90:
vname="Microsoft Windows Me";
break;
}
break;
case 5:
switch(os.dwMinorVersion)
{ //再比较dwMinorVersion的值
case 0:
vname="Microsoft Windows 2000"; //1999年12月发布
break;
case 1:
vname="Microsoft Windows XP"; //2001年8月发布
break;
case 2:
if(os.wProductType==VER_NT_WORKSTATION &&
info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
vname="Microsoft Windows XP Professional x64 Edition";
break;
}
break;
case 6:
switch(os.dwMinorVersion){
case 0:
if(os.wProductType==VER_NT_WORKSTATION)/*
VER_NT_WORKSTATION是桌面系统 */
vname="Microsoft Windows Vista";
else
vname="Microsoft Windows Server 2008"; //服务器版本
break;
case 1:
if(os.wProductType==VER_NT_WORKSTATION)
vname="Microsoft Windows 7";
else
vname="Microsoft Windows Server 2008 R2";
break;
}
break;
default:
vname="未知操作系统";
}
}
return vname;
}