.NET 0x80040154(REGDB_E_CLASSNOTREG):检索具有CLSID {XXXX}的组件的COM类工厂

时间:2016-07-18 19:00:47

标签: c# .net com regasm

我正在尝试运行COM.Scanner项目,但抛出了以下异常:

  

检索具有CLSID {9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}的组件的COM类工厂由于以下错误而失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。

Interop.CoreScanner是.NET程序集我使用regasm来注册COM对象,但错误仍然存​​在。

我来读这个好post,但没有一个答案解决了这个问题。

这是Corflags

的信息
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.6.81.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

生成的.reg文件包含regasm/regfile选项:

REGEDIT4

[HKEY_CLASSES_ROOT\CLSID\{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}\InprocServer32]
"Class"="CoreScanner.CCoreScannerClass"
"Assembly"="Interop.CoreScanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///D:/Github/miscelaneas/COM.Scanner/libs/Interop.CoreScanner.dll"

[HKEY_CLASSES_ROOT\CLSID\{9F8D4F16-0F61-4A38-98B3-1F6F80F11C87}\InprocServer32\1.0.0.0]
"Class"="CoreScanner.CCoreScannerClass"
"Assembly"="Interop.CoreScanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///D:/Github/miscelaneas/COM.Scanner/libs/Interop.CoreScanner.dll"

环境:

  • 操作系统:Windows 10(x64)
  • Visual Studio 2015

问题

  • 这有点像注册表上缺少条目,但我不知道哪个。
  • 如果我以正确的方式为什么regasm无法生成缺少的注册表项?

1 个答案:

答案 0 :(得分:3)

缺少的组件与Motorolas seems一起安装EMDK SDK。安装SDK应该可以解决您的问题。

注册互操作程序集不会带你进一步,因为互操作程序集只是一个包含COM组件类型定义的库,因此您可以使用静态类型和早期绑定编译C#代码。需要注册的实际内容是底层的COM组件。要注册,只有在COM组件是用.NET编写的实际COM组件时才使用regasm.exe。否则,您需要使用经典regsvr32.exe(或使用组件供应商的安装程序)。