0x800a01ad - Microsoft VBScript运行时错误:ActiveX组件无法创建对象

时间:2016-04-26 10:52:09

标签: c# vbscript com interop

我使用下一代码和设置创建了类库项目:

using System.Runtime.InteropServices;

namespace MyDll
{
    [ComVisible(true)]
    public class TestClass
    {
        [ComVisible(true)]
        public string[] SomeFunc(string path)
        {
            return new[] {"1","7","9"};
        }
    }
}

同时检查

  

'在属性/应用程序/程序集信息中使程序集COM可见'

  在属性/构建

'注册COM互操作'

在我的VBscript中我得到了异常

  

“0x800a01ad - Microsoft VBScript运行时错误:ActiveX组件   无法创建对象:'MyDll.TestClass'“

尝试从dll创建对象时:

Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")

1 个答案:

答案 0 :(得分:1)

您可能正在使用regasm.exe将类添加到注册表中但在注册表中的位置?

问题是我们有处理32位和64位架构的复杂性,所以我想起了几件事。

你是如何运行脚本的?

Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")

如果您使用默认的wscript.exe Windows Scripting Host来运行脚本,那么它将默认为OS体系结构,在大多数现代安装中它将是64位操作系统。

如果regasm.exe未使用64位注册表注册该类,则CreateObject将永远不会找到编号MyDll.TestClass

检查this article并查看是否可以在注册表中看到Class,它详细说明了检查32位和64位的各种位置。

有用的链接