|
推荐
楼主 |
发表于 2019-1-26 14:30:24
|
只看该作者
有些程序的识别系统版本代码写的并不那么规范,很多确实是先通过检查NT内核的版本再与这段代码中相对应的值比较来判断,如果是(能找到与之相匹配的文本) 则直接返回该值,如果否(找不到与之相匹配的文本) 则改为通过检查Windows系统的命名来判断。
但这个问题就出在了当时NT6.4只有几个测试版也不起眼,一些程序在检测版本代码中并没有把它加进去。也就是说到了NT6.3后下一个写的是NT10.0,如果这些程序在NT6.4上运行此方案一就不能通过自然会改用方案二判断。
如果按照系统命名来判断,那么新的问题又来了:
因为微软在上个世纪发布过的Windows 9X系统并不止一个版本,现在的很多程序员为了检测方便就写为当检查到前缀为9的时候就直接将其判定为9X系列。这样就导致了新的系统如果微软命名为Windows 9就会被错误地识别为9X系列从而判定系统过旧被Pass掉。图片中遇到的情况也足以说明了这个问题。
实际上解决此问题最简单的一个办法就是在这部分代码中加上个NT6.4=NT10.0就完事,说白了出现这种情况还是程序员偷懒了。
另外并没有什么硬性规定不能把数字9作为版本使用,比如谷歌发布了Android 9.0并没有跳跃版本。厂商对自己的产品版本命名是自由的,是否要考虑兼容和吉凶等其他一系列问题由他们决定。 |
|