[发明专利]一种COM组件的多版本并行运行方法和装置有效
申请号: | 201811476646.1 | 申请日: | 2018-12-04 |
公开(公告)号: | CN109614165B | 公开(公告)日: | 2020-05-05 |
发明(设计)人: | 杨国萍 | 申请(专利权)人: | 山东财经大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 王桂名 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 com 组件 版本 并行 运行 方法 装置 | ||
1.一种COM组件的多版本并行运行方法,其特征在于包括如下步骤:
a.预先把COM组件的注册数据采集后处理成虚拟注册数据,把COM组件模块路径设为某一虚拟路径,把虚拟注册数据保存到虚拟注册文件中;
b.把COM组件的动态链接库和虚拟注册文件安装到程序目录下;
c.程序进程启动时,把虚拟注册文件导入到一个对主程序运行路径散列运算所得的一个注册表节点,该节点在HKEY_CURRENT_USER节点下的子节点,把COM组件所在模块的注册路径InprocServer32调整为基于程序主模块绝对路径;
d.初始化程序进程全局信息;
e.当程序进程需要调用COM组件时,采用钩子函数拦截操作系统内核层的由ntdll.dll导出的注册表访问函数对于HKEY_CLASSES_ROOT的访问,重定向到步骤c的散列运算所得到的注册表节点,这样COM组件在系统中实现了虚拟注册,虽未实际注册但是得以顺利启用,程序正常运行;
f.重复步骤a-e,使另一版本的COM组件顺利启用,从而实现COM组件的多版本并行运行。
2.根据权利要求1所述的COM组件的多版本并行运行方法,其特征在于:步骤c在注册表节点中还写入虚拟注册文件的MD5校验值和初次导入虚拟注册文件时的时间戳;步骤c运行时先判断虚拟注册文件的MD5校验值与注册表节点的数据是否一致,如果一致,则直接跳过导入步骤。
3.根据权利要求1所述的COM组件的多版本并行运行方法,其特征在于:步骤a的虚拟路径为C:\VirDir。
4.根据权利要求1所述的COM组件的多版本并行运行方法,其特征在于:步骤a利用注册表蜂巢技术来实现,具体包括如下细分步骤:
a1.创建HKEY_CLASSES_ROOT键在自定义hive中的映射键,开启Hive状态;
a2.准备DllRegisterServer的函数指针类型;
a3.调用LoadLibrary()加载COM组件所在模块;
a4.调用GetProcAddress()获得DllRegisterServer的地址;
a5.调用OleInitialize()初始化COM库;
a6.使用a4步骤得到的地址调用DllRegisterServer;
a7.执行必要的清理工作:清理COM库,卸载组件,取消蜂巢化状态;
a8.把Hive键下的所有内容递归导出写入虚拟注册文件,把键路径改为HKEY_CLASSES_ROOT,把模块路径替换为虚拟路径,最后保存虚拟注册文件。
5.根据权利要求1所述的COM组件的多版本并行运行方法,其特征在于:步骤b具体包括如下细分步骤:
b1.复制COM组件的动态链接库到应用程序的主exe文件同一目录下;
b2.把步骤a生成的虚拟注册文件放入应用程序主exe的同级的registry目录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东财经大学,未经山东财经大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811476646.1/1.html,转载请声明来源钻瓜专利网。