应用程序虚拟化方法及系统的制作方法
【专利摘要】本发明提出一种应用程序虚拟化方法及系统,其中方法包括以下步骤:对目标操作系统进行扫描以记录目标操作系统的文件信息和注册表信息;在目标操作系统安装应用程序,并跟踪应用程序在安装过程中对文件信息和注册表信息的操作记录;扫描安装应用程序的目标操作系统,以得到文件信息和注册表信息的变更数据;以及根据变更数据生成用于启动应用程序的启动器。根据本发明实施例的方法,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
【专利说明】应用程序虚拟化方法及系统
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种应用程序虚拟化方法及系统。
【背景技术】
[0002]随着计算机技术的快速发展,虚拟化技术已经非常成熟,其应用领域非常广泛。
[0003]虚拟化的层次有多种,第一种是操作系统层次的虚拟化,即常见的虚拟机,例如Qemu, VMWare Workstation, VirtualBox,这是在软件层次上的最底层虚拟化,模拟了整个硬件环境。第二种是应用平台的虚拟化,通过中间字节指令来执行虚拟化,即只进行一次程序编写,就可以在各个平台上直接运行,例如Java平台。第三种是应用程序的虚拟化,通过构建虚拟应用程序资源环境,让应用程序可以不依赖系统资源环境而运行。
[0004]虽然有多种应用程序的虚拟化方法可以对应用程序进行虚拟化,但是存在诸多缺陷。
[0005]第一,现有方案失败率高,例如thinapp等工具,其所生成的可执行文件往往不能直接运行。第二,现有方案不够通用,对于遇到服务、驱动、运行库依赖、特殊异常等状况时,无法执行。第三:大部分现有方案需要具备专业知识的人员才能操作,对于普通用于而言难度较大。
【发明内容】
[0006]本发明的目的旨在至少解决上述的技术缺陷之一。
[0007]为此,本发明需要提供一种应用程序虚拟化方法。
[0008]本发明另一方面提供一种应用程序虚拟化系统。
[0009]有鉴于此,本发明的实施例提出一种应用程序虚拟化方法,包括以下步骤:第一次扫描步骤,对目标操作系统进行扫描以记录所述目标操作系统的文件信息和注册表信息;跟踪步骤,在所述目标操作系统安装应用程序,并跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录;第二次扫描步骤,扫描安装所述应用程序的所述目标操作系统,以得到所述文件信息和所述注册表信息的变更数据;以及启动器生成步骤,根据所述变更数据生成用于启动所述应用程序的启动器。
[0010]根据本发明实施例的方法,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
[0011]在本发明的一个实施例中,还包括:恢复步骤,将所述目标操作系统的所述文件信息和所述注册表信息恢复到所述应用程序启动前的状态。
[0012]在本发明的一个实施例中,还包括:判断步骤,通过所述启动器安装所述应用程序后,判断所述应用程序运行是否正常;分析步骤,当所述应用程序异常时,通过动态跟踪、动态调试或插桩方法进行分析;以及异常处理步骤,根据分析结果对对应的注册表或文件进行处理以使所述应用程序正常运行。[0013]在本发明的一个实施例中,在所述异常处理步骤之后,再次执行所述第二次扫描步骤和所述启动器生成步骤。
[0014]在本发明的一个实施例中,还包括:当所述应用程序的运行依赖环境时,在所述第一次扫描步骤之前安装所述环境。
[0015]在本发明的一个实施例中,还包括:当所述应用程序的运行依赖环境时,在所述第一次扫描步骤之后安装所述环境,并在所述恢复步骤中卸载所述环境。
[0016]在本发明的一个实施例中,还包括:剔除步骤,将所述变更数据中与所述应用程序无关的部分剔除。
[0017]在本发明的一个实施例中,在所述第一次扫描步骤中通过regshot扫描工具对所述目标操作系统进行扫描,以记录所述目标操作系统的文件信息和注册表信息。
[0018]在本发明的一个实施例中,在所述跟踪步骤中通过Regfromapp或Procmon同步跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录。
[0019]有鉴于此,本发明的实施例提出一种应用程序虚拟化系统,包括:第一扫描单元,对目标操作系统进行扫描以记录所述目标操作系统的文件信息和注册表信息;跟踪单元,在所述目标操作系统安装应用程序,并跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录;第二次扫描单元,扫描安装所述应用程序的所述目标操作系统,以得到所述文件信息和所述注册表信息的变更数据;以及启动器生成单元,根据所述变更数据生成用于启动所述应用程序的启动器。
[0020]根据本发明实施例的系统,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
[0021]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】
【附图说明】
[0022]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0023]图1为根据本发明一个实施例的应用程序虚拟化方法的流程图;以及
[0024]图2为根据本发明一个实施例的应用程序虚拟化系统框架图。
【具体实施方式】
[0025]下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0026]在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0027]在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0028]图1为根据本发明一个实施例的应用程序虚拟化方法的流程图。如图1所示,根据本发明实施例的应用程序虚拟化方法包括以下步骤:对目标操作系统进行扫描以记录目标操作系统的文件信息和注册表信息(步骤101)。在目标操作系统安装应用程序,并跟踪应用程序在安装过程中对文件信息和注册表信息的操作记录(步骤103)。扫描安装应用程序的目标操作系统,以得到文件信息和注册表信息的变更数据(步骤105)。根据变更数据生成用于启动应用程序的启动器(步骤107)。
[0029]根据本发明实施例的方法,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
[0030]在步骤101中,通过regshot扫描工具对目标操作系统进行扫描,以记录目标操作系统的系统状态信息、文件信息和注册表信息。例如,通过regedit导出整个注册表的根将导出数据转化为.reg格式的文件。
[0031]在本发明的一个实施例中,当应用程序的运行依赖环境时,可在步骤101之前安装该环境。也可以在步骤101之后,安装该环境,并应用程序执行之后卸载该环境。
[0032]在步骤103中,通过Regfromapp或Procmon同步跟踪应用程序在安装过程中对系统状态信息、文件信息和注册表信息等的操作记录。例如,通过regedit导出整个注册表的根将导出数据转化为.reg格式的文件。
[0033]在步骤105中,在安装完应用程序之后对目标操作系统的状态进行扫描,并将扫描结果与步骤101的扫描数据进行比较以得到变更数据。例如,通过对两次扫描导出的注册表的根的.reg文件进行比较可以得到注册表的变更数据。当该变更数据中存在与应用程序无关的数据时将其剔除。
[0034]在步骤107中,启动器可根据用户请求启动应用程序,并且在该应用程序结束或退出时,将目标操作系统的文件信息和注册表信息等变更数据恢复到应用程序启动前的状态。该启动器可采用NSIS脚本系统或Visual Studio进行生成。
[0035]在本发明的一些示例中,启动器主要用于记录和备份系统信息,并根据检测到的用户请求配置该应用程序所需的注册表信息、文件信息和系统服务等以开启应用程序。在应用程序结束退出应用程序时,关闭服务、卸载驱动,并将文件信息和注册表信息等还原到应用程序启动前的状态。
[0036]在本发明的一个实施例中,通过启动器安装应用程序后,判断应用程序运行是否正常。当应用程序异常时,通过动态跟踪、动态调试或插桩方法进行分析。根据分析结果对对应的注册表或文件进行处理以使应用程序正常运行。在启动器运行正常之后,再次执行步骤105和步骤107。可使用汇编器和16进制编辑器等进行异常处理。
[0037]下面对几种异常及对应的处理方式进行说明。[0038](I)虚拟化之后的应用程序可以正常启动,但是部分内容显示加载错误。这种异常状况一般是因为找不到资源文件,或找不到配置文件等原因所造成。因此,可以使用process monitor或类似程序监控程序的资源访问情况,找出其中失败的资源请求,以及资源请求的地址,并将检查资源请求失败的原因以进行相应的加载等处理。
[0039](2)应用程序加载过程中报错,例如提示缺少运行库。这种异常情况一般是因为虚拟化之后,应用程序无法找到其运行的依赖库等环境所造成的。其解决方法可分为两种,第一种是选择不虚拟化相应依赖库,简化操作过程,直接安装相应依赖库。第二种是选择虚拟化相应依赖库,虚拟化依赖库的过程和虚拟化应用程序的过程基本类似,在此不再具体说明。
[0040]( 3 )虚拟化之后的应用程序可以启动,但是发出注册表配置错误等提示信息。这种异常情况是因虚拟化不充分所造成的。虚拟化之后的应用程序一定要提供给一个与应用程序虚拟化之前相同的环境。如果环境条件准备不充分,就有可能导致应用程序读不到所需要的注册表信息等。其解决方案是继续找到该应用程序依赖的所有注册表、文件等信息,进行完备的虚拟化处理。
[0041 ] ( 4 )虚拟化之后的应用程序无法启动,直接崩溃。这种异常情况一般是由程序作者粗心大意,对条件检查不充分所造成的。可能造成的原因有:注册表键值错误,造成程序访问错误等情况。处理这种异常需要使用动态调试器,例如ollydbg, windbg等工具,跟踪应用程序的执行过程,找到出错的原因,并进行修复。
[0042](5)应用程序依赖系统服务或者驱动程序,不进行安装则无法启动。这种情况的处理是,启动应用程序之前,先安装好驱动程序或者系统启动服务之后运行应用程序,结束时先关闭应用程序,再关闭服务或者驱动。
[0043]根据本发明实施例的方法,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
[0044]图2为根据本发明一个实施例的应用程序虚拟化系统框架图。如图2所示,根据本发明实施例的应用程序虚拟化系统包括:第一扫描单元100、跟踪单元300、第二次扫描单元500和启动器生成单元700。
[0045]具体地,第一扫描单元100对目标操作系统进行扫描以记录目标操作系统的文件信息和注册表信息。跟踪单元300在目标操作系统安装应用程序,并跟踪应用程序在安装过程中对文件信息和注册表信息的操作记录。第二次扫描单元500扫描安装应用程序的目标操作系统,以得到文件信息和注册表信息的变更数据。启动器生成单元700根据变更数据生成用于启动应用程序的启动器。
[0046]在本发明的一个实施例中,第一扫描单元100可通过regshot扫描工具对目标操作系统进行扫描,以记录目标操作系统的系统状态信息、文件信息和注册表信息。如果应用程序的运行依赖环境时,第一扫描单元100首先安装该环境。
[0047]在本发明的一个实施例中,跟踪单元300通过Regfromapp或Procmon同步跟踪应用程序在安装过程中对系统状态信息、文件信息和注册表信息等的操作记录。通过regedit导出整个注册表的根将导出数据转化为.reg格式的文件。
[0048]在本发明的一个实施例中,第二次扫描单元500在安装完应用程序之后对目标操作系统的进行扫描,并将扫描结果与第一次扫描单元100的扫描数据进行比较以得到变更数据。即对两次扫描导出的注册表的根的.reg文件进行比较可以得到注册表的变更数据。当该变更数据中存在与应用程序无关的数据时第二扫描单元500将其剔除。
[0049]在本发明的一个实施例中,启动器生成单元700所生成的启动器可根据用户请求启动应用程序,并且在该应用程序结束或退出时,将目标操作系统的文件信息和注册表信息等变更数据恢复到应用程序启动前的状态。启动器生成单元700可采用NSIS脚本系统或Visual Studio进行生成该启动器。
[0050]在本发明的示例中,启动器可用于记录和备份系统信息,并根据检测到的用户请求配置该应用程序所需的注册表信息、文件信息和系统服务等以开启应用程序。在应用程序结束退出应用程序时,关闭服务、卸载驱动,并将文件信息和注册表信息等还原到应用程序启动前的状态。
[0051]根据本发明实施例的应用程序虚拟化系统还包括:判断单元、分析单元和异常处
理单元。
[0052]具体地,通过启动器安装应用程序后,判断单元判断应用程序运行是否正常。当应用程序异常时,分析单元通过动态跟踪、动态调试或插桩方法进行分析。异常处理单元根据分析结果对对应的注册表或文件进行处理以使应用程序正常运行。可使用汇编器和16进制编辑器等进行异常处理。
[0053]根据本发明实施例的系统,通过获得应用程序在安装过程中对注册表信息和文件信息的变更数据,并通过该变更数据生成启动该应用程序的外部启动器,进而提高虚拟化程度,方便用户使用,以实现应用程序虚拟化的“绿色”和“便携”。
[0054]尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【权利要求】
1.一种应用程序虚拟化方法,其特征在于,包括以下步骤: 第一次扫描步骤,对目标操作系统进行扫描以记录所述目标操作系统的文件信息和注册表信息; 跟踪步骤,在所述目标操作系统安装应用程序,并跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录; 第二次扫描步骤,扫描安装所述应用程序的所述目标操作系统,以得到所述文件信息和所述注册表信息的变更数据;以及 启动器生成步骤,根据所述变更数据生成用于启动所述应用程序的启动器。
2.如权利要求1所述的应用程序虚拟化方法,其特征在于,还包括: 恢复步骤,将所述目标操作系统的所述文件信息和所述注册表信息恢复到所述应用程序启动前的状态。
3.如权利要求2所述的应用程序虚拟化方法,其特征在于,还包括: 判断步骤,通过所述启动器安装所述应用程序后,判断所述应用程序运行是否正常; 分析步骤,当所述应用程序异常时,通过动态跟踪、动态调试或插桩方法进行分析;以及 异常处理步骤,根据分析结果对对应的注册表或文件进行处理以使所述应用程序正常运行。`
4.如权利要求3所述的应用程序虚拟化方法,其特征在于: 在所述异常处理步骤之后,再次执行所述第二次扫描步骤和所述启动器生成步骤。
5.如权利要求1所述的应用程序虚拟化方法,其特征在于,还包括: 当所述应用程序的运行依赖环境时,在所述第一次扫描步骤之前安装所述环境。
6.如权利要求1所述的应用程序虚拟化方法,其特征在于,还包括: 当所述应用程序的运行依赖环境时,在所述第一次扫描步骤之后安装所述环境,并在所述恢复步骤中卸载所述环境。
7.如权利要求1所述的应用程序虚拟化方法,其特征在于,还包括: 剔除步骤,将所述变更数据中与所述应用程序无关的部分剔除。
8.如权利要求1所述的应用程序虚拟化方法,其特征在于,在所述第一次扫描步骤中通过regshot扫描工具对所述目标操作系统进行扫描,以记录所述目标操作系统的文件信息和注册表信息。
9.如权利要求1所述的应用程序虚拟化方法,其特征在于,在所述跟踪步骤中通过Regfromapp或Procmon同步跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录。
10.一种应用程序虚拟化系统,其特征在于,包括: 第一扫描单元,对目标操作系统进行扫描以记录所述目标操作系统的文件信息和注册表信息; 跟踪单元,在所述目标操作系统安装应用程序,并跟踪所述应用程序在安装过程中对所述文件信息和所述注册表信息的操作记录; 第二次扫描单元,扫描安装所述应用程序的所述目标操作系统,以得到所述文件信息和所述注册表信息的变更数据;以及启动器生成单元,根据所 述变更数据生成用于启动所述应用程序的启动器。
【文档编号】G06F9/455GK103677963SQ201310733560
【公开日】2014年3月26日 申请日期:2013年12月26日 优先权日:2013年12月26日
【发明者】陈康, 武永卫, 朱文雷 申请人:清华大学