我正在修改的一个WinForm程序,里面要调用到MediaPlay与Flash控件,运行时一切正常,我准备将其打包成一个安装程序,这时从网上查到,程序安装部署时,解决方案的配置管理器里配置要设置为Release,我按照其设置,然后生成,这时问题出来了,我的关于MediaPlay与Flash的引用全部找不到了,资源管理器中的引用节点下关于它们的引用全部变成了黄色的叹号,不知道这是什么原因?
于是,我把它们都删除了,重新添加引用,然后上网搜添加引用的方法,基本不外乎这些做法: 工具箱->选择项->Com组件->Windows Media Player,ShockwaveFlash, 或者直接在资源管理器的引用节点下右键->添加引用->COM组件->Windows Media Player,ShockwaveFlash,按照它们所说,这时引用中会出现WMPLib.dll,AxWMPLib.dll,ShockwaveFlash.dll,AxShockWaveFlash.dll,使用的时候用AxWMPLip.AxWindowsMediaPlayer 创建对象就可以了,可是我现在引用里只有WMPLib.dll,根本看不到AxWMPLib.dll,搜了一天了也没有解决这个问题,程序现在无法运行,运行就会报错: 找不到类型或者命名空间名称"AxWMPLib.dll",Flash也一样,是不是我添加引用的方法不对?程序以前是能运行的啊,还请各位高手帮忙分析一下,马上就要交活了,没想到做安装部署时会出这种问题啊,急急急啊...

解决方案 »

  1.   

    需要ocx控件吧,打包成安装程序的时候也需要在目标机器上注册ocx控件。
    用Regsvr32注册。
      

  2.   

    文件Regsvr32用法及情况介绍 使用过activex的人都知道,activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在windows的system文件夹下有一个regsvr32.exe的程序,它就是windows自带的activex注册和反注册工具。 一、regsvr32的用法为: 
    “regsvr32 [/s] [/n] [/i(:cmdline)] dllname”。其中dllname为activex控件文件名,建议在安装前拷贝到system文件夹下。 参数有如下意义: /u——反注册控件 /s——不管注册成功与否,均不显示提示框 /c——控制台输出 /i——跳过控件的选项进行安装(与注册不同) /n——不注册控件,此选项必须与/i选项一起使用 执行该命令的方法: 1、可以在“开始”--“运行”,调出运行的对话框,也可以使用Win+R热键,然后直接在输入栏输入即可 
    2、在开始--运行 输入cmd,调出‘命令提示符’窗口,然后再执行regsvr32命令。 二、Regsvr32错误消息的说明 
    当使用 Regsvr32.exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32.exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。 以下列表介绍了 RegSvr32 错误消息和可能的原因。 Unrecognized flag:/invalid_flag 键入的标志或开关组合无效(请参阅本文中的“Regsvr32.exe 的用法”一节)。 No DLL name specified. 未包括 .dll 文件名(请参阅本文中的“Regsvr32.exe 的用法”一节)。 Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found. Dllname 不是 .dll 或 .ocx 文件。例如,键入 regsvr32 wjview.exe 就会生成该错误消息。 Dllname is not an executable file and no registration helper is registered for this file type. Dllname 不是可执行文件(.exe、.dll 或 .ocx)。例如,键入 regsvr32 autoexec.bat 就会生成该错误消息。 Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found. Dllname 可能未导出,或者内存中可能有损坏的 Dllname 版本。请考虑使用 Pview 来检测该文件并删除它。 Dllname is not self-registerable or a corrupted version is in memory. 例如,键入 regsvr32 icwdial.dll 后就会返回该错误消息,因为 Icwdial.dll 文件不能自行注册。 如果您怀疑内存中有损坏的 Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。 如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章: 197155 如何终止孤立进程 
    OleInitialize failed (or OleUninitialize failed). Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。 如果对 COM 库进行初始化或撤消初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll 文件 可能已经损坏,或者其版本有误。 LoadLibrary("Dllname") failed.GetlastError returns 0x00000485 在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“找不到运行该应用程序所需的某个库文件”。例如,键入 regsvr32 missing.dll 后,如果找不到 Missing.dll 文件,就会返回该错误消息。 LoadLibrary("Dllname") failed.GetLastError returns 0x00000002 在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系统找不到指定的文件”。换言之,系统找不到相关的 DLL。例如,如果键入 regsvr32 icwdial.dll,而此时缺少 Tapi32.dll(依赖项),就会返回该错误消息。 LoadLibrary("dskmaint.dll") failed.GetLastError returns 0x000001f 在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“附加到系统上的设备不能正常工作”。如果您尝试注册 Win16 .dll 文件,就会发生此现象。例如,键入 regsvr32 dskmaint.dll 会返回该错误消息。 DllRegisterServer (or DllUnregisterServer)in Dllname failed.返回代码是:字符串 在 Winerror.h 中搜索字符串。 
    Regsvr32.exe 和依赖项 
    RegSvr32.exe 依赖于 Kernel32.dll、User32.dll 和 Ole32.dll 文件(在 Windows NT 中,还依赖于 Msvcrt.dll 和 Advapi32.dll 文件)。Regsvr32.exe 会加载您尝试注册或撤消注册的文件及其所有依赖项。如果缺少必需的文件或者它们已损坏,该进程可能会失败。 您可以使用 Depends.exe 来确定您尝试注册或撤消注册的文件的依赖项。在 Microsoft Windows 98 资源工具包 和 Microsoft Windows NT 4.0 资源工具包 支持工具中都提供了 Depends.exe。 
    247024 Tools Included with the Microsoft Windows 98 Resource Kit 三、一个快速注册 DLL 及 OCX 的方法 注意看罗!方法如下: 1、在资源管理器中找到 C:\Windows\System\Regsvr32.exe 并【复制】 ( 按鼠标右键选复制 ) 
    2、将目录移到 C:\Windows\SendTo 后,执行【贴上快捷方式】 ( 按鼠标右键选贴上快捷方式 ) 
    3、将快捷方式名称改成【REGISTER】 
    4、OK 现在,如果您想替某一个文件做注册动作,例如:C:\Windows\System\Test.ocx,您只要打开资源管理器,找到 C:\Windows\System\Test.ocx,按鼠标右键选【传送到】【REGISTER】即可完成注册动作了! 注:有一个地方要注意的是,Regsvr32.exe 只能注册 32 位的文件!如果要用它来注册 16 位的文件,会有错误讯息产生。 
    一、轻松修复IE浏览器 regsvr32 Shdocvw.dll 
    regsvr32 Oleaut32.dll 
    regsvr32 Actxprxy.dll 
    regsvr32 Mshtml.dll 
    regsvr32 Urlmon.dll 作用: 
    1、同时运行以上命令不仅可以解决IE不能打开新的窗口,用鼠标点击超链接也没有任何反应的问题; 
    2、还能解决大大小小的其它IE问题,比如网页显示不完整,JAVA效果不出现,网页不自动跳转,打开某些网站时总提示‘无法显示该页’等。 二、解决Windows无法在线升级的问题 regsvr32 wupdinfo.dll 作用: 
    Windows的漏洞很多,每隔一段时间就需要使用“Windows Update”升级程序进行在线升级,不过“Windows Update”经常出现无法使用的情况,这时,我们可以使用Regsvr32来解决这个问题。 三、防范网络脚本病毒有新招 regsvr32 /u scrrun.dll 作用: 
    网络脚本病毒嵌在网页中,上网时在不知不觉中机器就会感染上这种病毒。笔者认为单纯使用杀毒软件并不能有效地防范这些脚本病毒,必须从病毒传播的机理入手。网络脚本病毒的复制、传播都离不开FSO对象(File System Object,文件系统对象),因此禁用FSO对象就能有效地控制脚本病毒的传播。 
    如果需要使用FSO对象,键入“regsvr32 scrrun.dll”命令即可。 四、卸载Win XP自带的ZIP功能 regsvr32 /u zipfldr.dll 作用: 
    Win XP以功能强大而著称,但有些功能却常常令人有“鸡肋”之感,比如Win XP自带的ZIP功能和图片预览功能,不仅占用了系统资源,功能也远不如第三方软件强大。其实用Regsvr32命令可以很容易地卸载这些功能。 五、修复无法缩略图查看文件问题 2000: 开始→运行,输入regsvr32 C:\Winnt\System32\thumbvw.dll 
    XP: 开始→运行,输入regsvr32 shimgvw.dll 六、让WMP播放器支持RM格式 很多朋友喜欢用Windows Media Player(以下简称WMP)播放器,但是它不支持RM格式,难道非得安装其它播放软件吗?笔者有办法。 以Win XP为例,首先下载一个RM格式插件,解压缩后得到两个文件夹: Release(用于Windows 9x)和Release Unicode (用于Windows 2000/XP);将Release Unicode文件夹下的RealMediaSplitter.ax文件拷贝到“系统盘符\WINDOWS\System32\”目录下;在“开始→运行”中键入“regsvr32 RealMediaSplitter.ax”,点击“确定”即可。接着下载解码器,如Real Alternative,安装后就能用WMP播放RM格式的影音文件了。 七、让WMP9的播放器出现 有些音乐网页的在线点歌需要用到Media Player,有的朋友明明安装了WMP9,但在线听音乐却只看到枯燥的WMP6播放器面板,想让漂亮的WMP9面板出现,当然没问题的。 常见问题的操作系统多数WIN 98,先关闭IE,再在“开始→运行”中键入“regsvr32 wmpdxm.dll”,点击“确定”即可。 八、解决打开系统功能时无反应 regsvr32 shdocvw.dll 作用: 
    有时从开始菜单里点击XP系统的搜索功能、帮助和支持或管理工具等,但就是无任何反应,这是它们的打开方式缺少关联,所以我们只要用regsvr32注册它们需要调用的动态连接库文件就行了。 九、添加/删除程序打不开了 regsvr32 appwiz.cpl 
    regsvr32 mshtml.dll 
    regsvr32 jscript.dll 
    regsvr32 msi.dll 
    regsvr32 c:\program files\common files\system\ole db\oledb32.dll 
    regsvr32 c:\program files\common files\system\ado\msado15.dll 
    regsvr32 mshtmled.dll 
    regsvr32 /i shdocvw.dll 
    regsvr32 /i shell32.dll 作用: 
    当打开控制面板中的添加/删除程序时,双击它的图标后无反应,或者打开后自动关闭了,尝试使用以上命令可以解决。 
    猜不透的神秘命令 - regsvr32 jscript.dll 1、跟上面讲的修复IE浏览器方法配合使用,可以很好的解决浏览某些网页显示不完整,并且有可能解决IE状态栏显示‘网页上有错误’的提示。下图以上网助手首页为例: Click here to open new window 2、跟命令regsvr32 vbscript.dll配合使用,修复个别窗口空白,如XP的‘搜索’功能的搜索助理操作面板空白及系统还原功能无法使用等。 3、解决windows media player 9或以上版本打开时提示‘出现内部应用程序错误’。 4、可以修复win 2000的‘添加/删除程序’打开后一片空白。
      

  3.   

    我现在想要的效果是安装后自动注册,也就是说用户使用安装文件安装后就可以使用,不需要手动注册,因为用户也许不懂得这些命令,我的程序以前安装的时候好象也不用注册就能使用,被我这样折腾了一下,现在也需要手动注册了,所以我就又把配置改回DEBUG模式,我以为DLL出问题了,就把引用都移除了,重新添加,结果就出现我上面所述的问题了,现在想还原到以前的程序也办不到了,郁闷...谁能告诉我这到底是什么原因啊?
      

  4.   

    注册的问题我已经解决了,还是回到最初我的问题,就是那个引用到底是怎么添加才能出现AxWMPLib.dll这个引用项?
      

  5.   

    请问你是怎么添加com组件才能出现AxWMPLib.dll这个引用项的?
      

  6.   

    找到了在工具箱内单击右键 选择项 com组件 找到Windows Media Player ,工具箱内出现 Windows Media Player控件 ,把它放到窗体上,再看引用里面就有了 AxWMPLib.dll 这个 。