虚拟机中c#程序提示flash组件未注册解决方案

环境:虚拟机

程序:c#(winfrom)+flash(flex)

引用dll:Interop.ShockwaveFlashObjects.dll


错误堆栈:************** 异常文本 **************
System.Runtime.InteropServices.COMException (0x80040154): 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
   在 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
   在 System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
   在 System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
   在 System.Windows.Forms.AxHost.CreateInstance()
   在 System.Windows.Forms.AxHost.GetOcxCreate()
   在 System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
   在 System.Windows.Forms.AxHost.CreateHandle()
   在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   在 System.Windows.Forms.Control.CreateControl()
   在 System.Windows.Forms.Control.WmShowWindow(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


经过一翻折腾,最终确认是由于虚拟机中没有默认注册 Flash.ocx。

解决方案: 首先,找到工具栏选项,找到你引用的对象,这里是ShockwaveFlashObjects,查看路径,并记录下来。


然后,在虚拟机的系统盘中找到该目录,并与本地电脑目录进行比较,如果没有则把Flash32_11_6_602_168.ocx拷贝到虚拟机(注意:.ocx文件的版本要保持一致,有可能是64或32位,按具体系统来定

最后就是注册Flash32_11_6_602_168.ocx文件了,注册方法:

1.打开系统开始菜单

2.

在运行中执行语句  regsvr32 C:\Windows\SysWOW64\Macromed\Flash\Flash32_11_6_602_168.ocx注意:组件路径根据照实际路径来写


问题搞定,组件未注册错误都可以按以上步骤来解决。





你可能感兴趣的:(虚拟机中c#程序提示flash组件未注册解决方案)