[发明专利]一种COM组件的多版本并行运行方法和装置有效
申请号: | 201811476646.1 | 申请日: | 2018-12-04 |
公开(公告)号: | CN109614165B | 公开(公告)日: | 2020-05-05 |
发明(设计)人: | 杨国萍 | 申请(专利权)人: | 山东财经大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 王桂名 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 com 组件 版本 并行 运行 方法 装置 | ||
本发明涉及一种在Windows操作系统上实现COM组件多版本并行运行的方法,以及一种实现装置。一种COM组件的多版本并行运行方法,包括如下步骤:a.把虚拟注册数据保存到虚拟注册文件中;b.把COM组件的动态链接库和虚拟注册文件安装到程序目录下;c.把虚拟注册文件导入到一个对主程序运行路径散列运算所得的一个注册表节点;d.初始化程序进程全局信息;e.采用钩子函数拦截操作系统内核层的由ntdll.dll导出的注册表访问函数对于HKEY_CLASSES_ROOT的访问,重定向到步骤c的散列运算所得到的虚拟注册表节点路径。本发明通过在程序进程启动时导入COM组件的虚拟注册数据,以及在访问COM组件时通过注册表重定向到虚拟注册数据,实现了COM组件多个版本并行运行。
技术领域
本发明涉及一种在Windows操作系统上实现COM组件多版本并行运行的方法,以及一种实现装置。
背景技术
COM是ComponentObjectModel(组件对象模型)的缩写。COM是开发软件组件的一种方法,是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术,在COM构架下,可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。在实践中,COM组件由以Win32动态连接库或可执行文件形式发布的可执行代码所组成,它是遵循COM规范而编写的。COM组件可以给应用程序、操作系统以及其他组件提供服务;自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序;COM组件可以动态的插入或卸出应用。而组件的实例化是由操作系统的基础服务负责的。一个COM组件在使用前必须首先注册。所谓“注册”,也就是向系统注册表的相应位置写入一些数据。这些数据可以完成GUID与组件模块的绝对路径的一一对应,也就是说可以帮助程序通过GUID找到组件模块的位置。组件可以用CLSID作为索引在Windows的注册表中发布包含他们的DLL文件名称。CoCreateInstance将用CLSID作为关键字在注册表中查找所需要的文件名称。注册表是一个由许多元素构成的层次结构。每一个元素均被称作是一个关键字。每一个关键字可以包含一系列子关键字、一系列命名的值及/或一个未命名的值。COM只使用了注册表的一个分支:HKEY_CLASSES_ROOT;在此关键字之下,可以看到有一个CLSID关键字。在CLSID关键字下列有系统中安装的所有组件的CLSID。每一个CLSID关键字有一个子关键字InprocServer32。此子关键字的缺省值是组件所在的模块文件路径名称。参照图2,当程序需要调用某个COM组件时,COM组件创建模块会向注册表读取数据。同一个组件在注册表中的数据存在若干条,每一条的读取过程经历下面四个步骤:1.调用ZwOpenKey(Windows7之后版本用ZwOpenKeyEx)函数打开指定的键。2.调用ZwQueryKey函数查询步骤1打开的键的概要信息。3.根据步骤2查询所得的概要信息调用ZwQueryValueKey读取键值。4.调用ZwClose关闭步骤1打开的键。
组件技术有很多优点,应用可以非常灵活扩展和定制,但是多个应用程序使用公共的模块和组件也会导致严重的问题。最典型的情况是,某个应用程序将要安装一个新版本的共享组件,而该组件与机器上的现有版本向后不兼容。虽然刚安装的应用程序运行正常,但原来依赖前一版本共享组件的应用程序也许已无法再工作。在某些情况下,问题的起因更加难以预料。比如,当用户浏览某些Web站点时会同时下载某个ActiveX控件。如果下载该控件,它将替换机器上原有的任何版本的控件。如果机器上的某个应用程序恰好使用该控件,则很可能也会停止工作。另一种场景是一些在较低版本操作系统运行良好的应用软件要在新版本的操作系统上运行,但是常常因为新版本的操作系统中的组件并不兼容老版本,导致应用程序运行失败。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东财经大学,未经山东财经大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811476646.1/2.html,转载请声明来源钻瓜专利网。