近期赶时髦升级了win10,用着挺爽。但是某天在测试一个bug时发现要对win10做特殊处理,于是直接调用了GetVersionEx,并取出版本号进行判断,但是发现得到的版本竟然是6.2。当时就被雷到了,然后看了我们的其它产品中相关功能,皆获取的是6.2。

在搜索一会儿之后,发现这是微软故意做的设定,GetVersionEx函数可能在Win8.1之后会取消,推荐程序员们使用Version Helper APIs ,所以在8.1之后的系统中此函数的行为改变了,如果程序没有加上正确的manifested以表明此程序兼容新系统,则只能得到6.2这个版本号。

下面说说,需要如何添加一个正确的manifest,也可以去MSDN上直接看原始文档

首先,如果原来程序就已经设置了附加一个额外的manifest文件,则直接在原来的manifest里的assembly根节点里加一段兼容指示:

 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/><!-- Windows 8.1 --><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/><!-- Windows Vista --><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><!-- Windows 8 --><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/></application> </compatibility>

如果原来没有一个manifest文件,则可以在工程的某目录创建一个 xxx.manifest文件,里面写上以下内容,当然内容中的工程名称可以随意,并没有强制,只要确保compatibility节点的值不变就可以了:

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.5.0.0" processorArchitecture="X86" name="Microsoft.Windows.工程名称" type="win32"/> <description>工程名称</description>    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/><!-- Windows 8.1 --><supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/><!-- Windows Vista --><supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!-- Windows 7 --><supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/><!-- Windows 8 --><supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/></application> </compatibility>
</assembly> 

然后在vs工程属性里找到“清单工具->输入和输出->附加清单文件”里填入manifest文件的相对路径,然后重新链接,你的程序就可以正常的使用GetVersionEx了。但出了新系统之后,估计还是要重新改下manifest以兼容新的系统。

转载于:https://www.cnblogs.com/k1988/p/4727757.html

win10 系统下获取系统版本号为6.2的问题相关推荐

  1. 如何在Linux系统下更改系统语言?

    如何在Linux系统下更改系统语言? 先更改系统的更新服务器,选择国内的服务器网速更好一些. 选择「System Settings」打开设置 选择「Software & Updates」 下载 ...

  2. Linux系统下查看系统时间和硬件时间

    Linux系统下查看系统时间和硬件时间 1.具体命令使用如下: 查看当前系统时间 [root@littlelawson hbase-1.4.0]# date Mon Jun 18 10:36:45 P ...

  3. 游戏开发jenkins杂谈系列:windows系统下修改系统时间触发Build periodically设置的定时任务,往前调时间但不再执行定时任务的解决办法

    网上搜了一堆帖子,没有讲到我遇到的这个问题的: windows系统下修改系统时间执行定时任务,例如任务在2020.11.18. 20:36分已经触发了,我将时间调回至2020.11.17 20:35, ...

  4. linux mysql 系统时间函数吗_linux下获取系统时间的方法

    可以用 localtime 函数分别获取年月日时分秒的数值. Linux下获得系统时间的C语言的实现方法: 1. 可以用 localtime 函数分别获取年月日时分秒的数值. #include     ...

  5. linux下获取系统时间的方法

    可以用 localtime 函数分别获取年月日时分秒的数值. Linux下获得系统时间的C语言的实现方法: 1. 可以用 localtime 函数分别获取年月日时分秒的数值. #include< ...

  6. linux下 获取系统时间的相关函数

    linux下C获取系统时间的方法 asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include 定义函数 char * ...

  7. 机器人底层通讯(3): linux系统下获取电子罗盘数据(上)

    1.已有设备和接口 电子罗盘–1个 RS485转RS232接口–1个 RS232转USB接口-- 1个 2.在window10系统下借助串口调试器可以正常接收数据,说明电子罗盘正常: 3.查看是否已正 ...

  8. 2008游戏服务器系统下,Linux系统下玩经典游戏 CS1.5服务器架设

    Linux系统下玩经典游戏 CS1.5服务器架设 (2008-09-24 16:34:00) 标签: linux it Linux系统下玩经典游戏 CS1.5服务器架设 首先你要下载两个文件.hlds ...

  9. Windows系统下创建系统还原点 和 进行系统还原

    在使用Windows系统时,会因为各种原因需要还原系统.还原系统就需要还原点,下面就说一下还原点的创建和系统还原. 一.还原点创建: 1.1.在 我的电脑上–>右击–>选择属性 1.2.点 ...

  10. linux内核下获取系统时间,linux内核获取当前系统时间

    转载自:http://blog.csdn.net/heanyu/article/details/6552578 7.2. 获知当前时间 内核代码能一直获取一个当前时间的表示, 通过查看 jifies ...

最新文章

  1. 我来告诉你【Redis】入门 一
  2. mysql总是出现-_mysql 总是莫名其妙的关闭:报错 -问答-阿里云开发者社区-阿里云...
  3. QCustomplot控件设备背景图片(Qt图片自适应控件大小),并且设置绘图区域颜色透明
  4. 十五个实用的mysql语句分享_分享MySQL中实用的几种SQL语句
  5. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
  6. 7-174 两个有序链表序列的合并 (20 分)
  7. php 判断字符串中是否包含另一个字符串 strpos
  8. Android JNI 学习(十):String Operations Api Other Apis
  9. POJ1315 UVA639 UVALive5325 Don't Get Rooked题解
  10. Slider 滑动条效果
  11. easyui 中iframe嵌套页面,提示弹窗遮罩的解决方法,parent.$.messager.alert和parent.$.messager.confirm...
  12. 超级搜索术2-人脉搜索/分类整理
  13. openpyxl python 框线_Openpyxl对单元格应用边框
  14. R语言期末试题【二期补充】-重庆工商大学-统计学课程
  15. 原来系统还能这么装!教你虚拟光驱Daemon重装win10
  16. RPLIDAR十分钟极速入门教程
  17. 推荐几个无版权的免费图片网站
  18. 「MacOS鼠标操作技巧」如何设置鼠标”的速度、滚动方向等配置?
  19. 如何理解GPU中的SIMT(单指令流多线程模型)
  20. 程序设计与算法郭炜老师的课堂笔记3

热门文章

  1. 阿里云linux上安装,卸载mysql与重新安装配置Mysql
  2. 基金行业数据安全保障体系建设探析
  3. (转)曹锋、宋天玮:区块链技术在证券市场中的应用探索
  4. 阿里云蒋江伟:什么是真正的云原生?
  5. 亮相云栖:这些被Gartner点名的2020年安全风向
  6. 【配送路径规划】基于matlab模拟退火算法求解单配送中心多客户多车辆最短路径规划问题【含Matlab源码 1604期】
  7. 【手指识别】基于matlab GUI指尖图像采集与检测【含Matlab源码 585期】
  8. 【图像去噪】基于matlab GUI均值+中值滤波图像去噪【含Matlab源码 372期】
  9. 【数学建模】2021年美赛C题思路(预测模型和图像识别)【含Matlab源码 245期】
  10. 【数学建模】基于matlab重庆三号线地铁运行仿真【含Matlab源码 042期】