近日遇到问题,给客户安装软件涉及视频等音影播放,安装软件启动过程遇到这样问题:

分析报错原因:

没有注册类别 (异常来自 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:

APlayer 媒体播放引擎是迅雷公司从 2009 年开始开发的音视频媒体文件播放内核。
迅雷看看播放器就是使用它作为播放内核的,目前迅雷看看播放器在PC播放器市场占有率排第一。
APlayer 有如下特征:
◆ APlayer 是 Windows 平台的播放内核
◆ 基于封闭式 DirectShow 架构 (不受Windows系统解码环境干扰)
........此处省略N多字。
 
2.之前在很多电脑上安装过迅雷看看或者其他播放器,所以组件不需要注册就就能正常播放。
 
3.新装电脑,没有相关的MediaPlay方面的组件,必然不能正常启动软件。
 
4.结论:组件的正常播放需要安装需要的组件,整个软件的启动在与是否含有MediaPlay方面的底层组件。
           再次遇到这样的问题,可以直接注册Aplay动态库 或者安装迅雷看看(或者其他的播放器)。
 
 
其它方面知识:
1.动态库注册:(在资料查阅中获得了两个新知识,以下copy来的)
   

动态库:将AxInterop.WMPLib.dll复制到C:\Windows\System32目录下。
    系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64目录
    打开"开始-运行-输入regsvr32 AxInterop.WMPLib.dll",回车即可解决。

下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成AxInterop.WMPLib.dll注册(win98不支持)。

    代码如下:
@echo 开始注册
copy AxInterop.WMPLib.dll %windir%\system32\
regsvr32 %windir%\system32\AxInterop.WMPLib.dll /s
@echo AxInterop.WMPLib.dll注册成功
@pause
 
2.C#动态库免注册调用:
    用Visual Studio.NET 2010,生成免注册程序轻而易举,然而,开发时却必须要先注册COM+控件。尽管可以无须注册COM控件来运行一个程序,但在开发免注册程序的电脑上,却必须要先注册COM组件,所以目前来说,免注册COM仅限于运行时。(也就是说,开发的时候也是需要安装Aplayer的SDK的):
   在VS中使用的步骤是:
1、在解决方案浏览器中,打开引用文件夹,当添加COM+(ActiveX)控件到程序窗体时(工具箱-右击-选择项目-COM+)
2、把添加到工具箱的COM+控件拖到窗体,会自动完成引用
3、点击选中引用的控件,在属性面板,把“独立”设置为:true
有了创建后的清单文件,只需简单地复制debug目录(可用COPY)到任何电脑上,就可以在没有注册表项的情况下使用该控件,现在,发布一个程序简单得就如复制粘贴一般简单了。

通过上面的方法,用C#制作的桌面版Aplayer应用程序,打包发布,安装程序就不用考虑aplayer的注册问题,只需要按照正常的打包方案发布应用就行了,也可以作为纯绿色的,直接拷贝debug目录里的文件到其他电脑上,也是能够运行的!

 

C# DLL文件注册问题(涉及AxInterop.WMPLib.dll等)的更多相关文章

  1. .OCX、.dll文件注册命令Regsvr32的使用

    1.打开文件,打开需要注册的OCX文件或dll文件,2.然后根据需要进行OCX文件或DLL文件的注册和反注册 DLL.OCX注册方法--文件Regsvr32用法及情况介绍 使用过activex的人都知 ...

  2. DLL文件是怎么产生的,DLL文件是什么,DLL文件有什么用

    ①DLL文件是怎么产生的 许多应用程序被分割成一些相对独立的动态链接库,放置于系统中,就产生了DLL文件. ②DLL文件是什么 DLL(Dynamic Link Library)文件为动态链接库文件, ...

  3. win7 下注册dll文件失败

    1.win7 下注册dll文件失败,提示模块“xx.dll”已加载,但找不到入口点DllRegisterServer 原因:该dll文件非可注册组件,没有包含DllRegisterServer函数,可 ...

  4. lib和dll文件的区别和联系

    什么是lib文件,lib和dll的关系如何 (2008-04-18 19:44:37)    (1)lib是编译时需要的,dll是运行时需要的. 如果要完成源代码的编译,有lib就够了. 如果也使动态 ...

  5. [转载]解析WINDOWS中的DLL文件---经典DLL解读

    [转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...

  6. [转载]lib和dll文件的区别和联系

    出处:https://blog.csdn.net/weiaipan1314/article/details/52252478 什么是lib文件,lib和dll的关系如何 (2008-04-18 19: ...

  7. VB-创建类模块DLL文件

    最近需要调用MSCOMM32.OCX控件,但是ABAP调用过程中发现无法同时发送多条记录,则需调整实现方式: a.创建DLL文件封装MSCOMM控件相关属性及方法 b.系统注册DLL文件 c.ABAP ...

  8. 无法删除DLL文件解决方法(转)

    手动解决dll文件无法删除的终极方法 手动解决dll文件无法删除的终极方法 相信大家都遇见过:在删除一些软件的时候弹出某某文件正在运行或磁盘写保护不能删除这样的报错提示吧.而常常删除不掉的都一些后缀为 ...

  9. 详细介绍dll文件是什么

     DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件一般被存放在C:WindowsSystem目录下.DLL是一个包含可由多个程序同时使用的代码和数据的库. 在Wind ...

随机推荐

  1. fckeditor使用详解

    FCKEditor是一个很好的用于Web页面中的格式化文本编译控件.现在越来越多的论坛的发帖页面中更多的使用了这个控件,我们这里将如何在基于Java的web开发中使用FCKEditor控件的步骤提供给 ...

  2. requirejs + vue 项目搭建

    以前都是支持 司徒正美 的,毕竟咱们也是跟着 司徒正美 一起走进了前端的世界.所以一般MVVM都是用avalon的,当然也是考虑到项目需要支持IE6,7,8的考虑.当然在用的时候也有一些小坑和bug, ...

  3. jquery的$().each,$.each的区别与应用

    在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...

  4. php笔试算法题:顺时针打印矩阵坐标-蛇形算法

    这几天参加面试,本来笔试比较简单,但是在面试的时候,技术面试官说让我现场写一个算法,顺时针打印矩阵的坐标,如图所示 顺序为,0,1,2,3,4,9,14,19,24,23,22,21,20,15,10 ...

  5. Android IT资讯网络阅读器应用源码

    这个是Android IT资讯网络阅读器应用,也是一款通过jsoup解析Html获取内容的网络阅读器,和前面的其实是类似的,也是大学时期闲暇完成,对照CSDN的Web页面元素设计进行解析提取内容,核心 ...

  6. Windows2008 VPN登录

    上一章已经讲过Windows2008RT搭建VPN服务器搭建过程,接下来说一下win2008和win8的VPN登录 win8VPN连接过程 先说win2008的VPN登录过程.很简单: 打开网络和共享 ...

  7. NOI2011 Day2

    NOI2011 Day2 道路修建 题目描述:给出一棵树,求每条边的两边的端点数的差乘边权之和. solution: 题目可能描述得不太清楚,如图: 对于虚边,如果边权为10,两边的端点数之差为2,这 ...

  8. 字符串比较必须使用strcmp

    char s1[]="this" char *s2 = "this" if(s1=="this"){ printf("s1 is ...

  9. 梯度下降算法的一点认识(Ng第一课)

    昨天开始看Ng教授的机器学习课,发现果然是不错的课程,一口气看到第二课. 第一课 没有什么新知识,就是机器学习的概况吧. 第二课 出现了一些听不太懂的概念.其实这堂课主要就讲了一个算法,梯度下降算法. ...

  10. LCIS(线段树区间合并)

    LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...