【问题标题】:How to keep an old VB6 application running in Windows Vista and Windows 7?如何保持旧的 VB6 应用程序在 Windows Vista 和 Windows 7 中运行?
【发布时间】:2010-04-11 02:57:00
【问题描述】:

我有一个旧的 VB6 应用程序,我仍在努力支持它。一些用户在 Vista 或 Windows 7 中运行应用程序时报告了奇怪的崩溃。在这些崩溃之一之后,日志文件不显示任何内容,但客户报告错误消息说“OLE something ...”,如果他们什么都看到了。

在我自己的 Vista 或 Windows 7 机器上运行程序时,我从未能够重现这些崩溃,所以我基本上不知道问题是什么。

我怀疑这是 VB6 应用程序所依赖的无数 DLL 中的一个或多个版本的问题。该应用程序还使用 lame_enc.dll,它引入了更多的依赖项。

我猜这是 VB6 应用程序的一个常见问题(尽管我可能在 10 年前只是一个程序员)。是否有一些神奇的安装程序/更新程序可以确保所有 VB6 依赖项都是 VB6 应用程序正常运行所需要的?

【问题讨论】:

    标签: windows vb6 dependencies


    【解决方案1】:

    如果Compatibility Mode 不起作用,那么还有XP Mode。这在 XP 虚拟机中虚拟化了整个环境,但也允许它与主机操作系统交互。但它仅适用于 Windows 7。

    【讨论】:

    • 好提示。我的岳父买了一台装有 Windows7/64 的新笔记本电脑,但我的建议是,他不能运行很多旧东西。结果证明我是对的。现在他运行 XP VM 来运行他的旧东西,他很高兴。谢天谢地,64 位允许您添加更多 RAM,因此您可以负担得起为 64 位无法运行的东西运行虚拟机。嘿,等一下......
    【解决方案2】:

    让用户在 XP 的兼容模式下运行应用程序。只需将快捷方式拖到桌面上,右键单击,属性。然后在兼容性选项卡上,将其设置为“以兼容模式运行:”并选择“Windows XP (Service Pack 3)”。 并且还“在高 DPI 设置下禁用显示缩放”。 看看是否有帮助。它只是可能。

    【讨论】:

      【解决方案3】:

      尝试使用 Installshield 等第三方安装程序。我有一个 VB6 应用程序,它没有使用原始安装程序在 Win 7 上正确安装和运行,但是当我通过最新版本的 Installshield 安装它时,它现在可以正常工作了。

      【讨论】:

        【解决方案4】:

        一种选择是联系 Microsoft 技术支持。 Windows 7 上的 VB6 运行时 is fully supported。您可能需要为“支持事件”付费:或者它可能是免费的,例如,如果您订阅了 MSDN(最好订阅一个)。

        【讨论】:

        • @MusiGenesis。感谢您接受这个作为答案。我很好奇。您是否联系过 Microsoft,他们是否有帮助?我从未在 Windows 7 上测试过他们的 VB6 支持承诺,我很想知道让他们提供帮助的难易程度。
        【解决方案5】:

        我们遇到了一些尝试在 Windows 7 上运行我们的应用程序的客户的奇怪行为。在一种情况下,应用程序的主工具栏(一个标准的 MSComctlLib.Toolbar 控件)完全是空的(没有任何图标或出现分隔条)。我们很困惑。该程序没有崩溃,只是图标根本不存在。应用程序的错误日志中没有任何内容,Windows 事件日志中也没有任何内容。我们甚至确保将应用程序配置为在 Windows XP 兼容模式下运行,但没有任何问题。据我们所知,安装和注册了正确的 DLL,并且从那时起我们在相同版本的 Windows 7 上运行相同的应用程序,没有任何问题。

        在一个有点讽刺的决定中,不久之前我们决定正式支持 Windows 7,同时声明我们不会正式支持 Vista(尽管有些客户在 Vista 上运行该应用程序没有任何问题)。起初,这听起来像是一个奇怪的决定,但有两个很好的理由说明这是有道理的:

        • 大多数新计算机都预装了 Windows 7,并且由于围绕它的所有 FUD 而跳过升级到 Vista 的大多数客户对从 XP 升级到 Windows 7 非常感兴趣。

        • Windows 7 支持XP Mode,它允许您在运行 Windows XP SP3 的虚拟机中运行应用程序。我们的一些客户已经走这条路,没有人报告以这种方式运行我们的应用程序有任何问题。因为您是在实际的 Windows XP 环境中运行应用程序,所以出错的可能性要小得多。

        【讨论】:

        • 我认为事情已经从 6 年前开始,但您是否碰巧尝试以管理员身份运行您的应用程序? (我假设安装程序是以管理员身份运行的。)
        【解决方案6】:

        我也会投票给 XPMode。

        但是,如果您仍然有问题,Dependency Walker 是一个很好的免费工具,它可以扫描 exe/dll/ocx 并构建所有依赖模块/dll 的树形图。即使没有这个问题,它也有助于解决安装问题。

        http://www.dependencywalker.com/

        此外,我们过去曾遇到过一些问题,即写入注册表的项目在用户没有适当的安全权限的情况下会导致类似问题。如果你有这些函数,你可以检查它们的代码。

        【讨论】:

          猜你喜欢
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-20
          • 2013-03-09
          • 2010-10-01
          • 2011-07-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多