[发明专利]Windows应用程序虚拟化的实现方法有效
申请号: | 201110402069.3 | 申请日: | 2011-12-06 |
公开(公告)号: | CN102520944A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 沃天宇;孙海雷;康俊彬;胡春明;怀进鹏 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/445 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | windows 应用程序 虚拟 实现 方法 | ||
1.一种Windows应用程序虚拟化的实现方法,其特征在于,包括:
根据配置文件,截获应用程序在运行过程中调用的与系统注册表有关的第一系统调用,使用在所述应用程序执行时注入的动态链接库中的系统调用,重写所截获的第一系统调用,并使用重写后的系统调用将私有注册表和系统注册表进行融合,形成虚拟注册表,以使所述应用程序根据所述虚拟注册表对所述私有注册表和所述系统注册表进行访问;
根据所述配置文件,截获所述应用程序在运行过程中调用的与文件操作有关的第二系统调用,根据所截获的第二系统调用中的路径参数,获取文件所属的空间,并根据所述配置文件中存储的系统空间、软件空间和用户空间相互之间的路径映射关系,返回与操作所述文件的操作类型相适应的路径信息,然后,根据所述路径信息对所述文件进行操作。
2.根据权利要求1所述的Windows应用程序虚拟化的实现方法,其特征在于,所述根据配置文件,截获应用程序在运行过程中调用的与系统注册表有关的第一系统调用,使用在所述应用程序执行时注入的动态链接库中的系统调用,重写所截获的第一系统调用,并使用重写后的系统调用将私有注册表和系统注册表进行融合,形成虚拟注册表,以使所述应用程序根据所述虚拟注册表对所述私有注册表和所述系统注册表进行访问包括:
截获所述应用程序打开创建注册表键值的第一系统调用,根据所述应用程序打开创建注册表键值的第一系统调用中的注册表键的路径值,返回虚拟键句柄;如果所述路径值存在于所述系统注册表中,则打开系统注册表键,并将返回的句柄存储在所述虚拟键句柄中;如果所述路径值存在于所述私有注册表中,则打开私有注册表键,并将返回的句柄存储在虚拟键句柄中;如果是创建新注册表键,则在所述私有注册表中创建新键,并将返回的句柄存储在虚拟键句柄中;
截获所述应用程序查询注册表键值的第一系统调用,并根据所述应用程序查询注册表键值的第一系统调用中虚拟键句柄参数,进行所述虚拟注册表的查询操作;所述虚拟注册表的查询操作包括:根据第一路径值在所述私有注册表中查询第一键值,如果所述第一键值存在所述私有注册表中,根据所述第一键值执行相应操作;如果所述第一键值不存在所述私有注册表中,判 断所述第一路径值是否存在于删除列表中;如果所述第一路径值存在所述删除列表中,返回键值不存在信息;如果所述第一路径值不存在所述删除列表中,根据所述第一路径值从所述系统注册表中查询所述第一键值;
截获所述应用程序修改注册表键值的第一系统调用,并根据所述应用程序修改注册表键值的第一系统调用中虚拟键句柄参数,进行虚拟注册表的修改操作;所述虚拟注册表的修改操作包括:根据第二路径值在所述私有注册表中查询第二键值,如果所述第二键值存在所述私有注册表中,根据所述第二键值在所述私有注册表中执行相应修改操作;如果所述第二键值不存在所述私有注册表中,判断第二路径值是否存在于所述系统注册表中;如果所述第二路径值存在所述系统注册表中,根据所述第二路径值在所述私有注册表中创建所述第二键值并执行相应修改操作;如果所述第二路径值不存在所述系统注册表,返回键值不存在信息;
截获所述应用程序删除注册表键值的第一系统调用,并根据所述应用程序删除注册表键值的第一系统调用中虚拟键句柄参数,进行虚拟注册表的删除操作;所述虚拟注册表的删除操作包括:根据第三路径值在所述私有注册表中查询第三键值,如果所述第三键值存在所述私有注册表中,根据所述第三键值在所述私有注册表中执行相应删除操作,并判断所述第三路径值是否存在所述系统注册表中;如果所述第三键值不存在所述私有注册表中,直接判断所述第三路径值是否存在所述系统注册表中;如果所述第三路径值存在所述系统注册表中,在所述删除列表中记录所述第三路径值;如果所述第三路径值不存在所述系统注册表中,返回键值不存在信息;
截获所述应用程序修改通知注册表键值的第一系统调用,并根据所述应用程序修改通知虚拟注册表键值的第一系统调用中虚拟键句柄参数,进行虚拟注册表的修改通知操作;所述虚拟注册表的修改通知操作包括:获取所述私有注册表的版本号,如果所获取的私有注册表的版本号与本地存储的版本号相同,根据所述私有注册表的版本号执行相应注册操作;如果所获取的私有注册表的版本号与本地存储的版本号不相同,重构所述私有注册表,并保存重构的私有注册表的版本号,并根据重构的私有注册表的版本号执行相应注册操作;在执行相应注册操作之后,再次获取所述私有注册表的版本号,如果所述私有注册表的版本号发生了改变,根据第四路径值和执行相应注册 操作所注册的事件对象发出修改事件通知;如果所述私有注册表的版本号没有发生改变,则返回。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110402069.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种车牌定位方法
- 下一篇:一种充电辊及其制造方法