C# DLL文件注册问题(涉及AxInterop.WMPLib.dll等)
近日遇到问题,给客户安装软件涉及视频等音影播放,安装软件启动过程遇到这样问题:
分析报错原因:
没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)
查找原因: Interop.WMPLib.dll AxInterop.WMPLib.dll
程序内含private AxAPlayer3Lib.AxPlayer axPlayer;
最初出现问题分析思路:1.先注册两个动态库,注册失败:
两个动态库是不能直接注册。
(背景:之前软件刚接手问过上一任,软件内含迅雷看看的转码播放。
咨询结果:视频转码的过程不需要注册,视频正常播放需要视频组件注册。
经验:还有之前在很多的客户机安装上都是这样,不注册迅雷看看组件,软件都正常打开,但是视频不能播放。)
2.在客户机上出现了以上的问题,突然安装的软件报错,出现以上错误,当时认为缺少.Net组件或者某个库文件。
通过下载微软运行库文件,安装解决了,当时肯定了确实视屏播放方面的组件。
3.又有一台机器安装64位系统,打开软件报错,安装上一次的微软的运行库文件,不好使;下载新的64位的微软运行库同样不好使。
思考良久也不知道怎样解决了。
4.今天突然想到把迅雷看看组件注册一下,软件正常使用。
总结一下上边的各种状况:
1.从开始下手 AxAPlayer3Lib.AxPlayer:
动态库:将AxInterop.WMPLib.dll复制到C:\Windows\System32目录下。
系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录
打开"开始-运行-输入regsvr32 AxInterop.WMPLib.dll",回车即可解决。
下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成AxInterop.WMPLib.dll注册(win98不支持)。
copy AxInterop.WMPLib.dll %windir%\system32\
regsvr32 %windir%\system32\AxInterop.WMPLib.dll /s
@echo AxInterop.WMPLib.dll注册成功
@pause
1、在解决方案浏览器中,打开引用文件夹,当添加COM+(ActiveX)控件到程序窗体时(工具箱-右击-选择项目-COM+)
2、把添加到工具箱的COM+控件拖到窗体,会自动完成引用
3、点击选中引用的控件,在属性面板,把“独立”设置为:true
通过上面的方法,用C#制作的桌面版Aplayer应用程序,打包发布,安装程序就不用考虑aplayer的注册问题,只需要按照正常的打包方案发布应用就行了,也可以作为纯绿色的,直接拷贝debug目录里的文件到其他电脑上,也是能够运行的!