首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程误区:Windows版本检查存在的问题

蝎子

操作系统有一个版本号来表示当前的版本,它确实很重要,但是,有很多盆友使用一种错误的方式来检查版本。下面我们来具体看看。

Windows95

在Win95时期,很多开发者都使用了类似于下面的代码对操作系统版本进行检查:

我们先说结果:我们不得不将Windows95上的GetVersion函数的返回值修改为3.95,而不是4.0。

它应该是要返回4.0的。

为什么要这样设计?

让我们考虑,如果Windows 95的GetVersion函数返回了4.0,则版本号中的主版本检查通过,但是次版本号却不会通过,因为0小于10。

这个问题是如此的普遍,以至于我们放弃了为每个应用程序做兼容性指导,而是使用这种简单而粗暴的做法:如果应用程序调用GetVersion获取操作系统版本,则我们统一返回3.95。

这样,上面的版本检查代码就可以正常通过了。

不是很完美,但是确实能工作,对吧。

总结

我突然想起来,同时期的DirectX也总是返回4.x,会不会出于同样的考虑呢?

也许还真是。

不过话说回来,Microsoft已经不再建议开发者直接对系统版本号做硬编码比较了,而是使用诸如IsFeatureXXXAvailable这样的方式来获取某个特性在当前系统是否可用,这种方式,看起来:更直观,也不容易出错。

这个小技巧,大家伙可以试试看。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Bad version number checks》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201209A0GO2I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券