Ich versuche COM.Scanner Projekt, aber die Folge Ausnahme ausgelöst auszuführen:.NET 0x80040154 (REGDB_E_CLASSNOTREG): Suchen Sie den COM-Klassenfactory für die Komponente mit 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)).
Wie Interop.CoreScanner
ist ein .NET Assembly verwende ich regasm
, um die COM-Objekte zu registrieren, aber der Fehler tritt weiterhin auf.
ich gekommen, um diese guten post aber keine Antworten zu lesen, das Problem gelöst.
Diese Informationen von 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
Die erzeugte .reg
Datei mit regasm
und /regfile
Option ist:
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"
Umwelt:
- OS: 10 Fenster (x64)
- Visual Studio 2015
FRAGE
- Das riecht nach, dass es fehlende Einträge auf Registry, aber ich weiß nicht, welche.
- Wenn ich in der richtigen Weise bin, warum
regasm
ist nicht in der Lage, die fehlenden Registrierungseinträge zu generieren?
Niemals, * nie *, ** nie ** registrieren eine Interop-Bibliothek. Sie müssen stattdessen die native COM-Komponente registrieren, indem Sie Regsvr32.exe oder (vorzugsweise) das Installationsprogramm des Herstellers verwenden. Wenn Sie dieses Installationsprogramm nicht verwenden, verwenden Sie ein Telefon. Es sieht so aus, als müssten Sie Zebra anrufen. Wenn Sie es hatten, dann haben Sie die Installation mit Regasm.exe zerstört, Sie müssen es neu installieren. –
Wenn ich nicht möchte, dass die Clients ein SDK installieren, brauche ich eine native COM-Komponente und registriere sie mit Regsvr32.exe? – Joseph
Verwenden Sie erneut ein Telefon, um mit dem Anbieter zu sprechen und nach einer spezifischen Installationsempfehlung zu fragen. Es ist am besten, ein Merge-Modul zu suchen, das Sie in Ihren eigenen Installer integrieren können. –