当前位置: 技术问答>linux和unix
Windows系统的dos内部版本号的研究与疑问
来源: 互联网 发布时间:2014-12-25
本文导语: int 21h 0x3000(V2+) 和0x3306(V5+) 功能都可以取dos版本号。 分别在real dos 6.22 /win95 /win98/ win98se /winMe/win2000/winXP/OS2下调用这两个中断服务。得到的结果如下 0x3000 0x3306 dos6.22 6.22 6.22 win95...
int 21h 0x3000(V2+) 和0x3306(V5+) 功能都可以取dos版本号。
分别在real dos 6.22 /win95 /win98/ win98se /winMe/win2000/winXP/OS2下调用这两个中断服务。得到的结果如下
0x3000 0x3306
dos6.22 6.22 6.22
win95 7.0 7.0
win98/SE 7.1 7.1
WINME 8.0 8.0
WIN2000 5.0 5.5
WINXP 5.0 5.5
OS2 10.00 10.01
问题在于
一、是否所有NT技术WINDOWS的两个结果都不一样,希望测试WINNT3.51 WINNT4.0。
二、是否存在一个系统的版本号是9.0.
三、希望测试XENIX的DOS模拟块的版本号。
给出实测结果后加分
分别在real dos 6.22 /win95 /win98/ win98se /winMe/win2000/winXP/OS2下调用这两个中断服务。得到的结果如下
0x3000 0x3306
dos6.22 6.22 6.22
win95 7.0 7.0
win98/SE 7.1 7.1
WINME 8.0 8.0
WIN2000 5.0 5.5
WINXP 5.0 5.5
OS2 10.00 10.01
问题在于
一、是否所有NT技术WINDOWS的两个结果都不一样,希望测试WINNT3.51 WINNT4.0。
二、是否存在一个系统的版本号是9.0.
三、希望测试XENIX的DOS模拟块的版本号。
给出实测结果后加分
|
一般DOS程序都用INT21h/AH=30h来得到DOS版本号,以判断程序运行的环境,这是保证程序正确运行的措施。不幸的是,有些程序的版本判别过于严格了,这使得它们在一些未知版本的DOS下无法运行,虽然事实上它们可以毫无问题地在这些版本的DOS上执行。例如,有些DOS程序要求DOS主版本号在5和6之间,否则就退出,不予运行,那么它们在DOS7.0上就拒绝工作。
为了解决这个问题,Microsoft在DOS5.0以后(不是很确定)提供了一个setver程序,它维护一张程序->DOS版本号映射表,如果表中的程序调用INT21h/AH=30h来获取DOS版本号,DOS就把表中与之对应的版本号提供给程序,可以称之为假版本号。利用setver,就可以使一个版本要求严格的程序运行在未知DOS版本下,但是前提是,这个程序确实能在此版本下正确工作。
但是解决了老问题,却引入了新问题。有一些程序,如与系统紧密相关的底层操作程序,确实需要严格的版本检查。你随意用setver欺骗它,会导致程序甚至系统的崩溃。于是,Microsoft加入了一个的DOS API:INT21h/AX=3306h,它提供的功能是:取得DOS真实版本号。它个是DOS的真正版本,用setver也欺骗不了的。
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
为了解决这个问题,Microsoft在DOS5.0以后(不是很确定)提供了一个setver程序,它维护一张程序->DOS版本号映射表,如果表中的程序调用INT21h/AH=30h来获取DOS版本号,DOS就把表中与之对应的版本号提供给程序,可以称之为假版本号。利用setver,就可以使一个版本要求严格的程序运行在未知DOS版本下,但是前提是,这个程序确实能在此版本下正确工作。
但是解决了老问题,却引入了新问题。有一些程序,如与系统紧密相关的底层操作程序,确实需要严格的版本检查。你随意用setver欺骗它,会导致程序甚至系统的崩溃。于是,Microsoft加入了一个的DOS API:INT21h/AX=3306h,它提供的功能是:取得DOS真实版本号。它个是DOS的真正版本,用setver也欺骗不了的。
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]