球友会 - Windows:技术演进中的不朽之作

9055

多年前,孩子对我说想要开发一款角色扮演游戏,希望能找到一些灵感。我立刻想起曾经为之沉迷的经典游戏《仙剑奇侠传》。于是,我在Steam上搜索并下载了这款游戏。运行的瞬间,熟悉的复古界面映入眼帘。《仙剑奇侠传》的Windows版本1997年问世,至今已有近三十年,它仍能在最新的Windows 11系统上流畅运行。这不仅是一个个例,试想假如您手头恰好有20多年前的Office 2000版本,它也能够在Windows 11上正常安装并使用。此外,1995年推出的著名工具Total Commander,也可以从Windows 95一路兼容至Windows 11。而1998年风靡一时的开发工具Visual Basic 6,即使时至今日,微软仍在为其提供支持,让使用该工具编写的旧程序在Windows 11上也能继续运作!至于2002年发布的经典图像处理软件Photoshop 7,同样可以在Windows 11上顺利运行。甚至是2003年发布的音频播放软件Winamp 2.91,启动时速度之快,让人赞叹,音效均衡器、EQ调节以及90年代经典的皮肤效果更是栩栩如生,CPU的占用率几乎为零。这样的向后兼容能力实在令人钦佩!正因如此,有网友在Reddit上感慨,Windows无疑是人类历史上最伟大的软件。

about image

微软实现如此优异的兼容性绝非易事,其中蕴藏着两个重要的秘诀。首先,为了确保兼容性,微软甚至会保留Bug!以著名的游戏《模拟城市》为例,在Windows 3.x时代,一位程序员Jon Ross无意中书写了一段错误的代码,导致游戏在释放内存后却依然尝试去读取该内存。这种情况下,游戏本应立即崩溃,但由于Windows 3.x系统的内存管理较为简单,内存数据并不会立刻被清除,因此游戏意外地得以正常运行。但当Windows 95发布、引入更为严格的内存管理机制时,运行《模拟城市》便直接崩溃。面对这一困境,微软没有选择直接致电开发商Maxis修复错误,而是选择保留这个Bug,修改Windows 95代码以兼容。Windows 95在检测到《模拟城市》运行时,会自动切换到特定的内存分配模式,故意延迟释放内存,从而使游戏能够继续正常运行。

另一个经典的案例出现在Windows 2000时代。当时的DLL搜索规则相对简单,当前工作目录在搜索时优先级较高,容易出现DLL劫持的问题。随着Windows对DLL搜索机制进行改进,许多早期程序(甚至某些知名企业的核心软件)却依赖于Windows 2000不安全的搜索机制,结果在新系统上运行时直接崩溃。微软的应对措施是推出Windows 2000兼容模式,恢复老旧的DLL加载机制,甚至重新启用过时的堆分配器,巧妙地让Bug“复活”。 球友会

另一个兼容性挑战来自《最终幻想7》。这款曾在PlayStation平台大受欢迎的游戏在移植到PC平台时遭遇了不少问题,它在运行时甚至会检查当前操作系统是否为Windows 95。当用户逐渐升级到Windows 2000和Windows XP时,游戏频频崩溃,音效异常等问题频发。为此,微软快速推出了名为“Win95VersionLie”的兼容性修复工具,巧妙地让游戏“认为”自己依然在Windows 95环境下运行。

在Windows Vista引入用户账户控制(UAC)后,系统盘的写入权限被严格限制,令许多老旧软件在新版系统上难以运行。微软明智地选择了“欺骗”这一策略,通过禁止老软件直接访问系统盘而是将数据写入不同的目录,确保其依然可以正常运作。

about image

随着兼容性问题日益复杂,微软决定从根本上解决这一问题。从Windows XP开始,推出了应用程序兼容性框架。通过这一框架,兼容性问题得以有效管理,从而让老程序在现代系统中继续发挥应有的功能。 球友会

about image

足球,不只是运动,它是对梦想的追逐。...

足球,不只是运动,它是对梦想的追逐。...