首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >0x800a01ad - Microsoft VBScript运行时错误: ActiveX组件无法创建对象

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

Stack Overflow用户
提问于 2016-04-26 10:52:09
回答 1查看 3K关注 0票数 2

我创建了类库项目,其中包含了下面的代码和设置:

代码语言:javascript
复制
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创建对象时:

代码语言:javascript
复制
Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 11:11:40

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

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

你是如何运行脚本的

代码语言:javascript
复制
Dim result
Dim myObj
Set myObj = CreateObject("MyDll.TestClass")
Set result= myObj.SomeFunc("a")

如果您使用默认的wscript.exe Windows脚本主机运行脚本,那么它将默认为OS体系结构,而在大多数现代安装中,该架构将是64位OS。

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

检查一下this article,看看是否可以在注册表中看到这个类,它详细说明了检查32位和64位的各个位置。

有用的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36862784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档