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的判断,不知哪位大侠知道?

解决方案 »

  1.   

    要利用好MSDN的官方文档资源,一切都会有说明的。http://msdn.microsoft.com/en-us/library/windows/desktop/ms724833%28v=vs.85%29.aspx
      

  2.   

    如果读注册表其实是很简单的
    打开路径HKEY_LOCAL_MACHINE "Software\\Microsoft\\Windows NT\\CurrentVersion"
    读"ProductName"就可以了
      

  3.   

    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;
     
                    }