获取“Activex组件无法创建对象”

获取“Activex组件无法创建对象”

问题描述:

我想从VB脚本代码调用C#函数,我得到“Activex组件不能创建对象”错误。获取“Activex组件无法创建对象”

我做了以下工作。

  1. 类创建库的ProgID,并标记有ComVisible特性真强命名
  2. 注册使用RegAsm.exe /代码库DllPath的(DLL注册成功,我能看到,在登记处)
  3. 创建对象的DLL使用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 

是从安装在我的服务器将第三方应用程序(外表套上工作流程)执行这个VB脚本。

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

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

+0

有两个版本的regasm.exe,一个32位和一个64位版本。在64位操作系统上的问题,选择正确的。或两者。 – 2012-07-11 10:37:40

+0

我在C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319中使用regasm.exe这个位置 – user1428019 2012-07-11 10:51:33

+0

另一个是C:\ Windows \ Microsoft.NET \ Framework目录,它是32位版本.NET – 2012-07-11 10:54:49

答案已经通过发表了,但我想它 有意义的声讯真正的答案,以便其他人可以很容易地找到它 回来。

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

在64位的操作系统,你会发现在regasm的32位版本,C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe

和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?