Win3.x on Win9x

Win3.x on Win9x

前言

@ZUXING-V 的这篇文章《你可知道,Windows 95差一点就成了买一送一的系统?》启发,这些天再尝试下探索Win3.x与Win9x的共存之道。

你可知道,Windows 95差一点就成了买一送一的系统?

前几天在某站发过一个视频,介绍了之前在96年某期《电脑爱好者》杂志上看到的一篇文章上看到的Windows 95与Windows 3.2快速切换的方法。不重启电脑,使用一个PIF快捷方式退出Win95并调用Win3.x的Win.com以启动Win3.x系统。原理大概是,Win95的DOS7.0启动后会运行Win命令来启动Win95的VMM32内核,随后Win.com便退到后台运行了;如果在Win95的关机对话框中选择启动到DOS环境,那Win.com便会关闭VMM32内核并调用DOS的Command.com Shell,此时运行exit退出此Shell时,Win.com便会重新引导Win95的VMM32内核。而Win3x的PIF选择使用MS-DOS方式运行,便是关闭Win95的VMM32内核后调用Win3.x的Win.com,此时内存里有两个Win.com,而当Win3.x退出后会同时退出它的Win.com,随后Win95的Win.com重新加载VMM32内核。但95 OSR2.x和98系统下则需要patch io.sys或使用中国DOS联盟魔改的DOS7.1才能启动Win3.x的增强模式,WinMe则需要对io.sys进行更多魔改

这个视频的评论区中,ZUXING-V给了上面文章的链接,指出了另一种方法。Win95 build 328及之前的测试版中有一个Win31.exe,用于在Win95下同时加载Win3.1系统。不过这个程序在正式版中并不兼容。这个方法我之前也接触过,但感觉局限性太大就放弃了探索。这其实是 blog.kernel386.com的博主探索出来的,该博主给出了patch win31.exe在正式版中使用的方法。评论区还有人给出了另一位博主的视频链接,该博主使用kernel386博主的这些方法,把patch后的文件分享到了Github上:

github.com/gpdm/TPC-Win

上面这个链接说这个Win31.exe甚至支持WinMe,只是鼠标驱动不兼容。

当然,我也简单制作了个视频来演示Win95/98与Win3.1的同时运行:

这次,继续来探索这个win31.exe。尝试给它安装一些驱动,以及尝试运行中文Windows 3.x。

WoW - Windows 3.x on Win9x

概述

可以参考上面第二个视频以及Github链接。

但在Win9x上直接使用Win3.x的局限性太大,不太建议使用。例如只能在标准模式下使用,不支持386增强模式,这样会很受限,一些驱动和应用程序会无法使用。在Win3.x中也无法运行DOS程序,提示Standard-mode switcher is not running

鼠标驱动

使用dualmous.drv驱动时,打开控制面板会出现general protection fault,导致控制面板打不开。后来发现可以使用vbmouse.drv来解决。

vbmouse是一个给VMware、VirtualBox开发的鼠标驱动,可以在这些虚拟机里实现Win3.x鼠标无缝切换,当然也可以作为通用鼠标驱动来用。它包括vbmouse.exe的DOS鼠标驱动,以及用于Win3.x的vbmouse.drv。将vbmouse.drv拷贝到Win3.1的System文件夹,把System.ini中的Mouse.drv=的值改为vbmouse.drv即可。这个vbmouse.drv可能是调用DOS下的鼠标驱动来实现的,单独用时需要先在DOS下启动vbmouse.exe。而Windows 9x的VDM(Virtual DOS Machine)是提供了鼠标驱动的,因此可以直接使用。

声卡驱动

如果是Sound Blaster Pro或其兼容声卡,直接在控制面板的驱动程序里添加即可。如果是其他声卡驱动,不一定能支持。需要注意的是,启动Win3.x后,切换回Win9x时会没有声音,因为声卡设备已经被占用了。

显卡驱动

一句话:不建议安装显卡驱动,使用默认vga.drv最好。大部分显卡驱动与Win31.exe不兼容。S3驱动和Cirrus驱动的一些版本不兼容标准模式。试过VBESVGA.DRV通用驱动,但也不兼容,会卡死在Starting Windows 3.1...

尝试过成功的驱动是通用SVGA驱动,就是之前只256色的那个通用驱动。但是,在启动Win3.x后无法再切换回Win95,如果尝试按Win键或双击“Return to Windows 95”后使Win9x的画面变黑,只剩下一个鼠标指针,但系统依然在运行。按Alt-Tab切换回Win3.x时也是黑屏。

中文版Windows 3.1/3.2

win31.exe启动东亚语言Windows 3.x时会出现灰屏和沙漏状的鼠标指针,但随后很快就退出了。这说明有些组件可能不兼容。一开始,我尝试替换Shell,但无济于事。后来把User.exe替换为英文版本之后可以启动了,但系统出现了一些乱码的情况,程序组的字体大小也变小了。并不是完全乱码,标题栏、菜单栏乱码,但一些对话框内容和按钮又正常…

对于这种情况,目前可以安装第三方中文软件,例如RichWin 97。(有高人能patch user.exe就最好了。)之前尝试过中文之星2.0,但在中文系统里使用它并没多大作用,因为系统内码本身就是GB2312且支持中文显示。安装完RichWin 97后也是这样,不过当你把系统内码改为GBK或CJKGB后,它的作用就出来了。

不过,在退出Win3.x系统后回到Windows 9x会收到这样的提示:

而且使用中文Win3.x系统在临时切换回Win9x时翻车的概率比英文系统大。总的来说还是很鸡肋的。

结语

Windows 95或许就是“买一送一”的系统。它与Windows 3.x是高度兼容的,大部分Win3.x应用程序能在Win95上完美运行,甚至许多驱动都能兼容Win3.x的。作为过渡,Win95也提供了Win3.x程序管理器界面,虽然很鸡肋。

但要让Win9x与Win3.x共存却不太容易。Win31.exe引导器虽然证明了Win3.x是可以运行在Win9x的DOS虚拟机上的,但是局限性太大,非常不实用。而使用PIF快捷方式来快速切换两个系统,实际上相当于重启了两个系统,只是无需手动退出到DOS再加载Win3.x。而且在DOS 7.1和DOS 8.0内核的Win9x时需要额外步骤。

Win9x与Win3.x完美共存?或许可以考虑DOSBox吧(笑

编辑于 2026-01-04 · 著作权归作者所有