如何判断当前操作系统是Windows 8?

liuli7786 2013-02-27 02:58:39

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的判断,不知哪位大侠知道?
...全文
324 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2013-02-27
  • 打赏
  • 举报
回复
6.2是Windows8 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; case 2: if(os.wProductType==VER_NT_WORKSTATION) vname=_T("Microsoft Windows 8"); else break; }
littao 2013-02-27
  • 打赏
  • 举报
回复
如果读注册表其实是很简单的 打开路径HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows NT\\CurrentVersion" 读"ProductName"就可以了
ArcRain 2013-02-27
  • 打赏
  • 举报
回复
要利用好MSDN的官方文档资源,一切都会有说明的。http://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧