曾经在代码中推断用户的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. lync2013 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为

    最近 练习安装lync2013 在发布拓扑结构时遇到如下错误: lync 错误: 已为不同的传输层安全性(TLS)目标找到类型为“McxInternal”且完全限定的域名(FQDN)为“lync.co ...

  2. [leetcode]Length of Last Word @ Python

    原题地址:https://oj.leetcode.com/problems/length-of-last-word/ 题意: Given a string s consists of upper/lo ...

  3. 搭建MySQL高可用负载均衡集群(转)

    阅读目录 1.简介 2.基本环境 3.配置MySQL主主复制 4.中间件简述 4.1.Haproxy介绍 4.2.keepalived介绍 5.中间件的安装与配置(haproxy.keepalived ...

  4. listview加载数据

    首先我们需要理清思路:使用ListView显示数据是很方便的,ListVIew的数据之间通过适配器adapter去作为桥梁连接起来.当我们需要使用listview显示大量数据的时候,我们需要使用到分页 ...

  5. Base64原理与实现

    Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充 ...

  6. 转:CRF++

    CRF++使用小结  http://www.cnblogs.com/pangxiaodong/archive/2011/11/21/2256264.html 1. 简述 最近要应用CRF模型,进行序列 ...

  7. Spring(十七):Spring AOP(一):简介

    背景: 需求: 给一个计算器计算函数执行前后添加日志. 实现: 1)直接在函数中修改代码: IArithmeticCalculator.java接口类 package com.dx.spring.be ...

  8. capwap学习笔记——初识capwap(二)

    2.5.1 AC发现机制 WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接. WTP的发现过程是可选的.如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现 ...

  9. 前端开发必备 40款优秀CSS代码编写工具推荐

    摘要:CSS工具可以简化工作流,可以提高CSS编写速度,是开发者和设计者所不可缺少的.本文列举了40种CSS工具,功能涉及CSS菜单.动画.3D图形.响应式页面.图层.按钮等界面元素的设计与制作,你定 ...

  10. 在Excel中输入超过10的带圈数字

    通过改变字体,可以在excel中输入1-20的带圈数字.对于某些人这些还不够用,那怎么办呢? 有了下面这个不知道是哪个大神做的字体,你就可以直接输到100啦 将字体文件文件粘贴至“C:\WINDOWS ...