如何使旧的VB6应用程序在Windows Vista和Windows 7中运行?

如何使旧的VB6应用程序在Windows Vista和Windows 7中运行?,windows,vb6,dependencies,Windows,Vb6,Dependencies,我有一个旧的VB6应用程序,我仍然试图支持。一些用户报告说,在Vista或Windows7中运行应用程序时出现奇怪的崩溃。其中一次崩溃后,日志文件没有显示任何内容,但客户报告,如果他们看到任何内容,错误消息会显示“OLE某物…” 在我自己的Vista或Windows7设备上运行程序时,我从未能够重现这些崩溃,因此我基本上没有关于问题所在的信息 我怀疑VB6应用程序所依赖的数万亿DLL中的一个或多个版本存在问题。该应用程序还使用lame_enc.dll,它引入了更多的依赖项 我猜这是VB6应用程序

我有一个旧的VB6应用程序,我仍然试图支持。一些用户报告说,在Vista或Windows7中运行应用程序时出现奇怪的崩溃。其中一次崩溃后,日志文件没有显示任何内容,但客户报告,如果他们看到任何内容,错误消息会显示“OLE某物…”

在我自己的Vista或Windows7设备上运行程序时,我从未能够重现这些崩溃,因此我基本上没有关于问题所在的信息

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


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

让用户在XP兼容模式下运行应用程序。只需将快捷方式拖到桌面上,右键单击“属性”。然后在兼容性选项卡上,将其设置为“在兼容模式下运行:”并选择“Windows XP(Service Pack 3)”。 以及“禁用高DPI设置上的显示缩放”。
看看这是否有帮助。如果兼容模式不起作用,那么也有可能。这将在XP虚拟机中虚拟化整个环境,但也允许它与主机操作系统交互。不过,它只适用于Windows 7。

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

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

  • 大多数新电脑都会预装Windows 7,而大多数由于Vista周围的FUD而跳过升级到Vista的客户对从XP升级到Windows 7非常感兴趣

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


    • 我也会投票支持XPMode

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


      此外,我们过去在编写注册表时遇到了一些问题,用户没有适当的安全权限,这导致了类似的问题。如果有这些函数,您可以检查它们的代码。

      一个选项是联系Microsoft技术支持。Windows7上的VB6运行时。您可能需要为“支持事件”付费:或者它可能是免费的,例如,如果您有MSDN订阅(获得MSDN订阅是个好主意)。

      请尝试像Installshield这样的第三方安装程序。我有一个VB6应用程序,它没有使用原始安装程序在Win 7上正确安装和运行,但当我使用最新版本的Installshield安装它时,它现在运行良好。

      好提示。我岳父买了一台Windows7/64的新笔记本,我建议他不能运行很多旧东西。结果证明我是对的。现在他运行XP虚拟机来运行他的旧东西,他很高兴。谢天谢地,64位允许您添加更多RAM,这样您就可以为64位中无法运行的东西运行虚拟机。嘿,等一下……@MusiGenesis。谢谢你接受这个答案。我很好奇。您是否与Microsoft联系,他们是否提供了帮助?我从未在Windows 7上测试过他们对VB6的支持承诺,我想知道让他们提供帮助有多容易。我想事情已经从6年前开始了,但你是否碰巧以管理员身份尝试运行你的应用程序?(我假设安装程序是以管理员身份运行的。)