CString getSystemName()
{
SYSTEM_INFO info; //用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info);//调用GetSystemInfo函数填充结构
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
if(GetVersionEx((OSVERSIONINFO *)&os))
{
CString vname;
//下面根据版本信息判断操作系统名称
switch(os.dwMajorVersion)
{ //判断主版本号
case 4:
switch(os.dwMinorVersion)
{ //判断次版本号
case 0:
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT)
vname=_T("Microsoft Windows NT 4.0"); //1996年7月发布
else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
vname=_T("Microsoft Windows 95");
break;
case 10:
vname=_T("Microsoft Windows 98");
break;
case 90:
vname=_T("Microsoft Windows Me");
break;
}
break;
case 5:
switch(os.dwMinorVersion)
{ //再比较dwMinorVersion的值
case 0:
vname=_T("Microsoft Windows 2000"); //1999年12月发布
break;
case 1:
vname=_T("Microsoft Windows XP"); //2001年8月发布
break;
case 2:
if(os.wProductType==VER_NT_WORKSTATION &&
info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
vname=_T("Microsoft Windows XP Professional x64 Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0)
vname=_T("Microsoft Windows Server 2003"); //2003年3月发布
else if(GetSystemMetrics(SM_SERVERR2)!=0)
vname=_T("Microsoft Windows Server 2003 R2");
break;
}
break;
case 6:
switch(os.dwMinorVersion)
{
case 0:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows Vista");
else
vname=_T("Microsoft Windows Server 2008"); //服务器版本
break;
case 1:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows 7");
else
vname=_T("Microsoft Windows Server 2008 R2");
break;
}
break;
default:
vname=_T("未知操作系统");
}
return vname;
}
else
return _T("");
}
网上找了一个,却发现没有Windows 8的判断,不知哪位大侠知道?
打开路径HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows NT\\CurrentVersion"
读"ProductName"就可以了
switch(os.dwMinorVersion)
{
case 0:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows Vista");
else
vname=_T("Microsoft Windows Server 2008"); //服务器版本
break;
case 1:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows 7");
else
vname=_T("Microsoft Windows Server 2008 R2");
break;
case 2:
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows 8");
else
break;
}