旧的16位应用程序间歇性地在WIN87EM.DLL中导致GPF

时间:2012-05-09 07:21:22

标签: windows virtualbox 16-bit

我有一个旧的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机箱访问计算机。

我得到的错误是“PROGRAM在地址:0001:02C9的WIN87EM.DLL中导致一般保护错误”。令人讨厌的是,它有时会起作用,有时却不起作用,使故障排除更令人沮丧。

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

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

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

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

视频驱动程序win87em.dll

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

  1. 左键单击屏幕左下角的“开始”按钮。
  2. 右键单击“我的电脑”,然后左键单击“属性”。
  3. 左键单击顶部显示硬件
  4. 的选项卡
  5. 左键单击“设备管理器”按钮。
  6. 左键单击列表顶部附近的“显示适配器”旁边的+号。
  7. 右键单击“显示适配器”下展开列表中显示的项目,然后左键单击“禁用”。
  8. 左键单击是按钮,显示Windows询问您是否确定要禁用它时。
  9. 左键单击“否”按钮,当Windows询问您是否要重新启动时。
  10. 对显示适配器下列出的每个项目(通常只有一个或两个)
  11. 重复禁用过程
  12. 重启PC,win87em.dll常规保护错误错误应该消失。
  13. 这仅适用于Windows XP上的用户。列出的显示适配器很可能会显示为Intel G41内部显示适配器,但它可能是另一个Intel设备。如果这不能解决问题,则可能是导致问题的打印机驱动程序错误。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

这个问题已经过时了,但我在Windows 7上运行原生的一些16位工厂自动化软件时,确实遇到了win87em.dll崩溃。按照HIDE87.com的方法编辑autoexec.nt我能够使软件停止崩溃,以便我可以进行编辑。

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

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

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

    lh%SystemRoot%\ system32 \ HIDE87.com

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

      REM修复win87em.dll中的Gen.保护错误

      1. 将更改保存到autoexec.nt并重新启动电脑。

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

在虚拟机的情况下 - VM软件的vxBOX(已测试)(可能) 您只需关闭VX BOX选项的处理器部分中的所有para虚拟化选项。 像魔术一样工作!