使用位于网络文件夹中的 reg asm 注册的 COM 服务器无法正常工作。当您尝试创建对象时,会收到错误“自动化错误”。如果 dll 位于本地磁盘上,则一切正常。
附加信息:
.Net 3.5编写的COM库
通过 VB 宏访问 COM
图书馆有一个强大的名字
使用位于网络文件夹中的 reg asm 注册的 COM 服务器无法正常工作。当您尝试创建对象时,会收到错误“自动化错误”。如果 dll 位于本地磁盘上,则一切正常。
附加信息:
.Net 3.5编写的COM库
通过 VB 宏访问 COM
图书馆有一个强大的名字
将 COM 服务器放在网络共享上是自找麻烦。当映射的驱动器号不再映射或映射到其他地方时,它将随机失败。您至少需要到服务器的 UNC 路径(如\\machine\folder\etc
),不太确定您是否会使用 /codebase 选项从 Regasm.exe 中得到它。验证注册表项值 HKLM\Software\Classes\CLSID{guid}。请确保您使用了 /codebase,没有它就无法工作。
信任可能是一个问题,使用 fuslogvw.exe 来查看发生了什么。您需要 caspol.exe 来分配信任。
然后是依赖的 DLL,Windows 和 CLR 都无法找到它们。要查看实际情况,请使用 SysInternals 的 ProcMon 实用程序。您将看到 COM 浏览注册表项并搜索 DLL,观察失败的调用。
可能是该组件需要完全信任,而您没有运行 .net 4.0。在旧版本中,除非您手动更改权限集,否则不会授予网络位置完全信任。