我有一个名为 Parsonstech Hebrew Tutor 的程序,专为 Windows 98 设计。显然它是作为 16 位程序编译的,尽管它不是 DOS,并且具有 GUI(16 位 Windows 程序)。我已经能够让它在 VMWare 虚拟机中运行的 32 位 Windows XP 上运行,但对于一个非常简单甚至可以移植的程序来说,这需要很大的开销(它是那些无需安装即可从 CD 运行的旧程序之一)。我真的不想启动整个操作系统来运行这个程序。
话虽如此,我对 DOS 框做了一些研究,并阅读了在 Dos 框上安装 Windows 3.1 的教程,但我确实相信这是一个完整的系统模拟,而且我不知道该程序是否可以在 Windows 3.1 上运行,因为它是为 Windows 98 设计的。
我见过的最有希望的东西是 qemu 用户模式仿真,它声称它可以只模拟处理器并调用程序(甚至是 16 位程序),而无需运行整个复杂的 VM 环境。除非我误解了它。我尝试按如下方式调用该程序:
qemu-system-x86_64 HT.exe
从命令行,但它只是运行并重置,并没有打开程序。我想我用错了。有人能帮忙吗?或者我有什么选择?理想情况下,我希望将整个程序以及它运行所需的任何虚拟化都制作成可移植的可执行文件,而不在我使用它的每台计算机上安装 VMWare 播放器。我没有源代码来重新编译它,制作它的公司也不再存在了,但我不想让它消亡!
答案1
如果应用程序是 16 位的,理论上你可以运行 DOSBOX 内的程序。你需要这个:DOSBOX
安装完成后,您可以运行mount C:\foo Z:
它将在 DOSBOX 中安装应用程序文件夹。然后您需要做的就是:Z:
然后。只需记住用真实的文件夹和真实的 exe 名称appname.exe
替换即可。C:\foo
appname
答案2
对我来说,otvdm 是我一直在寻找的 Ntvdm 的非官方替代品。而 16 位 Windows 使用保护模式,因此根本不需要实模式访问,这与 Microsoft 声称的不一样(要求是 16 位段访问)。
它完全像 Ntᴠᴅᴍ 一样模拟 ᴄᴘᴜ,或者通过英特尔黑客攻击为了获得更好的性能,但它这样做只是为了像 Wine 在 Linux 上所做的那样包装系统调用:没有虚拟网卡;没有虚拟硬盘(%systemdrive%
是%systemdrive%
);没有分配但未使用的内存;还有我正在寻找的选项,但默认情况下是禁用的:对注册表进行的更改是针对系统进行的!
它甚至比官方的 Ntᴠᴅᴍ 更强大:硬件访问的透明级别如此之高,以至于应该能够充分利用原始图形硬件的全部处理能力。虽然当时没有 ᴀᴘɪ 可以做到这一点……
和 Ntᴠᴅᴍ 一样,当遇到 16 位程序时,它会透明地自动启动。
唯一的缺点是 Windows 3.11 用户空间(如程序管理器)不包含在该版本中(甚至没有它的开源克隆),而现代 Windows 32 位 Windows 10 也包含它。但由于它与 exe 有关,因此应该可以从 32 位 Windows 中复制以获取它们。
可以下载预编译版本这里。