在VB6中开发的分发Visio插件

问题描述 投票:1回答:2

我有旧的VB6插件(Visio)源代码,在编译时会生成DLL。我需要将此dll分发给最终用户,但是当我在用户PC上以管理员身份运行以下命令时:

regsvr32 MyAddin.dll

它抛出:

The Module "MyAddin.dll" was loaded but the call to DllRegisterServer failed with error code 0x80004005.

为了调试,我创建了一个新的VB6外接程序项目,在Connect.Dsr中将“应用程序”更改为“ Microsoft Visio”。并尝试将此dll安装到具有Visio的新Windows 10 VM。仍然出现相同的错误。

由于此dll在我的PC上运行,并且我的PC与VM /用户PC之间的唯一显着差异是VB6 Enterprise IDE,因此我在VM上安装了“ Visual Basic 6 Enterprise”,之后我就可以将dll注册为好。显然,我不能要求最终用户安装Visual Basic 6 Enterprise,如何知道“ Addin”项目模板的依赖关系?还是应该在安装程序中捆绑VB 6 Enterprise的最低限度文件?

这是生成的dll的依赖关系的屏幕快照,这里没什么好看的enter image description here

vb6 office-addins visio
2个回答
2
投票

Windows错误“ 0x80004005”尤其在由于不可预见的原因而拒绝用户访问应用程序,服务或设备的情况下发生。

https://docs.microsoft.com/en-us/sysinternals/downloads/procmon中的过程监视器可能会有所帮助。以管理员身份运行它,创建一个适当的过滤器,然后查看是否弹出有用的东西。

Procmon filter for regsvr32


2
投票

发现VB6 Office加载项取决于加载项设计器对象库(msaddndr.dll,并且该库在Office 2013之后不可用

© www.soinside.com 2019 - 2024. All rights reserved.