曾经在代码中推断用户的Windows操作系统版本号都是通过GetVersion或GetVersionEx获取版本号号,然后比較。

今天偶然发如今新的Visual Studio提供了新的函数来推断系统版本号,比直接调用API要方便得多。



为了使用新的函数。须要使用SDK 8.1。我用的VS2013。已经自带了。

#include "stdafx.h"
#include <iostream>
#include <windows.h> // VersionHelpers.h 依赖于 windows.h
#include <VersionHelpers.h> // Windows SDK 8.1 才有喔 using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
// 是否大于等于 XP
if (IsWindowsXPOrGreater())
cout << ">= XP" << endl;
else
cout << " < XP" << endl; // 是否大于等于 XP SP1
if (IsWindowsXPSP1OrGreater())
cout << ">= XP SP1" << endl;
else
cout << " < XP SP1" << endl; // 是否大于等于 XP SP2
if (IsWindowsXPSP2OrGreater())
cout << ">= XP SP2" << endl;
else
cout << " < XP SP2" << endl; // 是否大于等于 XP SP3
if (IsWindowsXPSP3OrGreater())
cout << ">= XP SP3" << endl;
else
cout << " < XP SP3" << endl; // 是否大于等于 Vista
if (IsWindowsVistaOrGreater())
cout << ">= Vista" << endl;
else
cout << " < Vista" << endl; // 是否大于等于 Vista SP1
if (IsWindowsVistaSP1OrGreater())
cout << ">= Vista SP1" << endl;
else
cout << " < Vista SP1" << endl; // 是否大于等于 Vista SP2
if (IsWindowsVistaSP1OrGreater())
cout << ">= Vista SP2" << endl;
else
cout << " < Vista SP2" << endl; // 是否大于等于 Win8
if (IsWindows8OrGreater())
cout << ">= Win8" << endl;
else
cout << " < Win8" << endl; // 是否大于等于 Win8.1
if (IsWindows8Point1OrGreater())
cout << ">= Win8.1" << endl;
else
cout << " < Win8.1" << endl; // 是否为server版
if (IsWindowsServer())
cout << "server版" << endl;
else
cout << "非server版" << endl; // 以上的函数都是通过IsWindowsVersionOrGreater实现的
// Windows 2000的版本为5.0,所以我们也能够直接通过版本推断
if (IsWindowsVersionOrGreater(5, 0, 0))
cout << ">= Win 2000" << endl;
else
cout << " < Win 2000" << endl; system("pause");
return 0;
}

Win7 x64 旗舰版执行效果:

另外。假设将平台工具集选择为支持XP的话。就不能用上面的函数了,会提示找不到VersionHelper.h头文件。

推断Windows版本号新方法的更多相关文章

  1. svn下copy项目后定位到新资源库,产生不同版本号的方法

    转载于http://blog.csdn.net/u012990533/article/details/44776465 最近这两天,公司要做国际化的开发,本打算要用struts2内置的i18n拦截器做 ...

  2. Atitit.jquery 版本号新特性attilax总结

    Atitit.jquery 版本号新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升.尤其是在ie7下: ...

  3. Windows 10新功能

    Windows 10 中面向开发人员的新增功能 Windows 10 及新增的开发人员工具将提供新通用 Windows 平台支持的工具.功能和体验.在 Windows 10 上安装完工具和 SDK后, ...

  4. 超具体Windows版本号编译执行React Native官方实例UIExplorer项目(多图慎入)

    ),React Native技术交流4群(458982758).请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客右側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  5. Windows 10 新特性 -- Bing Maps 3D地图开发入门(一)

    本文主要内容是讲述如何创建基于 Windows Universal App 的Windows 10 3D地图应用,涉及的Windows 10新特性包括 Bing Maps 控件.Compiled da ...

  6. 将dll文件注入到其他进程中的一种新方法

    http://www.45it.com/windowszh/201212/33946.htm http://www.hx95.cn/Article/OS/201212/65095.html 我们知道将 ...

  7. windows关闭端口方法

    windows关闭端口方法 在介绍各种端口的作用前,这里先介绍一下在Windows中如何关闭/打开端口,因为默认的情况下,有很多不安全的或没有什么用的端口是开启的,比如Telnet服务的23端口.FT ...

  8. 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法

    若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...

  9. 【Android】一种提高Android应用进程存活率新方法

    [Android]一种提高Android应用进程存活率新方法 SkySeraph Jun. 19st 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph ...

随机推荐

  1. hdu-4466-Triangle 数学题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4466 题目意思: 一根长为N的木棒,长度分成若干个三角形,使得任意两个三角形都相似.对应顺序三角形全 ...

  2. 卡卡游戏引擎之MVC模式下的事件处理

    前言 在前一篇文章 卡卡游戏引擎快速入门中提到了卡卡游戏引擎采用mvc的开发模式,这里相信介绍一下引擎在mvc模式下是如何做到低耦合的事件处理的. 在卡卡编辑器中选择一个节点,然后在左侧工具栏中切换到 ...

  3. mybatis 乐观锁和逻辑删除

    本篇介绍easymybatis如配置乐观锁和逻辑删除. 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现.即:数据库增加一个int或long类型字段ver ...

  4. SpringBoot整合Quartz定时任务 的简单实例 2

    (1)什么是Quartz?(2)Quartz的特点:(3)Quartz专用词汇说明:(4)Quartz任务调度基本实现原理: 接下来看下具体的内容: (1)什么是Quartz? Quartz是一个完全 ...

  5. jquery的$.extend和$.fn.extend作用及区别,兼它们的一些小细节

    $.extend(obj);是为了扩展jquery本身,为类添加新的方法   $.fn.extend(obj);给JQUERY对象添加方法.如(1): $.extend({ add:function( ...

  6. Android -- ADT变化&aar&Lint

    Switch Case switch case 常用的使用方法: switch(v.getId()){ case R.id.btn1: doClick1(); break; } 在ADT中的改变 在正 ...

  7. Python机器学习实践与Kaggle实战(转)

    https://mlnote.wordpress.com/2015/12/16/python%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%AE%9E%E8%B7%B5 ...

  8. EF 数据类型 0xA7 的数据长度或元数据长度无效

    测试方法 TestProject1.SysTest.HtmlAnalysisTest12 引发异常:  System.Data.UpdateException: 更新项时出错.有关详细信息,请参阅“I ...

  9. wifidog接口文档(转)

    目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...

  10. MySQL数据复制到其他主机时报错

    问题1: MySQL server has gone away With statement 原因:SQl insert 插入的语句天长导致 问题2:mysql a bulk size specifi ...