【问题标题】:Getting "Activex Component Cant Create Object"获取“Activex 组件无法创建对象”
【发布时间】:2012-07-10 20:07:39
【问题描述】:

我正在尝试从 VB 脚本代码调用 C# 函数,我收到“Activex 组件无法创建对象”错误。

我做了以下事情。

  1. 使用 ProgID 创建了类库,以及 Comvisible True 和强命名
  2. 使用 RegAsm.exe /codebase dllpath 注册了 dll(Dll 注册成功,我可以在 Registry 中看到)
  3. 使用VB脚本代码创建对象并调用C#函数如下。
Option Explicit
Dim testwfhandler
Set testwfhandler= CreateObject("CoreComponentWorkflow.WorkflowHandler")
If Not testwfhandler Is Nothing Then
    Call testwfhandler.test()
End If
Set testwfhandler= Nothing

我正在从我的服务器中安装的第三方应用程序(Tridion 工作流程)执行此 VB 脚本。

不知道为什么会出现上述错误,当我直接从服务器执行相同的代码时,它工作正常。

test() 这个函数只会创建一个日志文件并在其中添加一些文本。

【问题讨论】:

  • regasm.exe 有两个版本,一个 32 位版本和一个 64 位版本。在 64 位操作系统上很重要,请选择正确的操作系统。或两者兼而有之。
  • 我在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 这个位置使用 regasm.exe
  • 另一个,C:\Windows\Microsoft.NET\Framework 目录,32 位版本 .NET 的主目录
  • 非常感谢汉斯 它可以工作:-)

标签: c# com registry


【解决方案1】:

答案已经通过 cmets 提供,但我想通了 提供一个真实的答案是有意义的,以便其他人可以轻松找到它 返回。

根据加载/执行 VBScript 的方式,您应该使用 32 位或 64 位版本的 RegAsm.exe 注册 DLL。

在 64 位操作系统上,您应该可以在 C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe 中找到 32 位版本的 regasm

并且应该在 64 位版本的 regasm 中, C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe

如果您想在 64 位机器上以 32 位模式自己运行 VBScript,请参阅How do I run a VBScript in 32-bit mode on a 64-bit machine?

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多