我有一个旧的VB6应用程序,我仍然试图支持。一些用户报告在Vista或Windows 7中运行应用程序时发生了奇怪的崩溃。日志文件在其中一次崩溃后没有显示任何内容,但是客户报告错误消息说“OLE something ......”,如果他们什么都看见了。
在我自己的Vista或Windows 7机器上运行程序时,我从未能够重现这些崩溃,因此我基本上没有关于问题所在的信息。
我怀疑它是VB6应用程序所依赖的一个或多个十亿个DLL中的一个或多个版本的问题。该应用程序还使用lame_enc.dll,它引入了一些依赖项。
我猜这是VB6应用程序的一个常见问题(虽然我有可能在10年前作为程序员吮吸)。是否有一些神奇的安装程序/更新程序,以确保所有VB6依赖项是他们需要的VB6应用程序才能正常运行?
答案 0 :(得分:2)
让用户在XP的兼容模式下运行应用程序。只需将快捷方式拖到桌面上,右键单击“属性”即可。然后在“兼容性”选项卡上,将其设置为“以兼容模式运行:”并选择“Windows XP(Service Pack 3)”。 还“在高DPI设置下禁用显示缩放”。 看看是否有帮助。它只是可能。
答案 1 :(得分:2)
如果Comaptibility Mode
不起作用,还会XP Mode。这会在XP虚拟机中虚拟化整个环境,但也允许它与主机操作系统进行交互。它仅适用于Windows 7。
答案 2 :(得分:1)
对于一些试图在Windows 7上运行我们的应用程序的客户,我们通常只有奇怪的行为。在一种情况下,应用程序的主工具栏(标准MSComctlLib.Toolbar
控件)完全为空(没有一个出现了图标或分隔条)。我们很神秘。程序没有崩溃,图标根本就不存在。应用程序的错误日志中没有任何内容,Windows事件日志中没有任何内容。我们甚至确保应用程序配置为在Windows XP兼容模式下运行,但没有骰子。据我们所知,安装和注册了正确的DLL,我们在同一版本的Windows 7上运行相同的应用程序,从那时起没有任何问题。
在一个有点讽刺的决定中,不久之前我们决定正式支持Windows 7,同时声明我们不会正式支持Vista(尽管有些客户在没有任何问题的情况下运行Vista上的应用程序)。起初,这可能听起来像一个奇怪的决定,但有两个很好的理由说明为什么这样做:
大多数新计算机都预先安装了Windows 7,大多数因为围绕它而无法升级到Vista的客户对从XP升级到Windows 7非常感兴趣。
Windows 7支持XP Mode,它允许您在运行Windows XP SP3的虚拟机中运行应用程序。我们的一些客户已经走了这条路,没有人报告以这种方式运行我们的应用程序有任何问题。因为您在实际的Windows XP环境中运行应用程序,所以出错的可能性要小得多。
答案 3 :(得分:1)
一种选择是联系Microsoft技术支持。 Windows 7上的VB6运行时is fully supported。您可能需要为“支持事件”付费:或者它可能是免费的,例如,如果您有MSDN订阅(最好获得一个)。
答案 4 :(得分:1)
尝试使用Installshield等第三方安装程序。我有一个VB6应用程序没有使用原始安装程序在Win 7上正确安装和运行,但是当我通过最新版本的Installshield时,它现在可以正常工作。
答案 5 :(得分:0)
我也会投票给XPMode。
但是,如果你仍有问题,Dependency Walker是一个很好的免费工具,可以扫描exe / dll / ocx并构建所有相关模块/ dll的树形图。即使没有此问题,它也有助于解决安装问题。
http://www.dependencywalker.com/
此外,我们过去曾遇到过几个问题,这些问题是用户编写注册表,其中用户没有导致类似问题的适当安全权限。如果你有这些功能,你可以检查代码。