因在Windows 8.1中微软没有对版本API进行更新 导致桌面软件识别版本号为6.2.9200



这次的问题在Windows 8.1 Preview的时候就已经存在,RTM发布微软将系统内核升级到了6.3.9600,可对上层的Win32 API没有进行更新,导致应用程序通过这些API进行取值的时候返回错误的版本号,即Windows 8的版本号:6.2.9200。
几乎所有桌面软件都使用了GetVersion或者GetVersionEx来查询Windows的系统版本信息,可这些API此次在Windows 8.1上却返回了Windows 8的版本号,受影响范围极广,此前很多著名的硬件检测软件都识别了错误的系统版本,包括AIDA64在内也错误的识别了Windows 8.1的系统版本,不过在新版本中已经修正。
目前这个“BUG”还没有得到Windows Update下发的补丁进行修正,这可能导致很多问题,如应用层软件的驱动程序支持Windows 8却不支持Windows 8.1,可它在8.1上运行时因为获取到的是错误的版本号,最终会尝试加载驱动导致系统崩溃等。

临时的修正方案是使用未文档化的函数ntdll!RtlGetNtVersionNumbers进行获取版本号,此API返回的是正确的版本号,即6.3.9600。

此次Win32 API返回的版本号和内核版本号不同的问题,在各个版本的Windows系统中尚属首例。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值