欢迎来到天天文库
浏览记录
ID:41004327
大小:23.05 KB
页数:6页
时间:2019-08-13
《Microsoft Windows 2000 应用程序兼容性》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、MicrosoftWindows2000应用程序兼容性讨论使应用程序在Microsoft(R)Windows(R)2000上存在不兼容性的几个问题。其中有以下几部分:介绍设置和安装问题Windows2000兼容性问题应用程序稳定性问题Windows平台之间的差异介绍几个月来,我一直从事一项任务,即找出Windows2000操作系统中的应用程序兼容性问题。在这里我真正要讨论的是,造成应用程序与Windows2000不兼容的原因。没有人真正关心使应用程序兼容的原因。我一直在与Windows2000测试组合作,他们在过去的几个月中已测试了数百个应用程序。我们已将应用程序在Win
2、dows2000上正常或不正常运行的原因进行书面论述。我们发现的问题可以归为四类:1.无法在Windows2000上安装的应用程序。这是迄今我们发现的最大问题。应用程序在Windows2000上安装的方式并无甚特殊之处;问题是这些应用程序不让自己安装到这一新版本的操作系统中。2.我们对操作系统所做的、影响应用程序运行的更改。每当MicrosoftWindowsNT(R)开发组面临选择,是使系统作为平台更稳定或更强大,还是保障应用程序的兼容性,他们总是牺牲后者而取稳定性。Windows2000开发工作的一个主要目标就是让系统作为平台更加稳定。遗憾的是,为了实现这一点而必须进
3、行的某些改动,已导致应用程序在Windows2000上不兼容。3.我们已对操作系统进行的更改不会影响应用程序的兼容性,但会中断某些应用程序。4.过于依赖Windows9x平台的应用程序。我们在开发Windows2000时,考虑到有众多Windows9x用户需要升级,因此对Windows9x应用程序进行了测试,将它们移植到Windows2000中。我们发现某些应用程序过于依赖Windows9x。设置和安装问题我们要讨论的第一类问题是设置和安装问题;最常见的问题无疑是无法在Windows2000上安装应用程序。实际上,导致无法安装应用程序的一个最普遍的原因,在于Windows
4、2000是WindowsNT的5.0版。测试组以多种方式测试应用程序。他们将应用程序安装在基于Windows2000的系统中,或者将应用程序安装在WindowsNT4.0或Windows95中,然后再将系统升级到Windows2000,以便进行测试。我们拿来一台未安装任何操作系统的机器后,安装上Windows2000,再安装应用程序,与上述升级的情况相比,前者的兼容性数目要少得多。版本检查造成应用程序无法安装在Windows2000上的第一位原因,是它们无法正确处理版本号。我们发现很多应用程序都进行以下示例代码所做的操作。它们在运行过程中会调用GetVersionEX,然
5、后写下一条“if”语句,该语句规定:“如果系统是版本3,因为没有新的Shell,我不能正常运行,所以我可能无法安装。如果系统是版本4,我可以进行安装和设置”。问题出在如果系统是版本5,这一“if”语句就没有了下文。因为版本号是5.0,这些应用程序由于自身原因而无法安装,所以我们发现了一系列这样那样的问题。if(osvi.dwMajorVersion==3){//请这样做}elseif(osvi.dwMajorVersion==4){//请那样做}测试组继续寻找解决方案,并蒙蔽了许多此类应用程序。在早期的编译中,我们能够采取措施改变GetVersionEx的返回值。我们可以
6、改变其返回值,欺骗应用程序,告诉它版本号就是4.0,然后程序就能够继续安装,并正常运行。但有部分应用程序的设计思想就是不能安装在Windows2000上。对于病毒扫描程序或其他低级实用程序来说,受限于某一操作系统版本是可以理解的。不过,这些应用程序会显示消息来说明这一点。我们查找的是那些不能安装或无法正常运行、又根本没有通知用户的应用程序。怎样才能正确地检查版本号?在Windows2000中我们将添加一个新的API:VerifyVersionInfo,这一API在运行时将依次检查主版本号、次版本号以及服务包。如果出现了操作系统的新版本,应用程序仍然能够在其上安装并运行。实
7、际上应用VerifyVersionInfo的选项和方式还有很多,但如果只是检查“要是操作系统升级了,应用程序该如何处理”这一类问题,您只需调用这三个标志,然后检查主版本号、次版本号以及服务包。您能够定义以下语句:“我的程序需要运行在WindowsNT4.0、SP2上”,然后询问VerifyVersionInfo“我正在运行的操作系统是否已达到这一标准?”,该API将返回真值或假值。VerifyVersionInfo(&osvi,VER_MAJORVERSION
8、VER_MINORVERSION
9、VER_SERVICEPACKM
此文档下载收益归作者所有