我们有一个用VB6构建的ERP应用程序运行得很好,直到我们的一些客户将所有系统升级到Win7。
该软件的编程方式使其能够在运行时注册一些基于COM的插件(在插件文件夹中找到)。现在,当用户在未设置兼容模式和运行管理员设置的情况下运行软件时,它将失败并崩溃。
我知道我们可以通过右键单击程序可执行文件然后转到其属性来手动设置兼容模式以及运行管理员。但这看起来非常不专业。
我认为可以通过某种方式告诉Win 7以兼容模式和以管理员身份运行自动运行软件。
请帮帮我。
答案 0 :(得分:1)
兼容性是一种管理功能,而不是开发或部署功能。最好尽可能修复应用程序,尤其是删除任何提升要求。
有很多工具可以调查问题,以便您可以纠正这些问题。然而,在运行时全局注册“插件”是一个令人讨厌的问题。除非注册表虚拟化可以重定向,否则VB6组件自注册始终是全局的。为什么不为安装期间可以运行一次的插件创建安装程序?
有些方法可以手动设置兼容性,即使是安装的一部分 - 尽管微软不鼓励这样做。也许看看:
Compatibility Fix Database Management Strategies and Deployment
但是,所需的努力可能会更好地用于解决问题。随着时间的推移,支持成本会降低。
答案 1 :(得分:1)
正如其他答案所说,你不应该一直运行。 如果要在启动后注册插件(作为普通用户),可以使用带有“runas”动词的ShellExecute()来运行regsvr32.exe,或者使用COM elevation discussed many times before
答案 2 :(得分:0)
您可以通过在Application Manifest中指定应用程序来指示应用程序必须以管理员身份运行,该文件位于您可以嵌入或部署应用程序的xml文件中。
一旦您的应用程序以管理员权限运行,它应该能够注册并加载插件。您不需要在兼容模式下运行来访问COM插件。