什么样的应用程序,是只好在xp上运行,win7上不能运行
什么样的应用程序,是只能在xp上运行,win7上不能运行?
微软的Windows virtual PC有个xp mode能帮助我们模拟一个xp环境,运行一些程序。
我的疑问是,windows不是号称向后兼容吗,难道很多在xp上面开发的程序,放到win7上就运行不了了? 什么样的程序才会这样呢?
------解决方案--------------------
比如某些程序是依据exe必须加载到0x400000地址才能正常运行的
------解决方案--------------------
有些 windows 的模块经过升级后,导致部分 API 函数的参数、内部代码有所改变
所以原来就旧版能正常运行的程序到了新版后不能运行,而这个虚拟器就是有这个用途
------解决方案--------------------
加载地址是exe建议,操作系统采用(如果可能的话)。 在Vista beta 2之前32位默认加载地址都是0x400000。 之后因为ASLR(Address Space Layout Randomization)默认为启用, exe的加载地址由操作系统选择,每次都不同。
------解决方案--------------------
很简单的,protel99,在xp上行,win7上就有问题
------解决方案--------------------
应该有不少这类程序。比如有些程序不是用LoadLibrary(), GetProcAddress()获取系统dll中某个函数的入口而是直接使用已知地址(比如某些未公布函数,通过reverse engining获取的函数入口地址)去调用系统函数的在Vista及以后系统中都不能使用了。
------解决方案--------------------
因为UAC权限控制,系统会将需要管理员权限的代码的操作给屏蔽掉,比如修改注册表、注册控件,向系统的关键部位写入内容
微软的Windows virtual PC有个xp mode能帮助我们模拟一个xp环境,运行一些程序。
我的疑问是,windows不是号称向后兼容吗,难道很多在xp上面开发的程序,放到win7上就运行不了了? 什么样的程序才会这样呢?
------解决方案--------------------
比如某些程序是依据exe必须加载到0x400000地址才能正常运行的
------解决方案--------------------
有些 windows 的模块经过升级后,导致部分 API 函数的参数、内部代码有所改变
所以原来就旧版能正常运行的程序到了新版后不能运行,而这个虚拟器就是有这个用途
------解决方案--------------------
加载地址是exe建议,操作系统采用(如果可能的话)。 在Vista beta 2之前32位默认加载地址都是0x400000。 之后因为ASLR(Address Space Layout Randomization)默认为启用, exe的加载地址由操作系统选择,每次都不同。
------解决方案--------------------
很简单的,protel99,在xp上行,win7上就有问题
------解决方案--------------------
应该有不少这类程序。比如有些程序不是用LoadLibrary(), GetProcAddress()获取系统dll中某个函数的入口而是直接使用已知地址(比如某些未公布函数,通过reverse engining获取的函数入口地址)去调用系统函数的在Vista及以后系统中都不能使用了。
------解决方案--------------------
因为UAC权限控制,系统会将需要管理员权限的代码的操作给屏蔽掉,比如修改注册表、注册控件,向系统的关键部位写入内容