注册com(ActiveX)控件失败是怎么回事?

在装二级考试系统时出现的问题,搞不懂是怎么回事,还请诸位帮忙啊……
图片如下:
一楼说的太复杂了,也根本解决不了问题。请后继者继续回答……
二楼的还不能用,呜呜 ……
三楼的还是不行啊,我受不了了……

注册flash activex控件失败的终极解决法
1.下载微软subinacl.msi

http://download.microsoft.com/download/1/7/d/17d82b72-bc6a-4dc8-bfaa-98b37b22b367/subinacl.msi

安装

2.下载reset_minimal

http://www.adobe.com/support/flashplayer/ts/documents/fb1634cb/reset_minimal.zip

解压缩后,将reset_minimal复制到C:\ProgramFiles\WindowsResourceKits\Tools\目录下,执行reset_minimal,约需要5分钟时间,执行时不要使用电脑,执行完毕后提示“按任意键退出”。

3.下载flashplayer卸载器

http://download.macromedia.com/pub/flashplayer/current/uninstall_flash_player.exe

执行卸载操作

4.下载flashplayer最新版

安装即可

还有个方法你以前一定安装了Flash Player8.0.22或以前的版本,但相关的OCX文件没删除干净,之后你再次安装了新的版本(现在最新9.0).到C:\Windows\system32\Macromed\flash文件夹中,有个OCX文件,版本你点属性可以看到.只要看到是版本低于8.0.22的OCX文件.直接删除这个文件就可.
删除以后你再更新,补丁自己消失了
出现这种情况说明你系统的FLASH版本已是新的,只要按照上面方法做即可,此更新只是面向Flash Player8.0.22以前的版本用户。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-21
简单!
你用得是 “无忧” 考级吧!

1、用 "Windows 优化大师" 或 控制面板的 添加删除
把Flash Player 删除

2、运行输入“regsvr32/u/s flash.dll”
然后进入c:\windows\system32下用搜索把
Flash*.ocx、 flash.dll 全部删除。

3、重启,下载Flash Player10.0
第2个回答  2009-06-18
由于ActiveX 控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件无需作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows 通用控件一样。例如,在Visual C++ 中开发的ActiveX 控件,不作任何修改即可应用于Visual Basic 环境中。由此可见,通过使用ActiveX控件即可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。

虽然现在Internet上提供了许多免费的ActiveX控件,但是最终用户并不能直接使用,因为A c t i v e X 控件必须先在Windows 中注册。根据笔者的实际经验,注册ActiveX 控件一般来说有三种途径,它们各有各的优点,适用范围也不同,下面分别讨论。

1.使用Regsvr32.exe 程序注册ActiveX 控件Regsvr32.exe位于Windows目录的system子目录下。使用方法如下:点击“开始” →“运行”,在运行对话框中输入以下命令:regsvr32 <文件名> 注册一个ActiveX控件regsvr32 /u <文件名> 解除某ActiveX控件的注册我们在使用一些带有ActiveX 控件的应用程序时,有时会出现不能运行的情况,这可能是其自带的ActiveX控件未注册所致,这时不妨使用上述命令一试。另外,Visual C++使用者若对regsvr32.exe的编码感兴趣的话,可在Visual C++ 的联机帮助中找到其源代码。若使用V i s u a l C + + 6 . 0 ,则在M S D N 光盘的\sample\VC98\MFC\controls\regsvr 中。除了regsvr32 应用程序之外,Microsoft 在它的Web 站点上还提供了一个称为regclean.exe的程序。regclean.exe可以检查注册表并去掉丢失的组件在注册表中的条目。regclean.exe 除了可以删除“悬挂”的条目,它还能提供一个“undo”文件帮助你恢复错误的删除。

2.使用安装程序注册用regsvr32.exe 来注册ActiveX 控件虽然简单,但需要用户手工进行注册,在不用时还得手工解除注册,因此,这对一个要发布的应用程序来说并非最好的解决方案。大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX 控件的注册是较为理想的一种方案。InstallShield 是目前较为流行的制作安装程序的工具,使用它可以制作出专业级的Setup安装程序,还可以注册应用程序要使用的ActiveX控件。而且,在以后使用控制面板的添加/删除程序卸载该软件时,安装程序会自动注销掉以前注册的ActiveX控件。下面以InstallShield for Delphi 为例说明如何实现ActiveX控件的自动注册,其他版本的使用方法类似。(1)启动Installshield,使用 Project Wizard 建立一个新的项目。(2)新建一个“File Group”,将需要注册的ActiveX 控件文件放入此“File Group”中。(3)将上述“File Group”的“Self - Registered”属性设置成“Yes”。上述步骤仅为制作Setup 安装程序中设置自动注册ActiveX控件的操作,至于如何使用InstallShield来制作一个完整的Setup安装程序不在本文讨论范围之中,请读者自己参看有关书籍。

3.在应用程序中加入注册代码使用InstallShield 软件虽然可以实现ActiveX控件的自动注册,但必须制作一个安装程序,对于一个小型应用程序或不需分发的程序来说未免太麻烦。这时可以在程序中嵌入注册代码,实现应用程序自注册。其编程方法是:(1)使用Windows API函数LoadLibrary载入ActiveX控件。(2)使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterServer)指针。下面以Visual C++6.0编写的RegActivex程序为例,介绍怎样在程序中启动注册及注销ActiveX控件。RegActivex的主体框架由Visual C++6.0的AppWizard自动产生,在其基础上增加两个菜单项:注册ActiveX控件、注销ActiveX控件。当选择“注册ActiveX控件”菜单时,将对控件filter.ocx(一个图像滤镜控件,支持图像的柔化、锐化等)进行注册,当选择“注销ActiveX控件”菜单时,将解除filter.ocx控件的注册。步骤一:使用Visual C++6.0建立一个单文档的应用程序RegActivex,其他项目接受默认设置。步骤二:给应用程序增加两个莱单项: 注册ActiveX控件、注销ActiveX 控件,步骤如下:①单击Visual C++6.0左边窗口的“ResoureView”,双击MENU项目下的IDR_MAINFRAME以打开菜单编辑器。②在菜单编辑器中,加入一个主菜单“注册”,在“注册”主菜单下加入两个菜单项:注册ActiveX 控件、注销ActiveX 控件。步骤三:给新建的菜单项“注册ActiveX 控件”、“注销ActiveX控件”增加响应函数。①在资源编辑器中,双击MENU 中的IDR_MAINFRAME打开菜单编辑器,单击“注册ActiveX 控件”,按Ctrl+W打开MFC Class Wizard。②双击Messages 框中的COMMAND,给“注册ActiveX控件”菜单项增加响应函数OnRegisterReg(),单击右边“Edit”按钮,给函数OnRegisterReg()增加如下代码:
Void CmainFrame::OnRegisterReg ()
{
//ActiveX 控件的路径及文件名
LPCTSTR pszDllName = "filter.ocx";
// 装载ActiveX 控件
HINSTANCE hLib = LoadLibrary (pszDllName);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
MessageBox ("不能载入Dll文件!", "结果", MB_OK);
Return;
}
// 获取注册函数DllRegisterServer 地址
FARPROC lpDllEntryPoint;
LpDllEntryPoint = GetProcAddress (hLib, _T("DllRegisterServer));
// 调用注册函数DllRegisterServer
if (lpDllEntryPoint! = NULL)
{
if (FAILED ((*lpDllEntryPoint)()))
{
MessageBox ("调用DllRegisterServer失败!", "结果", MB_OK);
FreeLibrary (hLib);
Return;
}
MessageBox ("注册成功", "结果", MB_OK);
}
else
MessageBox ("调用DllRegisterServer失败!", "结果", MB_OK);
}
③“注销ActiveX控件”菜单项响应函数的编写方法同上,代码也相似,只是将“lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));“改为:lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnRegisterServer"));步骤四:编译连接上述程序,即可得到一个可执行文件。另外需要注意的是,应将ActiveX控件文件filter.ocx复制到Windows的system目录下。步骤五:测试上述程序。测试程序是一个引用了filter.ocx控件的宿主程序,由于本文的重点在于介绍ActiveX控件的注册方法,而不在于宿主程序的设计,因此宿主程序引用《程序员大本营》中的filter程序,读者也可以自己设计测试程序。测试的方法是运行filter程序,若使用RegActivex注册了filter.ocx控件,则该程序可以正常运行,若使用RegActivex注销了filter.ocx控件,则filter不能运行。

上面所述的ActiveX 控件注册方法各有特点,并且在笔者为北京市地税局开发的税务稽查系统中得到了应用,经实际使用,效果良好。读者可根据实际情况灵活选用。
相似回答