Oldest GUI application that still runs on Windows 11

Oldest GUI application that still runs on Windows 11

For a while I’ve been wondering about a silly question, which is, what’s the oldest application with a GUI that will still run on Windows 11 without modifications or emulation.

有一段时间,我一直在思考一个无聊的问题:在不进行任何修改或使用模拟器的情况下,能在 Windows 11 上运行的最古老的图形界面(GUI)应用程序是什么?

Given Windows’ excellent backwards compatibility, I expected the answer to be something impressively old.

鉴于 Windows 出色的向后兼容性,我原以为答案会是一个令人印象深刻的古老程序。

Sadly, Windows 11 can’t run 16-bit Windows programs by itself, because 64-bit Windows has no NTVDM, so we’re going to have to find something from the early NT era.

遗憾的是,Windows 11 本身无法运行 16 位 Windows 程序,因为 64 位 Windows 没有 NTVDM(NT 虚拟 DOS 机),所以我们必须从早期的 NT 时代寻找目标。

I remember asking this question a while ago on an anonymous forum, where someone pointed me to Win32s, and suggested to find an early release version of it with FREECELL.exe.

我记得前阵子在某个匿名论坛上问过这个问题,有人向我提到了 Win32s,并建议我找一个带有 FREECELL.exe 的早期发布版本。

So I did exactly that, and lo and behold, FREECELL.EXE with a date modified of 22-Feb-93 running and fully playable, without any changes on the latest version of Windows 11:

于是我照做了,结果令人惊喜:一个修改日期为 1993 年 2 月 22 日的 FREECELL.EXE 在最新版的 Windows 11 上运行良好且完全可玩,无需任何改动。

At the time of this post, that’s a 33 years and 8 months old application, which is impressively almost as old as me.

在撰写本文时,这个应用程序已经有 33 年零 8 个月了,令人印象深刻的是,它几乎和我一样大。

So I kinda thought “cool”, considered this a solved mystery and forgot about it shortly afterwards. But for some reason, this question popped into my mind again lately and this time I decided to dig deeper to see if I can find something older.

当时我觉得“挺酷的”,认为这个谜题已经解开,随后就把它抛之脑后了。但不知为何,最近这个问题又浮现在我的脑海中,这次我决定深入挖掘,看看能否找到更古老的东西。

Digging through old Windows versions on the Internet Archive, I found some early NT 3.1 pre-release versions that seemed promising, but the main issue seemed to be either incompatibility with today’s executable format or API changes that came later in development.

通过在互联网档案馆(Internet Archive)中翻阅旧版 Windows,我发现了一些看起来很有希望的 NT 3.1 早期预发布版本,但主要问题似乎在于它们要么与当今的可执行文件格式不兼容,要么是开发后期出现的 API 变更所致。

The earliest 1991 versions used a draft PE format not compatible with modern Windows, and builds up to mid-1992 assumed the cdecl calling convention instead of stdcall for Windows API calls, so arguments would get removed twice, as such:

1991 年的最早版本使用了与现代 Windows 不兼容的 PE 格式草案,而 1992 年中之前的版本在 Windows API 调用中采用的是 cdecl 调用约定而非 stdcall,这会导致参数被重复移除,如下所示:

Which would understandably cause the program to crash.

这理所当然会导致程序崩溃。

There was one application that caught my eye though, from Build 347, and that was CDPLAYER.EXE, linked on 16-Nov-1992. By then the calling convention was fixed, but the other programs in that build crash in their bundled C runtime. CDPLAYER.EXE avoids that by using the system’s crtdll.dll, and Windows 11 still ships a crtdll.dll in SysWOW64.

不过,有一个来自 Build 347 的应用程序引起了我的注意,那就是 1992 年 11 月 16 日链接的 CDPLAYER.EXE。到那时,调用约定已经修复,但该版本中的其他程序在捆绑的 C 运行时中会崩溃。CDPLAYER.EXE 通过使用系统的 crtdll.dll 避免了这个问题,而 Windows 11 的 SysWOW64 中仍然包含 crtdll.dll。

If you start the program, you get something like this:

如果你启动该程序,会看到类似这样的画面:

That is because, duh, my computer doesn’t have a CD-ROM drive. But you can use a small DLL (cdemu.dll) to emulate one with some fake audio data and actually get it to play audio:

这是因为,显而易见,我的电脑没有 CD-ROM 驱动器。但你可以使用一个小型的 DLL (cdemu.dll) 来模拟一个带有虚假音频数据的驱动器,并让它真正播放音频:

Pretty cool for a program that’s almost 34 years old!

对于一个快 34 岁的程序来说,这真的很酷!

So earlier I mentioned that 16-bit programs are out of the picture because they are no longer supported.

之前我提到过,16 位程序不在考虑范围内,因为它们已不再受支持。

But if you want, you can use something like otvdm to run older Windows applications.

但如果你愿意,可以使用像 otvdm 这样的工具来运行更古老的 Windows 应用程序。

Behold, a fully playable version of REVERSI.EXE dated 15-Nov-1985 running on Windows 11, taken from Windows 1.01:

瞧,这是一个来自 Windows 1.01、日期为 1985 年 11 月 15 日的 REVERSI.EXE,它在 Windows 11 上完全可玩:

And although using otvdm does feel like cheating, I thought it was cool enough to include in this post.

虽然使用 otvdm 感觉有点像作弊,但我认为它足够酷,值得写进这篇文章里。