必一

热点资讯

Windows的兼容性传奇:从过去走向未来

几年前,一个孩子想制作一款角色扮演游戏,于是我建议他寻找一个游戏示例。我立即想起了曾经玩过的经典作品《仙剑奇侠传》。在Steam上搜索后,下载并运行游戏,复古而熟悉的界面瞬间映入眼帘。这款游戏的Windows版本于1997年发布,尽管悄然走过了近30年的时光,但它依然能够在现在的Windows 11上流畅运行。这当然不止于此,如果你手头有发布于2000年的Office 2000,也能在Windows 11上安装并使用。此外,1995年出现的经典软件Total Commander 也能顺利从Windows 95运行到Windows 11,而1998年发布的开发工具Visual Basic 6至今仍享受微软的支持,利用其编写的程序也能在Windows 11上正常工作。即便是2002年的经典图像处理软件Photoshop 7,以及2003年的Winamp 2.91,也能在Windows 11上完美运行,其音效均衡器和90年代的经典界面依旧生动呈现,CPU的占用率几乎为零。这种出色的向后兼容性确实令人惊叹,难怪在Reddit上有人感慨Windows是人类历史上最伟大的软件之一。

微软之所以实现如此卓越的兼容性,背后有两大绝招。首先,为了确保兼容性,他们甚至不放过程序中的Bug。有一个著名的案例是《模拟城市》,在Windows 3.x时代,由程序员Jon Ross无意中编写的错误代码,导致游戏在释放某段内存后仍继续读取这段内存,通常这样的错误会导致游戏崩溃,但由于当时Windows 3.x的内存管理相对简单,内存并不会即时被清空或重写,因此游戏依然能够顺利运行。然而,随着Windows 95发布并引入了更现代的内存管理机制,这款游戏却无法再正常运行。微软没有选择让开发商Maxis修复这个问题,而是决定保留这个Bug并修改Windows 95的代码,使之兼容。当Windows 95检测到《模拟城市》时,会自动切换到一种特殊的内存分配模式,延迟释放该游戏用过的内存,从而让这款经典游戏得以在新平台上顺畅运作。

另一个值得一提的案例发生在Windows 2000时代,由于当时的DLL搜索规则比较简单,应用程序容易受到DLL劫持。虽然后来的Windows系统改善了这一机制,但许多老旧的软件在设计时意外依赖于不安全的搜索规则,结果在新系统下运行时频频崩溃。微软的解决方案是推出Windows 2000兼容模式,不仅恢复了旧版的DLL加载规则,甚至恢复了老旧版本的堆分配器,仿佛将修复的Bug重新开启,实现了对早期系统缺陷的继承。

其次,面对程序与系统不兼容的问题,微软巧妙地采取了欺骗手段。例如,将《最终幻想7》从PlayStation移植到PC并未成功,该游戏在运行时会检测当前操作系统是否为Windows 95。当用户升级到Windows 2000和Windows XP时,游戏经常出现崩溃及音频异常等问题。于是,微软为其推出了名为“Win95VersionLie”的兼容修复,专门对这个游戏进行“谎言处理”,让它“误以为”自己仍在Windows 95上运行。

about image

在Windows Vista发布后,微软引入了用户账户控制,限制了非管理员程序对系统盘的直接访问。然而,如果严格执行这一规则,许多依赖硬编码路径的老软件将无法在Vista上运行。微软的解决方案是继续采取欺骗策略,表面上允许老软件访问系统盘,实际上则将写入的文件重定向到其他目录。

about image

随着兼容性问题日益增多,微软意识到不能仅仅通过在核心源码中添加特例来解决。从Windows XP开始,他们推出了一种称为应用程序兼容性框架的设计。这一框架旨在帮助老旧程序与新的Windows系统之间更加顺畅地互动。

about image
[无下一篇]

“在这家足球俱乐部,教练通过一对一指导,帮助我解决了技术上的难题,现在我在球场上更自信了!”...