【发布时间】:2010-12-08 14:29:06
【问题描述】:
使用位于网络文件夹中的 reg asm 注册的 COM 服务器无法正常工作。当您尝试创建对象时,会收到错误“自动化错误”。如果 dll 位于本地磁盘上,则一切正常。
附加信息:
.Net 3.5编写的COM库
通过VB宏访问COM
库有一个强名称
【问题讨论】:
标签: .net .net-3.5 com regasm network-shares
使用位于网络文件夹中的 reg asm 注册的 COM 服务器无法正常工作。当您尝试创建对象时,会收到错误“自动化错误”。如果 dll 位于本地磁盘上,则一切正常。
附加信息:
.Net 3.5编写的COM库
通过VB宏访问COM
库有一个强名称
【问题讨论】:
标签: .net .net-3.5 com regasm network-shares
将 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。在旧版本中,除非您手动更改权限集,否则不会授予网络位置完全信任。
【讨论】: