Wie man dieses Problem beheben COMException - "Klasse nicht registriert (Ausnahme von HRESULT: 0x80040154"
Ich habe eine VB.NET Projekt, und es funktioniert gut auf meinem deveelopment Maschine (natürlich :-)), aber auf zwei verschiedenen Rechnern getestet habe ich das auf, bekomme ich die folgende Fehlermeldung, wenn ich versuche zu öffnen, eine Besondere form. Alle drei Computer (einschließlich meiner dev Maschine, die funktioniert) Windows 7 in der 64-bit-Maschinen, zwei Professional Edition (einschließlich mir) und das Dritte ist Home Basic.
Mein Verdacht ist, dass es hat etwas zu tun mit Windows Media Player oder Adobe SWF-player-Steuerelemente, die ich eingefügt haben. Hier ist der Fehler:
System.Runtime.InteropServices.COMException (0x80040154): Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
at System.Windows.Forms.AxHost.CreateInstance()
at System.Windows.Forms.AxHost.GetOcxCreate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()
at WizoDesktop.FormPlayer.c4cf84dbbc00986a0b43ce266bdec20d7()
at WizoDesktop.FormPlayer..ctor()
at A.c237671a6e3a2745adc05bbdc0150506d.cff280b017b22ca351191a6adb2feeae4()
at System.Windows.Forms.Command.Invoke()
at System.Windows.Forms.Control.WmCommand(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
- Vorausgesetzt, Sie haben die Plattform Ziel gesetzt x86, diese Fehlermeldung bedeutet nichts anderes, als dass das ActiveX-Steuerelement ist nicht installiert auf dieser Maschine. Hunderte von Fragen zu diesem Fehler-code schon.
- Ich habe gesucht durch StackOverflow ebenso wie andere sites, und die Antworten, die alle scheinen befassen sich mit HTMLED und andere dlls. Auch ich bin mit .Net integrierte installer - sollte es nicht kümmern, installieren Sie die entsprechenden ActiveX-Steuerelemente (ich nehme an Windows Media Player ist in der .Net Framework).
- Nein, die .NET installer, der sicherlich nicht zum installieren von ActiveX-Komponenten, die es installiert .NET framework-Komponenten. WMP ist ein Windows-Komponente, können Sie nicht installieren Sie es. So hohe Quoten für die Adobe Sachen.
- Ich schaute auf meinen installer und es hat die Interop.ShockwaveFlashObjects.dll und auch Interop.WMPLib.dll Oder ist es nicht dies, was wir sprechen?
- Sicher, das sind die .NET Wrapper für diese ActiveX-Komponenten. Nur die Wrapper, nicht die Komponente selbst. Sie müssen installieren Sie mindestens Flash auf dem Rechner.
- bingo! Deine Vermutung war korrekt, entfernen Sie die Flash-Steuerung beseitigt die Fehler. Jetzt muss ich herausfinden, wie die Umsetzung der angebotenen Lösung von @ Kratz unter
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Hans sagt, es tritt auf, weil die Programme, die Sie verwenden (WMP, Flash) sind wahrscheinlich nicht auf dem Zielcomputer installiert. Die einfachste Sache, die Sie tun können, einfach zu versuchen, dies zu erkennen und den Benutzer warnen, dass Sie installieren müssen, um diese Programme für volle Funktionalität. So etwas wie dieses:
Dann könnte man auch ein flag setzen, so dass können Sie vermeiden, laden Sie die windows mit dem Steuerelement, um dem Benutzer zu sehen, die Fehler.
Ich bin mir nicht sicher, ob das möglich ist, aber wenn Sie die ClickOnce-Bereitstellung können Sie hier schauen, für die Möglichkeit, das hinzufügen von benutzerdefinierten erforderlichen Monteure zu Ihrem Programm. http://msdn.microsoft.com/en-us/library/ms165429(VS.80).aspx
Bearbeiten: Als Hans wies darauf hin, meine Try Catch ist ein wenig faul vor, Sie sollten immer versuchen, sehr spezifisch sein, wenn Sie versuchen zu behandeln mit einem bestimmten Fehler. So etwas wie dies für diesen Fall.
Load
Ereignis (zumindest dann, wenn die Kontrolle nicht auf die Start-Formular). Auf einer seitlichen Anmerkung, es gibt wohl bessere Wege, um zu sehen, ob die Kontrolle, die Sie benötigen, installiert ist (registry-check, vielleicht), das ist nur ein schnell-check, um zu sehen, wenn das Steuerelement erstellt werden kann.