Windows 11运行34年前CDPLAYER及Win1.0游戏

Windows 11成功运行34年前的CDPLAYER程序。因系统保留crtdll.dll,该1992年链接的程序可加载,配合模拟DLL能绕过光驱检测正常运行,展现微软底层API的长期稳定性。

Windows 操作系统以其卓越的向后兼容性著称,这引发了一个技术探讨:在当前的 Windows 11 环境下,能够运行的最古老的图形用户界面(GUI)应用程序究竟是什么?

CDPLAYER.EXE链接于1992年11月

由于 64 位版本的 Windows 移除了 NTVDM(NT Virtual DOS Machine),系统原生不再支持 16 位 Windows 程序。因此,探索范围被限定在早期的 NT 架构时代。

Win32s 时代的遗存

通过 Win32s 扩展,可以运行部分早期 32 位程序。其中,FREECELL.EXE 的文件修改日期为 1993 年 2 月 22 日,该程序在 Windows 11 上仍可正常游玩。这款已有 33 年历史的应用程序展示了微软底层 API 的稳定性。

NT 3.1 预发布版的技术障碍

进一步挖掘发现,早期的 NT 3.1 预发布版本存在与现代 Windows 不兼容的问题。主要障碍在于可执行文件格式及 API 调用约定的演变:

  • 1991 年的版本使用了与现代 Windows 不兼容的 PE 格式草案。
  • 1992 年中期之前的构建假定使用 cdecl 调用协议,而现代 Windows API 采用 stdcall 协议。这种差异导致参数清理机制冲突,例如:
push hwnd          ; 4 bytes of args
call [ShowWindow]  ; Win11 ShowWindow is stdcall, ends with "ret 4" and removes them
add  esp, 4        ; the 1992 caller removes them again

上述代码逻辑会导致堆栈指针错误偏移,进而引发程序崩溃。

CDPLAYER.EXE 的成功运行

尽管存在兼容性挑战,CDPLAYER.EXE 是一个例外。该文件链接于 1992 年 11 月 16 日。许多同期程序因捆绑的 C 运行时库崩溃,但 CDPLAYER 通过依赖系统的 crtdll.dll 避免了这一问题。Windows 11 仍在 SysWOW64 目录中保留 crtdll.dll,使得该程序得以加载。

在没有物理光驱的情况下,程序会提示未找到 CD-ROM 驱动器。通过引入模拟 DLL(如 cdemu.dll)提供假音频数据,可以绕过硬件检测并成功运行界面。

对于一款拥有 34 年历史的应用程序而言,其在现代操作系统上的可用性令人印象深刻。

借助第三方工具运行 16 位程序

虽然原生环境不支持 16 位程序,但通过开源项目 otvdm(Open Source Tandy Virtual DOS Machine 或类似兼容层工具),可以实现对旧版 Windows 应用的支持。

利用 otvdm,来自 Windows 1.01 的 REVERSI.EXE(日期为 1985 年 11 月 15 日)可以在 Windows 11 上完全正常运行。

尽管这种方式依赖于非原生的虚拟化技术,但它证明了即使是最早期的 GUI 软件,在现代硬件和操作系统组合下依然具备运行潜力。

评论 0

0/500

评论需审核后展示,请文明发言

💬
还没有评论,来说两句

相关阅读