繁体   English   中英

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

[英]0x800a01ad - Microsoft VBScript runtime error: ActiveX component can't create object

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

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")

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

问题是我们处理 32 位和 64 位架构都很复杂,所以想到了几件事。

你是如何运行脚本的

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

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

如果regasm.exe没有使用 64 位注册表注册类,那么CreateObject将永远找不到 prog id MyDll.TestClass

检查这篇文章,看看您是否可以在注册表中看到类,它详细说明了要检查 32 位和 64 位的各个位置。


有用的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM