加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

你的windows7兼容了吗? 三大策略助你一臂之力

(2010-03-16 17:13:46)
标签:

电脑

api函数

windows

应用程序

杂谈

分类: Windows相关

好多同学最近都有一个疑问:“我到底要不要装windows7?

Windows7界面很漂亮,也更加注重人性化同时速度又更加快。但是,我怕我的机器装不上啊。”

机器装不上是什么意思呢?

其实大部分同学所说的机器装不上无非就是这几个方面:1,机器太老,怕配置不够;2,机器还可以,但是电脑生产厂商没有提供针对Windows7的驱动,害怕自己装上Windows7之后某些硬件无法使用;3,怕自己经常使用的某些“老软件”无法在Windows7上安装和使用。

对于第一点,大家可以参照微软官方网站的windows7系统要求,另外可以使用windows7升级顾问进行软硬件检测。

对于第二点,我在前面的文章里做了详细的叙述,如果有兴趣的话,参见我的文章《三大兵器在手 驱动从此无忧》,同大家一块儿探讨。

今天,我想跟大家探讨的便是Windows7软件兼容问题,从兼容问题出现的原因开始,逐步探讨,层层深入,文章的最后再一起学习一下如何用Windows7XP MODE实现XP模式与Windows7实现无缝对接,完全解决Windows7兼容问题。

 

从一个事例开始:

小吕同学学校内部有个叫做VOD视频点播系统的网站,从里面可以看到好多不错的电视剧和电影,但是,小吕同学在装上Windows7之后,在安装VOD系统点播专用播放器“邦丰网络播放器”的时候,却出现了这个画面。

 你的windows7兼容了吗? <wbr>三大策略助你一臂之力


小吕同学可是选择的管理员权限进行安装的啊。这可怎么办呢?
不要着急。马上,我们便知道这个中原委了。

 

兼容性出现的常见原因:

 

1 ,API(Application Programming Interface,应用程序编程接口)

在探讨兼容性出现原因之前我们非常有必要先了解这个名词,“应用程序编程接口”,听起来非常专业的一个名词,其实我们可以理解成这是一个黑盒子,里面放着很多做好了的程序源代码,它们能为我们提供各种功能,因此我们不需要了解太多内部的结构,借助这些程序编程接口便能进行操作。对于操作系统方面,我们可以简单的认为,由于操作系统掌握了太多的软硬件工作和运行的权限,为了协调各种软硬件资源的正常运行,操作系统把自己用一个小黑盒子封装起来了,所有与系统内核和硬件级的程序交互,必须通过windows API来进行。

所以,问题便出来了,大家考虑过一点没有,每次操作系统版本的升级,往往内核都有改变,内核的改变反映到外部我们最能看到的部分不仅仅是操作系统界面的改变, 更实质的变化则是API程序编程接口的变化,删除旧的不适用的API函数增加新的API函数或修改旧的API函数。增加新的API函数往往不会产生问题,但是,删除旧的API函数却有可能造成旧版本软件的不兼容,比如某个软件需要调用旧版本操作系统内核的一个API函数但是这个API函数在新的版本操作系统里面却没有,被删除了,这时,程序往往就会报错了。如果这个API不是很重要,往往我们点击确定之后程序仍旧能够正常使用,但是如果这个API对程序的运行起着至关重要的作用的话,这个程序便不能在新的系统里面运行了。这是最严重的程序兼容问题。解决的办法只能是更新应用软件程序代码。对于我们最终用户来说,解决的途径可以采用XP-mode,但是,这个XP模式的开启是需要严格的条件的,我在下一篇文章里将会同大家专门探讨如何使用XP-Mode来解决兼容问题。

2UAC的出现

安装时:

在我的以前的文章里面我详细的介绍过,UAC的出现,用户在使用管理员账号登陆系统的时候默认被分配有两个访问令牌,一个是普通用户特权的,一个是具有管理员用户特权的。而我们默认使用的却是仅仅具有普通用户特权的令牌,这个令牌的特权非常少,比如不能向系统关键区域如系统盘根目录(我们最常见的C:)、windows目录、program files目录等还有不能向注册表的HKLM/Software下写入键值。但是,问题出现了,XP时代的程序员们过的是具有管理员特权的日子,他们写的程序大都是直接往这些敏感部位写数据的。于是,在没进行管理员特权提升的情况下,问题出现了,这些程序的数据被虚拟重定向了。然而,专门为Vista系统开发的程序如果没有进行管理员权限的提升的话,会直接报错。这两种都被看做是程序兼容性问题的一种。

运行时:

程序需要向敏感部位写数据,而我们并没有进行管理员权限的提升,程序执行不成功。造成兼容性问题。

 

3,操作系统版本检查

操作系统版本检查本来是为了确保应用程序所需要的某些操作系统特性确实存在,比如具备程序运行所需要的API函数,有了这些操作系统特性,应用程序才可以正常运行。然而当操作系统版本检查被滥用的时候,很多兼容性问题由此而产生。

用户可能会遇到应用程序在加载的时候,悄无声息地退出而没有任何的信息提示。有的用户可能会看到一个类似“此应用程序必须在Windows XP或者是其后的操作系统上运行”的错误提示对话框。但是,事实上这台计算机的操作系统是Windows 7,当然是在Windows XP之后了。错误或者说是低劣的版本检查,会给用户带来极大的不便。

文章开始时我的那个截图大家还记得吧,我的这个程序却是应用程序开发人员特意设计的版本检查行为,他们希望阻止应用程序在未经过足够测试的新操作系统上运行。但是,通常建议程序员尽量不要阻止应用程序在更新的操作系统上运行。除非最终用户许可协议禁止应用程序在更新的操作系统上使用,否则应用程序不应在操作系统版本号增加的情况下无法运行。如果应用程序无法运行,则必须向用户发送消息,并向日志写入一条消息,然后正常退出。

 

三大利器:

大家是不是发现我很喜欢三这个数字啊?不清楚为什么,我写的这个文章怎么都具有三的特性。这次针对上面提到的兼容性问题出现的原因我我倒着跟大家探讨解决办法:

1,版本欺骗策略

本策略是为了解决“操作系统版本检查”而实施的策略。

当一个应用程序在“不兼容”的Windows版本上运行的时候,它可能会显示一个错误消息,也可能悄无声息地退出或者是无法正常工作。通常,如果我们解决了版本检查的问题,它就可以正常工作。于是,我们可以进行版本欺骗:

最终用户或者是IT管理员可以简单地使用Windows 7XP兼容模式,或者是微软所提供的应用程序兼容性工具集(Application Compatibility Toolkit (ACT)),对应用程序进行操作系统版本“欺骗”,让应用程序认为他还是运行在较旧的Windows版本上,从而解决版本检查的问题,让应用程序在 Windows 7上正常运行。

具体“欺骗”方法:右击提示操作系统版本不符的软件,选择“属性”,切换到“兼容性”选项卡,在兼容模式中选择操作程序提示要求的操作系统及其版本。遇到悄无声息推出安装的程序可以选择让操作系统“帮助我选择设置”,如下图。

你的windows7兼容了吗? <wbr>三大策略助你一臂之力


点击确定,是不是原先不能安装的应用程序,现在可以安装了,另外聪明的你是不是发现,这些软件其实在
windows7下面往往都是允许的非常正常呢?

 

2,人为管理员权限提升策略

本策略是为了解决操作系统“安装程序检测”功能不足的策略。

其实,如果没有“安装程序检测”功能的话,在UAC机制出现之前所设计的应用程序默认都不会被进行管理员权限的提升的,这样的话很明显会为这些应用程式的执行带来兼容性的麻烦。于是,为了解决这个问题,“聪明”的雷德蒙程序员们想出了一个办法:安装程序检测。这个安装程序检测的作用便是:操作系统将采用一些启发式算法来判断应用程序是不是一个安装程序,也就是在执行的时候这个程序是否需要请求管理员权限,如果操作系统判断应用程序是一个安装程序,就会让它在执行的时候向用户请求获取管理员权限以便让应用程序正确的执行。

但是,这个检测并不是总能保证正确的,有些时候这个检测没有把我们的早期的安装程序正确识别的话,我们便只能人为的进行管理员权限提升了,右击提示操作系统版本不符的软件,选择“属性”,切换到“兼容性”选项卡,如下图:

你的windows7兼容了吗? <wbr>三大策略助你一臂之力



将特权等级下面的“以管理员身份运行此程序”前面的框勾选上。这样就不会出现虚拟重定向和写入不成功的问题了。

 原文出自:http://blog.renren.com/blog/222889495/450742330

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有