2

我有一个旧的 16 位应用程序,它是为 Windows 3.1 开发的。它执行一些计算,并且是更复杂系统的一部分。系统为程序设置输入,并收集输出结果。

不幸的是,16 位程序在此期间仍然存在,因此我们必须解决它在现代操作系统上造成的挫败感。

该系统在 Windows XP 上运行,并且在物理 Windows XP 机器上运行良好。我遇到问题的机器是在 Debian 盒子上的 VirtualBox(版本 4.1.12)上运行的 Windows XP 实例。物理计算机是 HP Proliant 服务器,采用 Quad Core Xeon 3.4 Ghz。我正在使用远程桌面从我的 Windows 7 机器访问计算机。

我得到的错误是,“程序在地址:0001:02C9 的 WIN87EM.DLL 中导致了一般保护错误”。烦人的事情是,有时它有效,有时则无效,这使得故障排除变得更加令人沮丧。

通过搜索互联网,我遇到了一些提到同样问题的网站。他们似乎都没有提供真正的解决方案,只是说 WIN87EM.DLL 提供浮点例程,并且某些打印机存在一些问题。

我已经卸载了虚拟机上的所有打印机,我还尝试安装 PDF 编写器并将其设置为默认打印机 - 以便机器上有一台打印机。我已禁用与远程桌面连接的资源共享。我已经更新了机器上的虚拟机来宾驱动程序。我还尝试在可执行文件的属性中设置与 Windows 95 的兼容性。

解决此问题的任何指示,或我可以尝试使其正常工作的方法?

4

6 回答 6

2

这个问题很老,但我有这个确切的 win87em.dll 崩溃,一些 16 位工厂自动化软件在 Windows 7 上本地运行。通过遵循 HIDE87.com 的方法并编辑 autoexec.nt 我能够使软件停止崩溃所以我可以进行编辑。

这台机器运行的是 Intel 8 系列/C220 系列芯片。我将此配置归因于崩溃,因为多年来我已经在大量其他 Windows 7 机器上使用了相同的 16 位软件。

编辑:这是我用来解决问题的步骤

  1. 从http://www.conradshome.com/win31/archive/下载 winfloat.exe
  2. 使用 7zip 打开 winfloat.exe。找到 HIDE87.com 并将其解压到桌面。
  3. 将 HIDE87.com 复制到 C:\Windows\System32\
  4. 用记事本打开 c:\windows\system32\autoexec.nt
  5. 在文件顶部,在第一组评论之后添加以下内容

lh %SystemRoot%\system32\HIDE87.com

  1. 在最后一行上方添加评论

REM 修复了 win87em.dll 中的 Gen. Protection Fault

  1. 保存对 autoexec.nt 的更改并重新启动电脑。
于 2015-04-21T14:57:44.823 回答
1

VirtualBox 4.3.16 也应该有一个修复。请参阅https://www.virtualbox.org/ticket/12646 如果您想立即修复,则必须从 OSE 源构建 VirtualBox。

更新:包含此修复程序的 VirtualBox 4.3.16 现已正式发布。

于 2014-08-20T17:15:27.520 回答
1

视频驱动程序 win87em.dll

这是我们遇到的“win87em.dll”问题的逐步解决方案。

  1. 左键单击屏幕左下角的开始按钮。
  2. 右键单击我的电脑,然后左键单击属性。
  3. 左键单击顶部显示硬件的选项卡
  4. 左键单击显示设备管理器的按钮。
  5. 左键单击列表顶部附近显示适配器旁边的 + 号。
  6. 右键单击显示适配器下展开列表中显示的项目,然后左键单击禁用。
  7. 左键单击“是”按钮,当 Windows 询问您是否确定要禁用它时显示。
  8. 当 Windows 询问您是否要重新启动时,左键单击“否”按钮。
  9. 对显示适配器下列出的每个项目重复禁用过程(通常只有一个或两个)
  10. 重新启动 PC,win87em.dll 一般保护故障错误应该会消失。

这仅适用于 Windows XP 用户。列出的显示适配器很可能显示为 Intel G41 内部显示适配器,但它可能是另一个 Intel 设备。如果这不能解决问题,则可能是打印机驱动程序损坏导致问题。

禁用视频适配器不会损害 Windows。这将使他们的计算机无法观看视频或玩 3D 游戏,但 Windows 仍然可以运行并且看起来不错。(他们可能需要在重新启动后更改屏幕分辨率。)

于 2013-12-11T20:48:45.403 回答
1

这与我在 Microsoft XP Mode 中遇到的错误相同。显然 WIN87EM.DLL 有虚拟化处理器的问题。我的解决方案:我在注册表中“卸载”了 WIN87EM.DLL 的 XP 版本(搜索并删除具有此名称的每个项目),并将一个更旧的版本复制到应用程序文件夹中。旧版本可以找到她: http: //support.microsoft.com/kb/86869/de 祝你好运!

于 2013-02-06T19:23:32.947 回答
0

我知道这是一个旧线程,但我在搜索时遇到了它,因为我在运行 VirtualBox 的 Windows XP 下遇到了同样的问题。最终我发现了以下内容:

https://communities.vmware.com/people/jmattson/blog/2012/03

这是针对 VMWare 的,似乎已经解决了这个问题,找不到任何与 VirtualBox 类似的东西,但由于 VMWare Player 是免费的,所以对于遇到此问题的任何人来说,它都是一个很好的解决方法。

于 2014-02-15T12:15:03.057 回答
0

对于虚拟机 - VM ware 的 vxBOX(已测试)(可能),您只需关闭 VX BOX 选项的处理器部分中的所有准虚拟化选项。像魔术一样工作!

于 2016-02-08T09:35:14.793 回答