Laden...

Die COM-Klassenfactory für die Komponente mit CLSID...

Erstellt von Marcel# vor 11 Jahren Letzter Beitrag vor 11 Jahren 33.489 Views
M
Marcel# Themenstarter:in
19 Beiträge seit 2012
vor 11 Jahren
Die COM-Klassenfactory für die Komponente mit CLSID...

Hi,

ich habe ein 3rd Party Programm auf das ich per COM Zugreife,
die COM Aufrufe hab ich von einem VBA beispiel abgeschrieben und angepasst.
den Verweis auf die tlb des 3 Programmes habe ich hinzugefügt und dieses ist an meinem Win XP PC auch registriert.

Nun erhalte ich den Fehler:> Fehlermeldung:

Die COM-Klassenfactory für die Komponente mit CLSID {744C513B-1EB6-4DA6-89E8-864C87E34A7E} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80040154 Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

wenn ich die anwendung auf einem anderen Rechner ausführen will.
Ich habe geprüft dass die 3rd Party Anwendung registriert installiert und gleiche version hat, .net auch.
eine CLSID mit der angegebenen Nummer konnte ich auf keinem der PCS finden weder in der registry noch in der verwaltung unter com objects noch mit einem viewer (regdll viewer)

das VBA skript von dem ich viel abgeschrieben habe funktioniert makellos auf beiden systemen. Ich habe mich auch schon an den Hersteller ( direkt programmierer) der 3rd Party Anwendun gewandt.

bitte helft mir ich bin total verzweifelt mein programm ist ( vom prinzip her) fertig aber ich kann es nciht releasen

platform ist auf x86 gestellt

ich hab die verweise inklusive pfad von dem vba beispiel und meiner c# anwendung verglichen sitmmen exakt überein.

//edit: Rechtschreibung und danke für das fehlercode tag.

N
54 Beiträge seit 2011
vor 11 Jahren

Hallo,

ich bin mir jetzt nicht 100 pro sicher aber du solltest den Eintrag in der registry finden, und wenn nicht muss er glaube ich hinzugefügt werden.

ich beziehe mich auf den link hier: How to repair COMException error 80040154?

vielleicht könnten dir auch die beiden links helfen:
Error 80040154 (Class not registered exception) when initializing VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll)

COM Error 80040154

gruß

mfg

M
Marcel# Themenstarter:in
19 Beiträge seit 2012
vor 11 Jahren

Hallo Danke für deine Mühe,

ein bischen hat mich das jetzt schon weitergebracht.

Also in dem VBA ist exakt 1 TLB der 3rd Party App als verweis gesetzt,
und einmal OLE Automation (?) habe ich beides auch genau so in meinem Projekt drin.

In der Registry:
die CLSID gibt es unter HKEY_CLASSES_ROOT 3rdpartyappname.objectname unter dem eintrag CLSID, wenn ich diese dort ändere hat das aber keine Auswirkung auf den angezeigten Fehler, im CLSID Ordner gibt es diese nicht,
lege ich sie mit einem Platzhalter an wird der Platzhalter korrekt ausgeführt und es gibt keine Fehlermeldung.

Jetzt stellensich natürlich 2 Fragen:

Wieso funktioniert das VBA trotzdem?

Wie muss so ein CLSID Eintrag korrekt aussehen? Ich hab jetzt schon 4 Stunden einfach wild rumprobiert aber es funktioniert trotzdem nicht 😦 ausser dass ich es irgendiwe geschafft hab auf dem system wo es vorher leif es auch noch platt zu kriegen 😃

tia

N
54 Beiträge seit 2011
vor 11 Jahren

Hallo,

hier ein zitat von einer webseite das vll hilft:

In der Registry können Sie unter HKEY_CLASSES_ROOT\CLSID beliebige neue Class-ID anlegen. Wichtig ist dabei, dass diese ID noch nicht vorhanden ist. Eine Class-ID besteht immer aus 8-4-4-4-12 Hex-Ziffern. Damit Sie nicht zufällig eine ID anlegen, die bereits verwendet wird, sollten Sie von hinten hochzählen, eine mögliche ID wäre also {00000000-0000-0000-0000-000000000001}.
Quelle:
>

ich schätze mal die ID wäre die nummer von oben in der Fehlermeldung.
ist die ID in der registry vorhanden oder nicht?
wenn ja dann liegt das an was anderem denke ich.

die msdn sagt: CLSID Key

und hier noch ein anderes Forum: Wie nutzt mal "CLSID" in der Registry?

aber: NICHT ZU VIEL RUMSPIELEN AN DER REGISTRY SONST GEHT VIELLEICHT WAS KAPUTT

gruß

mfg

M
Marcel# Themenstarter:in
19 Beiträge seit 2012
vor 11 Jahren

sorry total im streß möchte aber trotzdem die lösung mit euch teilen, ist jetzt zwar vb beispiel aber in meinem c# code war es das gleiche.

finally i've got it!

some strange error but i hope it will help somebody, i ve been searching 8h a day a complete week!

works on every PC:      

[code]3dpartyApplication = CreateObject("  3dpartyApplication. Application")
Dim wert As wert
Dim data As werte
data =   3dpartyApplication .wert[/code]

works only on my office PC ^^

[code]Dim wert As 3dpartyApplication .wert
Dim data As 3dpartyApplication .werte
data = New 3dpartyApplication .werte()[/code]

same goes for my C# application