小编Joh*_*ell的帖子

为什么从 C# 启动时从 VB 调用 C# COM 对象会出现 0x80070002 错误?

我在使用 regasm.exe 注册的 dll 中有一个 C# COM 对象。我在 COM 对象上执行 createObject 操作,并在使用 cscript 运行的 vbs 脚本中调用该对象的方法。

如果我在命令行上运行它,它一切正常,创建对象通过 com.

cscript.exe c:\mypath\myvb.vbs argument
Run Code Online (Sandbox Code Playgroud)

我现在尝试从 C# 运行相同的命令。我使用 System.Diagnostics.Process 方法

ProcessStartInfo si = new ProcessStartInfo();
si.Filename = "cscript.exe";
si.Arguments = "c:\mypath\myvb.vbs argument";
Process exe = ProcessStart(si);
...
Run Code Online (Sandbox Code Playgroud)

当我以这种方式运行时,出现 0x80070002 错误,这基本上是一个文件未找到错误。我不明白为什么它与 C# 和命令行不同。

编辑 - 更多信息

我正在 64 位操作系统上运行。C# COM dll 是使用“AnyCPU”构建的。我用的是64位regasm。我使用的cscript来自c:\windows\system32,所以它是64位版本。

在命令行中,如果我故意使用 32 位版本的 cscript,我也会收到 0x80070002 错误。这让我怀疑 c# 的问题是相关的,但我仍然不明白。

c# com vbscript com-interop

2
推荐指数
1
解决办法
1460
查看次数

标签 统计

c# ×1

com ×1

com-interop ×1

vbscript ×1