【发布时间】:2015-10-14 20:13:00
【问题描述】:
我正在尝试使用以下代码创建 com 对象:
Type testlib = Type.GetTypeFromProgID("TestComApp.TestApp.TestClass");
dynamic comObj = Activator.CreateInstance(testlib);
但得到错误:
在 mscorlib.dll 中发生“System.Runtime.InteropServices.COMException”类型的未处理异常
附加信息:检索具有 CLSID {FD909333-3CD0-477F-8A7E-B8045B0B84EC} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154REGDB_E_CLASSNOTREG)。
我已尝试使用 AnyPlatform 、X86、x64 位平台以及用于 32 位和 64 位的 RegAsm 构建项目。
但仍然无法使其正常工作。我已在注册表中验证,并且具有 GUID 的类和 CLSID 存在
【问题讨论】:
-
使用 SysInternals 的进程监视器。在运行 Regasm.exe 时使用它,您可以准确地看到正在写入的注册表项。并在您运行客户端应用程序时使用它,您可以准确地看到正在读取的密钥。您看到的差异使您有力地引导您解决潜在问题。
-
ProgId 只是注册的一部分。你在 HKCR\CLSID 里有什么?