首页> 中国专利> 使用浏览器中内置ActiveX插件的方法和客户端

使用浏览器中内置ActiveX插件的方法和客户端

摘要

本发明涉及一种使用浏览器中内置ActiveX插件的方法和客户端。该方法包括:检测到浏览器要加载ActiveX插件;判断在所述浏览器当前所在的计算机系统中是否已经安装所述ActiveX插件;如果确定在所述计算机系统中已安装所述ActiveX插件,则拦截所述ActiveX插件的加载信息,并加载浏览器中内置的所述ActiveX插件;如果确定在所述计算机系统中没有安装所述ActiveX插件,则生成与内置ActiveX插件相关的特定注册表键值,并依据所述特定注册表键值加载浏览器中内置的所述ActiveX插件。

著录项

  • 公开/公告号CN102929656A

    专利类型发明专利

  • 公开/公告日2013-02-13

    原文格式PDF

  • 申请/专利号CN201210371228.2

  • 发明设计人 陈志;李锦伟;贺跃松;付俣;任寰;

    申请日2012-09-28

  • 分类号G06F9/445(20060101);

  • 代理机构11315 北京国昊天诚知识产权代理有限公司;

  • 代理人许志勇

  • 地址 100088 北京市西城区新街口外大街28号D座112室(德胜园区)

  • 入库时间 2024-02-19 17:42:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-19

    专利权的转移 IPC(主分类):G06F 9/445 专利号:ZL2012103712282 登记生效日:20220707 变更事项:专利权人 变更前权利人:北京奇虎科技有限公司 变更后权利人:北京奇虎科技有限公司 变更事项:地址 变更前权利人:100088 北京市西城区新街口外大街28号D座112室(德胜园区) 变更后权利人:100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801 变更事项:专利权人 变更前权利人:奇智软件(北京)有限公司 变更后权利人:

    专利申请权、专利权的转移

  • 2015-11-25

    授权

    授权

  • 2013-03-20

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20120928

    实质审查的生效

  • 2013-02-13

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种使用浏览器中内置ActiveX 插件的方法和客户端。

背景技术

随着互联网的快速发展,基于ActiveX的ActiveX插件也具有越来越广 泛的应用。ActiveX插件技术是国际上通用的基于Windows平台的软件技术, 许多软件都是采用此种方式开发,例如Flash动画播放插件、Microsoft  MediaPlayer插件、Adobe PDF阅读插件等。

ActiveX插件叫做OLE插件或OCX插件,它是一些软件组件或对象, 可以将其插入到WEB网页或其他应用程序中。例如,当用户浏览到特定的 网页时,浏览器会提示用户下载并安装ActiveX插件。

现有技术中,如果某个网页设置了使用某个ActiveX插件,则用户打开 该网页触发使用ActiveX插件时,如果计算机系统安装了该ActiveX插件, 则浏览器会加载计算机系统中安装的该ActiveX插件;如果计算机系统没有 安装,则需要根据ActiveX插件的CLSID向注册表写入与此ActiveX插件相 关的注册表信息,比如ActiveX插件磁盘路径,计算机系统将ActiveX插件 安装完成后,才能使用。

然而现有技术中的ActiveX插件的安装和调用的过程中,有可能遭遇计 算机系统不稳定,并且进而影响用户在使用浏览器进行网页浏览时的用户体 验。因此,需要一种避免使用计算机系统中安装的ActiveX插件而实现浏览 器中内置ActiveX插件的方法,从而提高计算机系统的稳定性以及提高用户 体验。

发明内容

本发明的主要目的在于提供一种使用浏览器中内置ActiveX插件的方法 和客户端,其中,所述方法包括:检测到浏览器要加载ActiveX插件;判断 在所述浏览器当前所在的计算机系统中是否已经安装所述ActiveX插件;如 果确定在所述计算机系统中已安装所述ActiveX插件,则拦截所述ActiveX 插件的加载信息,并加载浏览器中内置的所述ActiveX插件;如果确定在所 述计算机系统中没有安装所述ActiveX插件,则生成与内置ActiveX插件相 关的特定注册表键值,并依据所述特定注册表键值加载浏览器中内置的所述 ActiveX插件。

根据本发明的实施例,该方法还可以包括:基于所述ActiveX插件的类 标识符来判断在计算机系统中是否已经安装所述ActiveX插件。

根据本发明的实施例,在该方法中,拦截所述ActiveX插件的加载信息 并加载浏览器中内置的所述ActiveX插件包括:通过挂钩所述ActiveX插件 的存储路径查询函数并根据所述ActiveX插件的类标识符,获取浏览器中内 置的所述ActiveX插件的存储路径;基于所述存储路径加载浏览器中内置的 所述ActiveX插件。

根据本发明的实施例,该方法还可以包括:调用动态链接库加载函数, 加载内置的所述ActiveX插件的动态链接库;通过调用导出函数获取类厂指 针;基于所述类厂指针创建浏览器中内置的所述ActiveX插件并加载之。

根据本发明的实施例,在该方法中,生成与内置ActiveX插件相关的特 定注册表键值,并依据所述特定注册表键值加载浏览器中内置的所述 ActiveX插件包括:将浏览器中内置的所述ActiveX插件的存储路径放置于 所述特定注册表键值下;基于浏览器中内置的所述ActiveX插件的所述存储 路径加载浏览器中内置的所述ActiveX插件

根据本发明的实施例,在该方法中,基于浏览器中内置的所述ActiveX 插件的所述存储路径加载浏览器中内置的所述ActiveX插件包括:通过挂钩 注册表读取函数,访问所述特定注册表键值以将其重定向到浏览器中内置的 所述ActiveX插件的所述存储路径,从而加载浏览器中内置的所述ActiveX 插件。

根据本发明的实施例,在该方法中,基于类标识符获取函数中的程序标 识符获取所述类标识符。

根据本发明的另一方面,还提供一种内置有ActiveX插件的客户端,包 括:检测模块,被配置成检测浏览器要加载ActiveX插件;判断模块,被配 置成判断在所述客户端当前所在的计算机系统中是否已经安装所述ActiveX 插件;第一加载模块,被配置成:如果确定在所述计算机系统中已安装所述 ActiveX插件,则拦截所述ActiveX插件的加载信息并加载浏览器中内置的 所述ActiveX插件;第二加载模块,被配置成:如果确定在所述计算机系统 中没有安装所述ActiveX插件,则生成与内置ActiveX插件相关的特定注册 表键值,并依据所述特定注册表键值加载浏览器中内置的所述ActiveX插件。

根据本发明的实施例,在该客户端中,判断模块还被配置成基于所述 ActiveX插件的类标识符来判断在计算机系统中是否已经安装所述ActiveX 插件。

根据本发明的实施例,第一加载模块还包括:路径获取子模块,被配置 成通过挂钩所述ActiveX插件的存储路径查询函数并根据所述ActiveX插件 的类标识符,获取浏览器中内置的所述ActiveX插件的存储路径;第一加载 子模块,被配置成基于所述存储路径加载浏览器中内置的所述ActiveX插件。

根据本发明的实施例,该客户端还包括:动态链接库加载子模块,被配 置成调用动态链接库加载函数,加载内置的所述ActiveX插件的动态链接库; 获取子模块,被配置成通过调用导出函数获取类厂指针;创建与加载子模块, 被配置成基于所述类厂指针创建浏览器中内置的所述ActiveX插件并加载 之。

根据本发明的实施例,第二加载模块包括:放置模块,被配置成将浏览 器中内置的所述ActiveX插件的存储路径放置于所述特定注册表键值下;第 二加载子模块,被配置成基于浏览器中内置的所述ActiveX插件的所述存储 路径加载浏览器中内置的所述ActiveX插件。

根据本发明的实施例,第二加载子模块包括:重定向模块,被配置成通 过挂钩注册表读取函数,通过访问所述特定注册表键值以将注册表读取函数 重定向到浏览器中内置的所述ActiveX插件的所述存储路径,从而所述第一 加载子模块加载浏览器中内置的所述ActiveX插件。

根据本发明的实施例,该客户端还包括:类标识符获取模块,被配置成 基于类标识符获取函数中的程序标识符获取所述类标识符。

与现有技术相比,根据本发明的技术方案,避免了使用计算机系统安装 的ActiveX插件,实现浏览器中内置与调用ActiveX插件,解决了由于安装 或调用计算机系统中的ActiveX插件而引起计算机系统不稳定的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部 分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的 不当限定。在附图中:

图1是根据本发明实施例的使用浏览器中内置ActiveX插件的方法的流 程图;

图2是根据本发明具体实施例的、在计算机系统没有安装相应的插件时 使用浏览器中内置ActiveX插件的方法的流程图;以及

图3是根据本发明实施例的内置有ActiveX插件的客户端300的框图。

具体实施方式

本发明的实施例提供一种在浏览器中内置ActiveX插件的方法和客户 端。该方法通过检测浏览器要加载ActiveX插件、判断在计算机系统中是否 已经安装所述ActiveX插件、并依据判断结果采用不同的方式最终加载浏览 器中内置的所述ActiveX插件,从而实现在浏览器中内置ActiveX插件,从 而避免运行计算机系统中的插件,并由此运行计算机系统中的插件所带来的 计算机系统不稳定的问题,增强了计算机系统的稳定性。

为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实 施例,对本发明进行进一步的详细说明。

根据本发明的实施例,提供了一种使用浏览器中内置ActiveX插件的方 法和客户端。

参考图1,图1是根据本发明实施例的使用浏览器中内置ActiveX插件 的方法的流程图。

在步骤101,检测到浏览器要加载ActiveX插件。

例如,在利用浏览器浏览网页的时候,有时候需要浏览器加载ActiveX 插件以便能够正确地显示网页。因此,首先检测浏览器要加载ActiveX插件。

然后,在步骤102,判断在计算机系统中是否已经安装所述ActiveX插 件。在检测到浏览器要加载ActiveX插件之后,本发明的方法继而判断在计 算机系统中是否安装了该ActiveX插件。通常,可以根据该ActiveX插件的 类标识符(CLSID)来判断计算机系统中是否安装了该ActiveX插件。实际 上,对于每一个ActiveX插件而言,都存在一个对应的唯一类标识符(CLSID, 也称为全局唯一标识符”)。因此,可以利用该类标识符与ActiveX插 件之间的对应关系,来检查并判断在计算机系统中是否已经安装该插 件。类标识符(CLSID)可以是一个128位的随机数。为了确保它的随 机性,避免重复,它的算法例如可以来自两个方面:类标识符的一部分 数字来自于计算机系统网卡的序列号;类标识符的另外一部分数字来自 于计算机系统的当前时间。

进一步地,类标识符可以基于类标识符获取函数中的程序标识符来获 取。具体而言,可以触发调用类标识符获取函数的请求,所述请求中包括与 该ActiveX插件对应的程序标识符;然后拦截类标识符获取函数从而获得该 程序标识符,然后根据程序标识符获取已记录的与ActiveX插件对应的类标 识符。程序标识符(ProgID)的组成可以是如下形式: <program>.<component>.<version>。

如果在步骤102处确定在该计算机系统中已安装该ActiveX插件,则在 步骤103处,拦截该ActiveX插件的加载信息,并加载浏览器中内置的ActiveX 插件。

具体而言,如果在该计算机系统中已经安装该ActiveX插件,则本方法 可以通过挂钩该ActiveX插件的存储路径查询函数(CoGetClassObject)并根 据该ActiveX插件的类标识符(CLSID),获取浏览器中内置的该ActiveX 插件的存储路径。然后,基于存储路径加载浏览器中内置的该ActiveX插件。 进一步地,可以调用动态链接库加载函数,加载内置的所述ActiveX插件的 动态链接库(LoadLibrary)。也即是说,浏览器通过调用导出函数 (DllGetClassObject)获取类厂指针。例如,类厂指针可以是相应ActiveX插 件的IUnkown指针。然后,基于类厂指针,创建浏览器中内置的该ActiveX 插件并加载之。根据本发明的实施方式,所述浏览器中内置的该ActiveX插 件是免安装ActiveX插件。

当计算机系统没有安装相应的插件时,需要把运行过程中需要用到的所 有的注册表进行重定向,让其可以正确运行。如浏览器加载插件需要访问的 注册表包括CLSID和TypeLib等,若计算机系统没有相应的键值存在,浏览 器不会进行后续的创建过程。因此,根据本发明的方法,如果确定在该计算 机系统中没有安装该ActiveX插件,则在步骤104处,生成与内置ActiveX 插件相关的特定注册表键值,并依据该特定注册表键值加载浏览器中内置的 该ActiveX插件。根据本发明的实施方式,所述浏览器中内置的该ActiveX 插件是免安装ActiveX插件。

更具体地,依据该特定注册表键值加载浏览器中内置的该ActiveX插件 还可以包括:将浏览器中内置的该ActiveX插件的存储路径放置于该特定注 册表键值下;基于浏览器中内置的该ActiveX插件的该存储路径加载浏览器 中内置的该ActiveX插件。

更具体地,基于浏览器中内置的该ActiveX插件的该存储路径加载浏览 器中内置的该ActiveX插件可以包括:通过挂钩注册表读取函数,访问该特 定注册表键值以将其重定向到浏览器中内置的该ActiveX插件的所述存储路 径,从而加载浏览器中内置的该ActiveX插件。

为了更进一步地了解当计算机系统没有安装相应的插件时本发明的方 法流程,下面参考图2对计算机系统没有安装相应的插件时的上述情况进行 进一步地描述。

如上所述,如图2所示,举例而言,首先,在步骤201处,该方法获取 该ActiveX插件需要用到的所有特定注册表键值(不包括与插件无关的键值, 因为计算机系统已经存在此注册表值),例如,获取flash插件需要用到的 注册表的键值。在步骤202处,将该ActiveX插件完整路径放置于注册表的 特定键值下。例如,可以放置在如HKEY_CLASS_ROOT\……\FlashStub路 径下,同时对特定的注册表值进行修改。根据本发明的实施例,ActiveX插 件的完整路径可以根据需要来创建。然后,在步骤203处,通过挂钩注册表 读取函数,例如,所述注册表读取函数可以是RegOpenKeyEx或 RegQueryValueEx。在其访问的键值需要重定向时,将其重定向到上面的路 径FlashStub下。从而,在步骤204处,访问所述键值,并加载浏览器中内 置的该ActiveX插件。也即是该flash插件,最终,虽然计算机系统中并未安 装该ActiveX插件,但是通过注册表重定向而实现浏览器中内置该ActiveX 插件并调用之从而可以实现透明访问,让浏览器运行在和计算机系统安装有 该jflash插件一样的环境中。

在本发明的实施例中,以Flash插件这一浏览器侧的ActiveX插件为例对 本发明的一些详细操作进行了示例性的描述,但是应该理解,本发明的技术 方案也适用于浏览器侧的任何其他ActiveX插件。

根据本发明的一个实施例,例如,浏览器加载插件需要访问的注册表例 如可以是CLSID,那么其中相应的键值如下。

HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-4445535 40000}\InprocServer32——该键值表示InprocServer32的键值,浏览器对象标 签通过CLSID访问InprocServer32来获取flash插件的安装位置,那么本发 明的方法通过挂钩注册表获取函数,将flash插件的位置重定向为浏览器中 内置的flash插件的位置;

HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-4445535 40000}\ProgID——该键值表示flash插件的ProgID,浏览器javascript代码通 过new ActivexObject代码创建新的flash对象,需要获取flash的ProgID,那 么本发明的方法通过挂钩注册表读取函数,将所述ProgID重定向到上述路 径;

HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-4445535 40000}\MiscStatus——该键值表示MiscStatus键值,ole object对象通过读取 MiscStatus键值来获得com object对象的属性,以解析obejct对象,因而同 样挂钩注册表读取函数,将其重定向到上述路径以访问其键值;

HKEY_CLASSES_ROOT\CLSID\{D27CDB6E-AE6D-11cf-96B8-4445535 40000}\Implemented Categories——该键值是表示active对象的安全属性的键 值,同样挂钩注册表读取函数,重定向到上述路径以访问。

图3是根据本发明实施例的内置有ActiveX插件的客户端300的框图。

根据本发明的实施例,内置有ActiveX插件的客户端300可以包括检测 模块301、判断模块302、第一加载模块303以及第二加载模块304。

根据本发明的实施例,在利用浏览器浏览网页时,包含在客户端300中 的检测模块301可以检测浏览器要加载ActiveX插件。一旦检测到要加载插 件,则判断模块302可以判断在计算机系统中是否已经安装该ActiveX插件。 通常,可以根据该ActiveX插件的类标识符(CLSID)来判断计算机系统中 是否安装了该ActiveX插件。该客户端还可以包括类标识符获取模块(未示 出),被配置成基于类标识符获取函数中的程序标识符获取所述类标识符。 如何根据程序标识符获取类标识符的方式例如可以如前参考图1所述,为了 避免重复将在此省略对其的详细描述。

如果判断模块302确定在该计算机系统中已安装该ActiveX插件,则第 一加载模块303可以被配置成拦截该ActiveX插件的加载信息,并加载浏览 器中内置的ActiveX插件。如果判断模块302确定在该计算机系统中尚未安 装该ActiveX插件,则第二加载模块304可以被配置成生成与内置ActiveX 插件相关的特定注册表键值,并依据该特定注册表键值加载浏览器中内置的 该ActiveX插件。

第一加载模块303可以包括路径获取子模块和第一加载子模块。路径获 取子模块可以被配置成通过挂钩该ActiveX插件的存储路径查询函数并根据 该ActiveX插件的类标识符,获取浏览器中内置的该ActiveX插件的存储路 径。然后第一加载子模块可以被配置成基于所述存储路径加载浏览器中内置 的所述ActiveX插件。

根据本发明的客户端,还可以包括:动态链接库加载子模块(未示出), 其可以被配置成调用动态链接库加载函数,加载内置的ActiveX插件的动态 链接库;获取子模块(未示出),其可以被配置成通过调用导出函数获取类 厂指针;创建与加载子模块(未示出),其可以被配置成基于类厂指针创建 浏览器中内置的ActiveX插件并加载之。根据本发明的实施方式,所述浏览 器中内置的该ActiveX插件是免安装ActiveX插件。

在本发明的客户端中,第二加载模块304还可以包括放置模块和第二加 载子模块,其中放置模块可以被配置成将浏览器中内置的ActiveX插件的存 储路径放置于特定注册表键值下,然后第二加载子模块可以被配置成基于浏 览器中内置的ActiveX插件的存储路径加载浏览器中内置的该ActiveX插件。 根据本发明的实施方式,所述浏览器中内置的该ActiveX插件是免安装 ActiveX插件。

进一步地,第二加载子模块可以包括重定向模块,其可以被配置成通过 挂钩注册表读取函数,通过访问特定注册表键值以将注册表读取函数重定向 到浏览器中内置的ActiveX插件的存储路径,从而第二加载子模块加载浏览 器中内置的该ActiveX插件。

在根据本发明的客户端300中所包含的各个模块所实现的功能与参考图 1所描述的根据本发明的方法步骤相对应,因此,为了避免重复,将在此省 略对其的详细描述。

根据本发明的实施例,第一加载模块和第二加载模块可以合并成单个加 载模块(未示出)以加载ActiveX插件。从而,在合并成单个加载模块的示 例中,进一步地,第一子加载模块和第二子加载模块也可以合并成单个子加 载模块。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固 有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述, 构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定 编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容, 并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本 发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未 详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个 或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时 被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开 的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求 中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映 的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循 具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利 要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自 适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以 把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可 以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者 单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴 随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或 者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴 随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相 似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其 它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组 合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权 利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使 用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理 器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当 理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据 本发明实施例的使用浏览器中内置ActiveX插件的客户端中的一些或者全部 部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法 的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产 品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具 有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或 者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制, 并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换 实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利 要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位 于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可 以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。 在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一 个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。 可将这些单词解释为名称。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并 非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所 示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺 序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行, 和/或将一个步骤分解为多个步骤执行。

以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域 的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求 范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号