Win8.1以前,可以利用微软提供的OSVERSIONEX这个结构体直接获取到系统所对应的版本号。

使用方法如下:

BOOL getOSVer()
{OSVERSIONINFOEX osinfor;ZeroMemory(&osinfor, sizeof(OSVERSIONINFOEX));osinfor.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);if (!GetVersionEx((OSVERSIONINFO*)&osinfor)){return FALSE;}TCHAR osVersionBfuff[256] = { 0 };if (osinfor.dwPlatformId == VER_PLATFORM_WIN32_NT){_tprintf(_T("Major ver:%d \r\n"), osinfor.dwMajorVersion);_tprintf(_T("Minor ver:%d \r\n"), osinfor.dwMinorVersion);_tprintf(_T("Build ver:%d \r\n"), osinfor.dwBuildNumber);_tprintf(_T("PlatF ver:%d \r\n"), osinfor.dwPlatformId);_tprintf(_T("CD ver: %s \r\n"), osinfor.szCSDVersion);}return TRUE;
}

然而后来微软废弃了GetversionEx(),提供了另一种更为简便的接口,可以更好的API接口,只需要头文件包含 #include <VersionHelpers.h>
然后可以直接可以通过函数下面的函数来判断当前系统的版本,如下:

 if (IsWindowsXPOrGreater()){_tprintf(_T("OS is XP or greater than XP!\r\n"));}if (IsWindowsVistaOrGreater()){_tprintf(_T("OS is Vista or greater than Vista \r\n"));}if (IsWindows7OrGreater()){_tprintf(_T("OS is win7 or greater than win7\r\n"));}if (IsWindows8OrGreater()){_tprintf(_T("OS is win8 or greater than win8 \r\n"));}

然而该方法不能直接获取到版本号,而且需要VS 要至少Win 8.1 SDK,判断Win10系统的话,至少要包含Win10 SDK。用起来也不怎么方便。

下面介绍两种方法可以直接获取到系统的版本号。

方法一 通过wmi可以直接读取OS 版本。

参考文章利用WMI获取本机基本信息: http://blog.csdn.net/cnuserfdg/article/details/51759694

通过下面的语句可以得到系统版本号。

getDMIInformation(_T("Win32_OperatingSystem"), NULL, NULL, _T("Version"));

Win10机器读取信息实验信息:10.0.10586,即为MajorVer.MinVer.BuildVer

优点:可以直接读取到各个版本号。

缺点:需要实现wmi读取,代码量大

方法二 通过读取核心DLL信息获取版本号

#include <LM.h>#pragma comment(lib,"netapi32.lib")
BOOL getOSVer()
{WKSTA_INFO_100 *wkStaInfor = NULL;NET_API_STATUS netStatus = NetWkstaGetInfo(NULL, 100, (LPBYTE*)&wkStaInfor);if (netStatus == NERR_Success){DWORD dwMajorVer = wkStaInfor->wki100_ver_major;DWORD dwMinVer = wkStaInfor->wki100_ver_minor;DWORD dwVersion = (DWORD)MAKELONG(dwMinVer, dwMajorVer);netStatus = NetApiBufferFree(wkStaInfor);}return TRUE;
}

优点:可以读取到主版本号和副版本号,代码量小

缺点:无法获取build version信息。

上面只是简单的介绍了获取系统版本的方法,Windows版本太多,想获取更为准确的版本信息,请参考MSDN.

判断OS版本的几个方法相关推荐

  1. bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?

    华为在昨天正式发布了鸿蒙OS 2.0版本,相比鸿蒙OS 1.0版本,这次的系统的优势在于支持更多的设备,其中就包括很多消费者期待的智能手机:华为消费者业务CEO余承东表示,鸿蒙OS在明年会全面用在华为 ...

  2. bash 判断 os 版本_专家:鸿蒙OS初登手机令人惊艳,但全面商用至少还要2年

    鸿蒙 OS 迈入成熟,第一部正式搭载的手机是华为 P50? 华为手机销量持续下滑,鸿蒙现在登陆手机是个坏消息吗? 专家:鸿蒙 OS 初登手机令人惊艳,但全面商用至少还要 2 年 即使鸿蒙(Harmon ...

  3. bash 判断 os 版本_Kali Linux 2020.3开始用ZSH取代Bash旅程

    在此版本中,Kali Linux团队引入了以下概述的各种新功能. Kali Linux切换到ZSH作为默认Shell 在此版本中,Kali Linux团队开始了从默认Bash shell切换到ZSH的 ...

  4. PHP判断浏览器内核过低,js判断浏览器版本以及浏览器内核的方法

    本文实例讲述了js判断浏览器版本以及浏览器内核的方法.分享给大家供大家参考.具体实现方法如下: js判断是否移动端及浏览器内核 var browser = { versions: function() ...

  5. 低版本Mac OS安装合适xcode的方法

    "家里蹲大学"的奇观之一就是听主播讲课,而且可以用任意妖娆的姿势. 然而,贫穷还是如影随形,swift开发还得用虚拟机装Mac OS,碰巧已经装了低版本的了,也就懒得再更新了. 苹 ...

  6. Windows API GetVersionEx()判断系统版本详解

    转载自:http://bbs.7boo.com.cn/thread-8093-1-1.html AF注: TCHAR cstCSDVersion[128]; sprintf(cstCSDVersion ...

  7. JS 判断浏览器版本

    JS 判断浏览器版本 1.JS 区分各个浏览器(方法一) var browser={versions:function(){var u = navigator.userAgent, app = nav ...

  8. 怎么判断ios 版本

    前几天工程项目要用到判断ios版本,最后研究了一下,分享一下: -(void)getIOSVersion { // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= ...

  9. php判断版本根据版本调用不同,C#_C#自动判断Excel版本使用不同的连接字符串,用OLEDB通过设置连接字符串可 - phpStudy...

    C#自动判断Excel版本使用不同的连接字符串 用OLEDB通过设置连接字符串可以像读取sqlserver一样将excel中的数据读取出来,但是excel2003和excel2007/2010的连接字 ...

  10. Android之如何判断当前是阿拉伯布局的方法

    1 问题 判断当前是不是阿拉伯布局的方法 2 几种判断方法 @SuppressLint("NewApi")public static boolean isLayoutRtl(Vie ...

最新文章

  1. Java gdal .mif/.mid文件读取
  2. CentOS7.5下yum安装MySQL8图文教程
  3. python的print函数
  4. python获取小时分钟
  5. HTML5-画布(canvas)效果之-渐变色
  6. 不冲突的端口范围_网络中IP地址发生冲突故障怎么办
  7. 《Adobe Photoshop CS6中文版经典教程》—第1课1.4节在Photoshop中还原操作
  8. 【玩转MLS系列】基础教程
  9. Rust 生命周期太难学、最想实现与 C++ 互操作,Rust 2020 调查报告发布!
  10. 英国PHP轴承,php – 纵向宽度将如何影响轴承
  11. one hot encoding
  12. 增长模型—评分卡模型
  13. 厦门大学信息计算机学院,厦门大学信息科学与技术学院计算机科学系导师介绍:刘向荣...
  14. Java List的安全删除
  15. MMO 游戏中使用多核
  16. 全文检索四种技术解决方案
  17. 串口调试助手(CM野人版)4.0有严重Bug,已经跟作者反应,等候更新
  18. 混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
  19. [体渲染]渲染一个球体
  20. Python亲戚计算器

热门文章

  1. python matplotlib 官方配色表
  2. php pandoc,搭建Pandoc+Markdown写作环境
  3. 魔方(14)133魔方、一阶鬼魔魔方、双心魔方
  4. java植物大战僵尸_JAVA课程设计——植物大战僵尸(团队)
  5. matlab教程黄金分割,Matlab程序设计在黄金分割法教学中的应用
  6. SSD-caffe踩keng
  7. 利用wordcloud和jieba制作词云
  8. 关于兔子吃萝卜问题,走一步吃个萝卜。
  9. Visual C#程序设计基础pdf
  10. Suspense组件的使用