一种注册表虚拟化方法及装置的制作方法

文档序号:6443766阅读:935来源:国知局
专利名称:一种注册表虚拟化方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,特别涉及一种注册表虚拟化方法及装置。
背景技术
随着技术发展,口袋操作系统(PKOS,Pocket Operating System)日益在国外发达国家和国内大中型城市流行开来。其中,所述口袋操作系统是放置在可移动磁盘上的一个特殊的应用软件,其他应用软件可以在口袋操作系统进行安装、运行、卸载等,应用软件产生的数据都包含在口袋操作系统中,实现应用软件在不同主机的移动性。同时,口袋操作系统具有便捷性和安全性,运行在I3KOS中的应用软件进程叫做虚拟进程。PKOS 的核心是一个系统应用编程接口(API,Application Programming Interface)拦截层,用来拦截文件及注册表的系统API,将虚拟进程对系统的修改操作重定向到HiOS的私有文件系统和私有注册表中,并将HiOS中的私有文件系统和私有注册表与本地主机上文件系统和注册表进行合并,形成虚拟文件系统和虚拟注册表。该拦截层执行的重定向操作对虚拟进程透明,即虚拟进程不知道拦截层的存在。在对现有技术的研究和实践过程中,本发明的发明人发现,现有的实现方式中,当需要加载的虚拟注册表的数量较大时(比如大于2MB等),加载时间就会很长,从而导致 PKOS启动比较慢,影响了口袋操作系统的运行性能。

发明内容
本发明实施例提供一种注册表虚拟化方法及装置,以解决现有技术中口袋操作系统启动比较慢的技术问题,以提高口袋操作系统的运行性能。为解决上述技术问题,本发明实施例提供一种虚拟注册表更新方法,应用于口袋操作系统,所述方法包括组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;拦截口袋操作系统中虚拟进程对主机系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,当所拦截的操作为对系统注册表的修改操作时,根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值, 当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中;删除所述私有注册表。相应的,本发明还提供一种虚拟注册表更新装置,应用于口袋操作系统,所述装置包括组成单元,用于组成私有注册表,所述私有注册表包括在主机系统注册表中建立
6的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;拦截重定向单元,用于拦截口袋操作系统中虚拟进程对主机系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,其中,当所拦截的操作为对系统注册表的修改操作时,根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值,当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;更新单元,用于将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中;第一删除单元,用于删除所述私有注册表。由上述技术方案可知,本发明实施例中,在口袋操作系统启动时,仅创2建系统注册表虚拟分支,而在虚拟进程启动时才构建与该虚拟进程对应的内存树形结构,并在口袋操作系统中虚拟进程运行时,不断修改系统注册表中虚拟分支中相关函数,从而使得对系统注册表虚拟分支的修改等内容,在各个虚拟进程运行时共享;而在虚拟进程运行时对需要修改的相关函数如果在内存树形结构中存在的话,就删除内存树形结构中所述相关的函数,以使得内存树形结构中后续应用程序查询量减小,加快处理速度。口袋操作系统使用系统注册表虚拟分支和内存空间树形结构相结合的方式,优化了口袋操作系统启动速度,提高了口袋操作系统的运行性能,同时也提高了用户的体验度。


图1为本发明实施例提供的一种虚拟注册表更新方法的流程图;图2为本发明实施例提供的一种组成私有注册表的具体流程图;图3为本发明实施例提供的一种虚拟注册表修改操作的流程图;图4为本发明实施例提供的一种虚拟注册表查询操作的流程图;图5为本发明实施例提供的一种退出口袋操作系统的流程图;图6为本发明实施例提供的一种虚拟注册表更新装置的结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。请参阅图1,为本发明实施例提供的一种虚拟注册表更新方法的流程图,所述方法包括步骤101 组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;本实施例中,所述私有注册表包括内存树形结构与系统注册表虚拟分支,所述系统注册表虚拟分支是口袋操作系统启动时在主机系统注册表中创建的一个分支;在虚拟进程启动时,解析虚拟注册表文件,得到虚拟注册表信息;根据所述虚拟注册表信息在内存空间构建虚拟进程的内存树形结构。所述虚拟进程为运行在口袋操作系统中的应用软件进程。其中,组成私有注册表的过程为在口袋操作系统启动时,首先创建系统注册表虚拟分支,口袋操作系统中的虚拟进程启动时,解析虚拟注册表文件,得到虚拟注册表信息, 根据虚拟注册表文件与当前系统注册表虚拟分支的状态创建虚拟进程的内存树形结构,遍历所述系统注册表虚拟分支,删除所述内存树形结构中与系统注册表虚拟分支相同的键或项值,所述系统注册表虚拟分支为在口袋操作系统启动时创建并在口袋操作系统任一虚拟进程运行时进行更新的系统注册表虚拟分支;内存树形结构与系统注册表虚拟分支相结合组成私有注册表。其中,组成本发明实施例中私有注册表的方法并不限于上述方法,只要私有注册表中由虚拟进程对应的内存树形结构及系统注册表虚拟分支组成,对内存树形结构中与系统注册表虚拟分支相同的键或项值在形成私有注册表的时候也可以不进行删除。步骤102 拦截虚拟进程对系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,当所拦截的操作为对系统注册表的修改操作时, 根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值,当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;在该步骤中,虚拟进程对注册表的所有操作均被重定向到私有注册表(即系统注册表虚拟分支及内存树形结构)中,比如,虚拟进程对系统注册表的修改操作都被拦截并重定向到该所述系统注册表虚拟分支中等。其中,本实施例中虚拟进程对系统注册表虚拟分支中信息进行操作可以包括对虚拟注册表信息的修改操作,或者是对虚拟注册表信息的查询操作等,但并不限于此,其中, 所述的修改包括对已有数据的变更以及对没有的数据进行创建。步骤103 将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中;在该步骤中,虚拟进程将私有注册表的内容更新到虚拟注册表文件中;所述虚拟注册表文件可以保存本地磁盘或移动硬盘上,也可以保存在其他的移动设备上,只要能被 windows操作系统识别,即可,本实施例不作限制。其中,所述虚拟注册表文件中保存有虚拟进程对注册表的修改操作。在口袋操作系统退出时,对修改后的系统注册表虚拟分支中的内容需要更新到口袋操作系统对应的虚拟注册表文件中,可以通过以下方法实现将遍历所述系统注册表虚拟分支,新建一个临时内存树形结构,并将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中,然后将所述临时内存树形结构中的所有信息以树形结构的形式保存到所述虚拟注册表文件中,清空所述临时内存树形结构中的所有信息。步骤104 删除所述私有注册表。在口袋操作系统退出时,删除所述系统注册表虚拟分支。其中,之前建立的内存树形结构会在口袋操作系统退出时,自动删除,因此,本发明实施例中删除私有注册表,可以仅删除所述系统注册表的虚拟分支。其中,在该实施例中,步骤102以两种情况为例,但并不限于此,一种情况是,虚拟进程在修改注册表中的某一键值或项值(所述键值或项值,泛指注册表中的项或键或者值,所述值又包括名称、类型和数据)K时,可以分别查询系统注册表虚拟分支中和内存树形结构中是否存在待修改的键值或项值,为提高查询效率,本发明实施例中,可以先查询所述系统注册表虚拟分支中是否存在键值或项值K,再查询内存树形结构中是否存在键值或项值K,如果键值或项值都不存在,则直接在系统注册表虚拟分支中创建键值或项值K,并向虚拟进程返回创建成功的消息。如果键值或项值都存在,则删除键值或项值K,修改键值或项值K,并向虚拟进程返回修改成功的消息。如果键值或项值不存在,则修改键值或项值 K并向虚拟进程返回修改成功的消息。如果系统注册表虚拟分支不存在键值或项值K,但内存树形结构中存在键值或项值K存在,则将内存树形结构中存在键值或项值K导入到系统注册表虚拟分支中,然后修改系统注册表虚拟分支的键值或项值K,并返回修改成功的消肩、ο另一种情况是虚拟进程在查询注册表某一键值K时,先查询所述系统注册表虚拟分支中是否存在键值或项值K,再查询内存树形结构中是否存在键值或项值K,如果系统注册表虚拟分支和内存树形结构中都不存在键值或项值,则直接返回所述键值或项值不存在。如果系统注册表虚拟分支和内存树形结构中都存在所述键值或项值,则删除内存树形结构中的键值或项值K并返回键值或项值。如果系统注册表虚拟分支存在所述键值或项值 K,但内存树形结构中不存在键值或项值K,则返回系统注册表虚拟分支存在所述键值或项值K。如果系统注册表虚拟分支不存在所述键值或项值K,但内存树形结构中存在键值或项值K,则返回内存树形结构中存在键值或项值K。口袋操作系统中可能存在多个虚拟程序,每个虚拟程序对注册表的查询或修改操作都不尽相同。所以在某些时间会出现所述内存树形结构和所述系统注册表虚拟分支中的键值或项值不完全相同的情况。本发明实施例应用于口袋操作系统(PK0S,Pocket Operating System),口袋操作系统存储于移动存储设备中,比如移动硬盘等,但并不限于此。在口袋操作系统与主机系统进行信息交互时,比如,一个普通应用程序,所有功能可能涉及到大量注册表信息,但在启动时,大部分注册表操作是查询类操作;程序运行时,也是仅对少量注册表信息进行修改; 而对于注册表操作函数,查询类函数速度很快,而修改类函数时间较慢;基于此,本发明实施例中,在口袋操作系统启动时,仅创建系统注册表虚拟分支,而在虚拟进程启动时才构建内存树形结构,并在口袋操作系统中虚拟进程运行时,不断修改系统注册表中虚拟分支中相关函数,从而使得对系统注册表虚拟分支的修改等内容,在各个虚拟进程运行时共享;而在虚拟进程运行时对需要修改的相关函数如果在内存树形结构中存在的话,就删除内存树形结构中所述相关的函数,以使得内存树形结构中后续应用程序查询量减小,加快处理速度。因此,本发明实施例的口袋操作系统使用“创建系统注册表虚拟分支(VRegSubNode)和建立内存空间树形结构(VRegMemTree) ”相结合的方式优化了口袋操作系统启动速度,提高了口袋操作系统的运行性能,提高了用户的体验度。下面分别对图1中各个步骤进行详细的描述。还请参阅图2,为本发明实施例中提供的一种组成私有注册表操作的具体流程图, 在该实施例中,组成私有注册表可以理解为对虚拟注册表文件的初始化,也可以理解为对虚拟注册表的加载操作,具体包括步骤201 口袋操作系统启动时,创建系统注册表虚拟分支;步骤202 在虚拟进程启动时,解析虚拟注册表文件,得到虚拟注册表信息;
步骤203 根据所述虚拟注册表信息在内存空间构建内存树形结构;步骤204:遍历系统注册表虚拟分支,并删除所述内存树形结构中与系统注册表虚拟分支相同的键或项值。其中,所述遍历系统注册表虚拟分支,就是遍历H(0S启动时在主机系统注册表中创建的一个分支,虚拟进程对注册表的修改操作都被拦截并重定向到该分支。所述构建内存树形结构,就是先解析虚拟注册表文件,然后,根据解析后的数据在内存空间建立虚拟注册表的内存树形结构,也就是说,内存树形结构是建立在主机的内存空间上。还请参阅图3,为本发明实施例提供的一种虚拟注册表修改操作的流程图,该实施例为对所述私有注册表中的虚拟注册表信息进行操作处理的一种情况,本实施例以修改注册表中某一键值为例,具体包括步骤301 拦截到虚拟进程修改注册表中某一键值K操作;步骤302 口袋操作系统查找所述系统注册表虚拟分支中是否存在键值Kl ;如果不存在,执行步骤303 ;如果存在,执行步骤304 ;步骤303 口袋操作系统查询所述内存树形结构中是否存在键值K2 ;如果不存在, 执行步骤305 ;如果存在,执行步骤306 ;步骤304 口袋操作系统查询所述内存树形结构中是否存在键值K2 ;如果存在,执行步骤307 ;如果不存在,执行步骤308 ;步骤305 口袋操作系统在系统注册表虚拟分支中创建键值Kl ;步骤306 口袋操作系统将所述内存树形结构中的该键值K2导入系统注册表虚拟分支Ki中;步骤307 口袋操作系统删除内存树形结构中的键值K2 ;步骤308 口袋操作系统修改系统注册表虚拟分支中的键值Kl ;步骤309 口袋操作系统反馈键值Kl。在该实施例中,K = Kl = K2。也就是说,在该实施例中,虚拟进程修改键值或项值Kl时,口袋操作系统先查询所述系统注册表虚拟分支中是否存在键值或项值K1,再查询内存树形结构中是否存在键值或项值K2,如果Kl和K2都不存在,则直接在系统注册表虚拟分支中创建K1,并返回创建成功消息。如果Kl和K2都存在,则删除K2,修改K1,并返回修改成功的消息。如果Kl存在但K2不存在,则修改K1,并返回修改成功的消息。如果Kl不存在但K2存在,则将K2导入到Kl中,然后修改K1,并返回修改成功的消息。还请参阅图4,为本发明实施例提供的一种虚拟注册表查询操作的流程图,在该实施例为对所述私有注册表中的虚拟注册表信息进行操作处理的另一种情况,具体包括步骤401 拦截到虚拟进程查询虚拟注册表K ;步骤402 口袋操作系统查询所述系统注册表分支是否存在Kl ;如果不是,执行步骤403 ;如果是,执行步骤404 ;步骤403 口袋操作系统查询所述内存树形结构是否存在K2,如果不是,执行步骤 405 ;否则,执行步骤406 ;步骤404 口袋操作系统查询所述内存树形结构是否存在K2,如果不是,执行步骤 407 ;否则,执行步骤408 ;降低查找冗余。步骤405 口袋操作系统反馈不存在键值或项值K ;虚拟程序返回查询到的所述键值或项值K ;步骤406 口袋操作系统反馈K2步骤407 口袋操作系统反馈Kl步骤408 口袋操作系统删除K2在该实施例中,K = Kl = K2。也就是说,虚拟进程在查询注册表某一键值K时,先查询所述系统注册表虚拟分支中是否存在键值或项值K1,再查询内存树形结构中是否存在键值或项值K2,如果Kl和K2 都不存在,则直接返回K不存在。如果Kl和K2都存在,则删除K2并返回Kl。如果Kl存在但K2不存在,则返回Kl。如果Kl不存在但K2存在,则返回K2。还请参阅图5,为本发明实施例中提供的一种退出口袋操作系统的流程图,在该实施例中,即删除私有注册表,具体包括步骤501 口袋操作系统遍历所述系统注册表虚拟分支中修改后的注册表信息;步骤502 解析虚拟注册表文件并构建临时内存树形结构,将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中;步骤503 将所述临时内存树形结构中的所有信息以树形结构的形式保存到所述虚拟注册表文件中;步骤504 清除所述临时内存树形结构并删除所述系统注册表虚拟分支。也就是说,口袋操作系统首先遍历所述系统注册表虚拟分支,解析虚拟注册表文件并构建临时内存树形结构,将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中,然后将所述临时内存树形结构中的所有信息以树形结构的形式保存到所述虚拟注册表文件中,最后清除所述临时内存树形结构并删除所述系统注册表虚拟分支,防止用户信息泄露。由于本发明实施例虚拟程序启动时,构建了内存空间树形结构的虚拟注册表,时间快,即HiOS将私有键值或项值的创建分担到注册表信息修改时才创建,提高了 raos的启动速度,以及提高了口袋操作系统的运行性能,增强了用户体验。进一步,当虚拟注册表信息发生变化时,系统注册表虚拟分支及时更新,便于进程间通过注册表共享、传递信息,还可以采用修改查询注册表中键值的信息来判定是否使用了本发明所述技术方案。基于上述方法的实现过程,本发明实施例还提供一种虚拟注册表更新装置,其结构示意图详见图6,所述装置包括组成单元,61、拦截重定向单元62,更新单元63和第一删除单元64。其中,所述组成单元61,用于组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;所述拦截重定向单元62,用于拦截口袋操作系统中虚拟进程对主机系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,其中,当所拦截的操作为对系统注册表的修改操作时,根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值,当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;所述更新单元63,用于将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中;所述第一删除单元64,用于删除所述私有注册表,具体用于在口袋操作系统退出时,删除所述系统注册表虚拟分支。其中,所述组成单元包括解析单元,内存树形结构构建单元和第二删除单元,其中,所述第一初始化单元,用于在口袋操作系统启动时,创建系统注册表虚拟分支;所述解析单元,用于在虚拟程序启动时,解析所述虚拟注册表文件,得到虚拟注册表信息;所述内存树形结构构建单元,用于根据所述虚拟注册表信息在内存空间构建内存树形结构;所述第二删除单元,用于遍历所述系统注册表虚拟分支,删除所述内存树形结构中与系统注册表虚拟分支相同的键值或项值。优选的,当所述操作为修改操作时,所述拦截重定向单元包括第一查询单元,创建单元,第三删除单元,第一返馈单元和导入单元,其中,所述第一查询单元,用于在修改一个键值或项值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;所述创建单元,用于在所述第一查询单元从所述系统注册表虚拟分支和内存树形结构中均没有查询到时,直接在所述系统注册表虚拟分支中创建该键值或项值并返回;所述第三删除单元,用于在所述第一查询单元从所述系统注册表虚拟分支和内存树形结构中均查询到时,删除所述内存树形结构中的所述键值或项值,修改系统注册表虚拟分支中所述键值或项值;所述第一返馈单元,用于在所述第一查询单元从所述系统注册表虚拟分支查询到所述键值或项值,且从所述内存树形结构中没有查询到所述键值或项值时,修改所述系统注册表虚拟分支中的所述键值或项值;所述导入单元,用于在所述第一查询单元从所述系统注册表虚拟分支没有查询到所述键值或项值,且从所述内存树形结构中查询到所述键值或项值时,将所述内存树形结构中的所述键值或项值导入到所述系统注册表虚拟分支中,对导入后的所述系统注册表虚拟分支中的所述键值或项值进行修改。优选的,所述拦截重定向单元还用于,当所述操作为对系统注册表的查询操作时, 返回查询结果,并当所述内存树形结构中与所述系统注册表虚拟分支中都有该操作所对应的键值和项值时,删除所述内存树形结构中与该操作对应的相同的键值或项值。其中,当所述操作为查询操作时,所述拦截重定向单元还可以包括第二查询单元,第二返馈单元,第四删除单元,第三返馈单元和第四返馈单元,其中,所述第二查询单元,用于在查询一个键值或项值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;所述第二返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支和所述内存树形结构中都没有查询到所述键值或项值时,直接返回不存在所述键值或项值;所述第四删除单元,用于在所述第二查询单元从所述系统注册表虚拟分支和所述内存树形结构中都查询到所述键值或项值时,删除所述内存树形结构中的所述键值或项值,并返回所述系统注册表虚拟分支中的所述键值或项值;所述第三返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支查找到所述键值或项值,且从所述内存树形结构中没有查找到所述键值或项值时,返回所述系统注册表虚拟分支中的所述键值或项值; 所述第四返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支没有查找到所述键值或项值,且从所述内存树形结构中查找到所述键值或项值时,则返回所述内存树形结构中存在所述键值或项值。优选的,当所述操作为查询操作时,所述拦截重定单元还可以包括第三查找单元,第四查找单元,第五反馈单元,第六反馈单元,第五查找单元,第五删除单元和第七反馈单元,其中,所述第三查找单元,用于先查找所述系统注册表虚拟分支是否存在所述键值或项值,所述第四查找单元,用于在所述第三查找单元没有查找到所述键值或项值时,继续查找所述内存树形结构是否存在对应的所述键值或项值,所述第五反馈单元,用于在所述第四查找单元从所述内存树形结构中查找所述述键值或项值时,反馈在内存树形结构中查找到的所述键值或项值,所述第六反馈单元,用于在所述第四查找单元从所述内存树形结构中没有查找所述述键值或项值时,反馈在系统注册表虚拟分支和内存树形结构中均没有查找到所述键值或项值;所述第五查找单元,用于在所述第三查找单元查找到所述键值或项值时,继续查找所述内存树形结构是否存在对应的所述键值或项值;所述第五删除单元, 用于在所述第五查询单元从所述内存树形结构中查找到所述键值或项值,则删除所述内存树形结构中的所述键值或项值,返回所述系统注册表虚拟分支中的所述键值或项值;所述第七反馈单元,用于在所述第五查询单元从所述内存树形结构中没有查找到所述键值或项值,则返回所述系统注册表虚拟分支中的所述键值或项值。优选的,所述更新单元包括遍历单元,解析单元,添加单元,写入单元,其中,所述遍历单元,用于在口袋操作系统退出时,遍历所述系统注册表虚拟分支中修改后的注册表信息;所述解析单元,用于解析虚拟注册表文件并构建临时内存树形结构;所述添加单元, 用于将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中,所述写入单元,用于将所述临时内存树形结构中的所有信息以树形结构的形式全部写入到所述虚拟注册表文件中,并清空所述临时内存树形结构中的所有信息。由于本发明实施例虚拟程序启动时,构建了内存空间树形结构的虚拟注册表,时间快,即HiOS将私有键值或项值的创建分担到注册表信息修改时才创建,提高了 raos的启动速度,以及提高了口袋操作系统的运行性能,增强了用户体验。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/ RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种虚拟注册表更新方法,应用于口袋操作系统,其特征在于,包括组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;拦截口袋操作系统中虚拟进程对主机系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,当所拦截的操作为对系统注册表的修改操作时,根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值,当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中; 删除所述私有注册表。
2.根据权利要求1所述的方法,其特征在于,所述组成私有注册表,包括 在虚拟进程启动时,解析虚拟注册表文件,得到虚拟注册表信息;根据所述虚拟注册表信息在内存空间构建虚拟进程的内存树形结构; 遍历系统注册表虚拟分支,删除所述内存树形结构中与系统注册表虚拟分支相同的键值或项值,所述系统注册表虚拟分支为在口袋操作系统启动时创建并在口袋操作系统任一虚拟进程运行时进行更新的系统注册表虚拟分支;所述内存树形结构与系统注册表虚拟分支组成私有注册表。
3.根据权利要求1所述的方法,其特征在于,当所述操作为对系统注册表的修改操作时,更新所述系统注册表虚拟分支中的操作对象,并当所述操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中相同的键值或项值,包括虚拟进程在修改注册表的一个键值或项值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;如果所述系统注册表虚拟分支和所述内存树形结构中都不存在所述键值或项值,则直接在所述系统注册表虚拟分支中创建该键值或项值并返回;如果所述系统注册表虚拟分支和所述内存树形结构中都存在所述键值或项值,则删除所述内存树形结构中的所述键值或项值,修改系统注册表虚拟分支中所述键值或项值;如果所述系统注册表虚拟分支存在所述键值或项值,而所述内存树形结构中不存在所述键值或项值,则修改所述系统注册表虚拟分支中的所述键值或项值;如果所述系统注册表虚拟分支不存在所述键值或项值,而所述内存树形结构中存在所述键值或项值,则将所述内存树形结构中的所述键值或项值导入到所述系统注册表虚拟分支中,对导入后的所述系统注册表虚拟分支中的所述键值或项值进行修改。
4.根据权利要求1或3所述的方法,其特征在于,该方法进一步包括,当所述操作为对系统注册表的查询操作时,返回查询结果,并当所述内存树形结构中与所述系统注册表虚拟分支中都有该操作所对应的键值和项值时,删除所述内存树形结构中与该操作对应的相同的键值或项值。
5.根据权利要求4所述的方法,其特征在于,所述当所述操作为对系统注册表的查询操作时,返回查询结果,并当所述内存树形结构中与所述系统注册表虚拟分支中都有该操作所对应的键值和项值时,删除所述内存树形结构中与该操作对应的相同的键值或项值,包括虚拟进程在查询一个注册表键值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;如果所述系统注册表虚拟分支和所述内存树形结构中都不存在所述键值或项值,则直接返回不存在所述键值或项值;如果所述系统注册表虚拟分支和所述内存树形结构中都存在所述键值或项值,则删除所述内存树形结构中的所述键值或项值,返回所述系统注册表虚拟分支中的所述键值或项值;如果所述系统注册表虚拟分支存在所述键值或项值,而所述内存树形结构中不存在所述键值或项值,则返回所述系统注册表虚拟分支中的所述键值或项值;如果所述系统注册表虚拟分支不存在所述键值或项值,而所述内存树形结构中存在所述键值或项值,则返回所述内存树形结构中存在所述键值或项值。
6.根据权利要求4所述的方法,其特征在于,所述当所述操作为对系统注册表的查询操作时,返回查询结果,并当所述内存树形结构中与所述系统注册表虚拟分支中都有该操作所对应的键值和项值时,删除所述内存树形结构中与该操作对应的相同的键值或项值, 包括先查找所述系统注册表虚拟分支是否存在所述键值或项值,如果在系统注册表虚拟分支不存在所述键值或项值,则继续查找所述内存树形结构是否存在对应的所述键值或项值,如果在内存树形结构中存在,则反馈在内存树形结构查找到的所述键值或项值,如果在内存树形结构中不存在,反馈在系统注册表虚拟分支和内存树形结构中均没有查找到所述键值或项值;如果在系统注册表虚拟分支存在所述键值或项值,则继续查找所述内存树形结构是否存在对应的所述键值或项值,如果在内存树形结构中存在,则删除所述内存树形结构中的所述键值或项值,返回所述系统注册表虚拟分支中的所述键值或项值;如果在内存树形结构不存在,则返回所述系统注册表虚拟分支中的所述键值或项值。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中,包括在口袋操作系统退出时,遍历所述系统注册表虚拟分支中修改后的注册表信息,解析虚拟注册表文件并构建临时内存树形结构,将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中,然后将所述临时内存树形结构中的所有信息保存到所述虚拟注册表文件中,并清空所述临时内存树形结构中的所有信息。
8.—种虚拟注册表更新装置,应用于口袋操作系统,其特征在于,所述装置包括组成单元,用于组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;拦截重定向单元,用于拦截口袋操作系统中虚拟进程对主机系统注册表的所有操作, 并将所有操作重定向到所述系统注册表虚拟分支及内存树形结构中,其中,当所拦截的操作为对系统注册表的修改操作时,根据所拦截的操作修改所述系统注册表虚拟分支中的该操作所对应键值或项值,并当所拦截的操作在所述内存树形结构中对应相同的键值或项值时,删除所述内存树形结构中与所述系统注册表虚拟分支中与该操作对应的相同的键值或项值;更新单元,用于将修改后的所述系统注册表虚拟分支更新到所述虚拟注册表文件中; 第一删除单元,用于删除所述私有注册表。
9.根据权利要求8所述的装置,其特征在于,所述组成单元包括解析单元,用于在虚拟程序启动时,解析所述虚拟注册表文件,得到虚拟注册表信息; 内存树形结构构建单元,用于根据所述虚拟注册表信息在内存空间构建内存树形结构;第二删除单元,用于遍历所述系统注册表虚拟分支,删除所述内存树形结构中与系统注册表虚拟分支相同的键值或项值,所述系统注册表虚拟分支为在口袋操作系统启动时创建并在口袋操作系统任一虚拟进程运行时进行更新的系统注册表虚拟分支。
10.根据权利要求8所述的装置,其特征在于,当所述操作为修改操作时,所述拦截重定向单元包括第一查询单元,用于在修改一个键值或项值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;创建单元,用于在所述第一查询单元从所述系统注册表虚拟分支和内存树形结构中均没有查询到时,直接在所述系统注册表虚拟分支中创建该键值或项值并返回;第三删除单元,用于在所述第一查询单元从所述系统注册表虚拟分支和内存树形结构中均查询到时,删除所述内存树形结构中的所述键值或项值,修改系统注册表虚拟分支中所述键值或项值;第一返馈单元,用于在所述第一查询单元从所述系统注册表虚拟分支查询到所述键值或项值,而从所述内存树形结构中没有查询到所述键值或项值时,修改所述系统注册表虚拟分支中的所述键值或项值;导入单元,用于在所述第一查询单元从所述系统注册表虚拟分支没有查询到所述键值或项值,而从所述内存树形结构中查询到所述键值或项值时,将所述内存树形结构中的所述键值或项值导入到所述系统注册表虚拟分支中,对导入后的所述系统注册表虚拟分支中的所述键值或项值进行修改。
11.根据权利要求8或10所述的装置,其特征在于,所述拦截重定向单元还用于,当所述操作为对系统注册表的查询操作时,返回查询结果,并当所述内存树形结构中与所述系统注册表虚拟分支中都有该操作所对应的键值和项值时,删除所述内存树形结构中与该操作对应的相同的键值或项值。
12.根据权利要求11所述的装置,其特征在于,当所述操作为查询操作时,所述拦截重定向单元还包括第二查询单元,用于在查询一个键值或项值时,分别查询所述系统注册表虚拟分支和内存树形结构中是否存在所述键值或项值;第二返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支和所述内存树形结构中都没有查询到所述键值或项值时,直接返回不存在所述键值或项值;第四删除单元,用于在所述第二查询单元从所述系统注册表虚拟分支和所述内存树形结构中都查询到所述键值或项值时,删除所述内存树形结构中的所述键值或项值,并返回所述系统注册表虚拟分支中的所述键值或项值;第三返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支查找到所述键值或项值,而从所述内存树形结构中没有查找到所述键值或项值时,返回所述系统注册表虚拟分支中的所述键值或项值;第四返馈单元,用于在所述第二查询单元从所述系统注册表虚拟分支没有查找到所述键值或项值,而从所述内存树形结构中查找到所述键值或项值时,则返回所述内存树形结构中存在所述键值或项值。
13.根据权利要求11所述的装置,其特征在于,当所述操作为查询操作时,所述拦截重定单元还包括第三查找单元,用于先查找所述系统注册表虚拟分支是否存在所述键值或项值, 第四查找单元,用于在所述第三查找单元没有查找到所述键值或项值时,继续查找所述内存树形结构是否存在对应的所述键值或项值,第五反馈单元,用于在所述第四查找单元从所述内存树形结构中查找所述述键值或项值时,反馈在内存树形结构中查找到的所述键值或项值,第六反馈单元,用于在所述第四查找单元从所述内存树形结构中没有查找所述述键值或项值时,反馈在系统注册表虚拟分支和内存树形结构中均没有查找到所述键值或项值;第五查找单元,用于在所述第三查找单元查找到所述键值或项值时,继续查找所述内存树形结构是否存在对应的所述键值或项值;第五删除单元,用于在所述第五查询单元从所述内存树形结构中查找到所述键值或项值,则删除所述内存树形结构中的所述键值或项值,返回所述系统注册表虚拟分支中的所述键值或项值;第七反馈单元,用于在所述第五查询单元从所述内存树形结构中没有查找到所述键值或项值,则返回所述系统注册表虚拟分支中的所述键值或项值。
14.根据权利要求8至10任一项所述的装置,其特征在于,所述更新单元包括遍历单元,用于在口袋操作系统退出时,遍历所述系统注册表虚拟分支中修改后的注册表信息;解析单元,用于解析虚拟注册表文件并构建临时内存树形结构; 添加单元,用于将所述系统注册表虚拟分支的所有信息添加到所述临时内存树形结构中,写入单元,用于将所述临时内存树形结构中的所有信息全部写入到所述虚拟注册表文件中,并清空所述临时内存树形结构中的所有信息。
全文摘要
本发明实施例提供一种虚拟注册表更新方法及装置,所述方法包括根据虚拟进程的虚拟注册表文件组成私有注册表,所述私有注册表包括在主机系统注册表中建立的与口袋操作系统对应的系统注册表虚拟分支,以及根据口袋操作系统中的虚拟进程构建的内存树形结构;拦截虚拟进程对系统注册表的所有操作,并将所有操作重定向到所述系统注册表虚拟分支和内存树形结构;将经过重定向操作后的所述私有注册表更新到所述虚拟注册表文件中;删除所述私有注册表。本发明实施例解决了现有技术中口袋操作系统启动比较慢的技术问题,提高了口袋操作系统的运行性能。
文档编号G06F9/455GK102567078SQ20111044781
公开日2012年7月11日 申请日期2011年12月28日 优先权日2011年12月28日
发明者任伟峰, 王奇飞 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1