я пытаюсь запустить COM.Scanner проект, но исключение последующих брошено:.NET 0x80040154 (REGDB_E_CLASSNOTREG): Получение COM фабрики классов для компонента с CLSID {XXXX}
Retrieving the COM class factory for component with CLSID {9F8D4F16-0F61-4A38-98B3-1F6F80F11C87} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Как Interop.CoreScanner
является .NET assembly Я использую 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 (64)
- Visual Studio 2015
ВОПРОС
- Это пахнет, что есть недостающие данные о реестре, но я не знаю.
- Если у вас есть правильный путь, почему
regasm
не способен генерировать недочетых записей в реестре?
Никогда, * никогда *, ** никогда ** не регистрируйте библиотеку interop. Вы должны зарегистрировать собственный COM-компонент, используя Regsvr32.exe или (желательно) установщик поставщика. Если у вас нет этого установщика, тогда используйте телефон, похоже, вам нужно позвонить Зебре. Если у вас это было, то использование Regasm.exe уничтожило установку, вам придется переустановить. –
Если я не хочу, чтобы требования к клиенту устанавливали SDK, мне нужен собственный COM-компонент и зарегистрировать его с помощью Regsvr32.exe? – Joseph
Опять же, используйте телефон, чтобы поговорить с продавцом и попросить конкретный совет по установке. Лучше всего запросить модуль слияния, который вы можете интегрировать с вашим собственным установщиком. –