发明内容
鉴于上述问题,本发明提供一种软件运行控制方法和装置,技术方案如下:
依据本发明的一个方面,提供了一种软件运行控制方法,包括:
在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,不同的虚拟环境之间相互独立;
将待安装的软件安装在对应的虚拟环境中;
控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。
可选的,还包括软件卸载的步骤:
接收到软件卸载指令后,删除该软件对应的虚拟环境。
可选的,控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤包括:在虚拟环境中,运行对应软件的写操作。
可选的,在虚拟环境中运行对应软件的写操作包括:接收到写操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则对其进行写操作,否则将真实环境中真实目标文件的副本复制入虚拟环境作为目标文件,并对其进行写操作。
可选的,控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤包括:在虚拟环境中,运行对应软件的读操作。
可选的,在虚拟环境中运行对应软件的读操作包括:接收到读操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则读取该目标文件,否则从真实环境读取目标文件。
可选的,将待安装的软件安装在对应的虚拟环境中的步骤中,通过重定向操作控制将软件安装于对应的虚拟环境。
可选的,控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤中,通过重定向操作控制软件运行于对应的虚拟环境。
可选的,重定向操作包括:
截获软件的操作;
将该操作的对象的路径修改为对应虚拟环境中的对应对象的路径;
返回操作。
可选的,软件的操作对象为磁盘文件,重定向操作包括:
截获软件操作的输入输出请求包;
将该输入输出请求包中的文件路径修改为对应虚拟环境的对应文件路径;
将输入输出请求包向设备栈的下层下发。
可选的,软件的操作对象为注册表,重定向操作包括:
截获软件产生的消息;
将该消息中的注册表路径修改为对应虚拟环境的注册表副本的路径;
返回对消息的处理流程。
依据本发明的另一个方面,提供了一种软件运行控制装置,包括:
安装控制单元,用于在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,不同的虚拟环境之间相互独立,并将待安装的软件安装在对应的虚拟环境中;
运行控制单元,用于控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。
可选的,还包括:
卸载控制单元,用于在接收到软件卸载指令后,删除该软件对应的虚拟环境。
可选的,运行控制单元包括写操作控制模块,该写操作控制模块用于控制软件的写操作运行于其对应的虚拟环境。
可选的,写操作控制模块具体用于:接收到写操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则对其进行写操作,否则将真实环境中真实目标文件的副本复制入虚拟环境作为目标文件,并对其进行写操作。
可选的,运行控制单元包括读操作控制模块,该读操作控制模块用于控制软件的读操作运行于其对应的虚拟环境。
可选的,读操作控制模块具体用于:接收到读操作指令后,判断目标是否存在于对应的虚拟环境,若是则从对应虚拟环境中读取,否则从真实环境读取目标文件。
可选的,安装控制单元通过重定向操作控制软件安装于对应的虚拟环境。
可选的,运行控制单元通过重定向操作控制软件运行于对应的虚拟环境。
可选的,重定向操作包括:
截获软件的操作;
将该操作的对象的路径修改为对应虚拟环境中的对应对象的路径;
返回操作。
可选的,软件的操作对象为磁盘文件,重定向操作包括:
截获软件的操作的输入输出请求包;
将该输入输出请求包中的文件路径修改为对应虚拟环境的对应文件路径;
将输入输出请求包向设备栈的下层下发。
可选的,软件的操作对象为注册表,重定向操作包括:
截获软件产生的消息;
将该消息中的注册表路径修改为对应虚拟环境的注册表副本的路径;
返回对消息的处理流程。
根据本发明的实现软件卸载、运行的方法和实现软件卸载的装置,一方面可以实现软件的简单、彻底的卸载,并且当有多个软件时,这种卸载也不会对其它软件造成影响。另一方面,也避免了不同软件之间的潜在干扰的可能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先简要说明本发明的原理,本发明中的软件的卸载和运行,通过将软件安装在虚拟环境中,并在卸载时删除该虚拟环境来实现卸载;在软件运行时,也使软件运行在对应的虚拟环境中,不同的软件对应不同的虚拟环境。如此,便可以实现对软件的简单、彻底的删除,同时也可以避免不同软件之间在删除和运行时的相互影响。下面将对本发明展开描述。
参考图1,图示了本发明的安装环境示意图。在本发明一种软件运行控制方法的第一实施例中,基于图1所示的安装环境示意,并同时参考图3,本发明的软件运行控制方法在控制软件安装时,包括以下步骤:
步骤S11,创建虚拟环境。本步骤在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,不同的虚拟环境之间相互独立。
对于计算机用户而言,真实环境是指计算机的全部磁盘信息;而虚拟环境则是指,软件安装及运行所建立、修改的文件都在虚拟环境中,且这些文件的存在和删除不会对计算机的正常运行产生影响,这一点可以通过下文进行理解。本步骤中,创建虚拟环境的方法为在真实环境中建立一个文件夹,该文件夹下便用来存储虚拟环境中的各种文件。例如:
本实施例中在D盘按照以下路径创建文件夹来作为虚拟环境:D:\virtualenvironment\123456。其中,“123456”代表该软件的ID,以与其它软件的虚拟环境相区别,也就是相互独立。
步骤S12,控制将待安装的软件安装于对应虚拟环境。
现有技术中,一般软件的安装会默认安装在C:\Program Files目录下,创建的各种文件也都存储于该目录下的对应软件的文件夹内,对系统文件的修改及注册表的修改也都对真实环境中的对象进行。
但是,本步骤中则不同于现有技术,在安装时首先在上一步为该软件创建的虚拟环境下再进一步创建安装目录,仍以步骤S11中的例子为例:
在D:\virtual environment\123456下创建安装目录为D:\virtualenvironment\123456\C\Program Files,这便是该软件的安装路径,当然其最终的安装文件夹应该是其软件名称,也即是以下路径:D:\virtualenvironment\123456\C\Program Files\软件名称。
在安装过程中一般要涉及系统文件的修改、注册表的修改、新文件的创建等。对于系统文件的修改来说,通过重定向技术首先在该软件的虚拟环境中按照系统文件的对应路径创建一个其自身的副本,然后再对该副本进行修改。例如,假设要对C:\windows\system32\123.123进行修改,那么本步骤先在该软件的虚拟环境中创建一个副本,也就是在D:\virtual environment\123456\C\windows\system32下创建一个123.123的副本,然后再对该副本进行修改。
对于注册表的修改来说,与系统文件的修改类似,也是通过重定向技术先在虚拟环境中创建注册表副本。此处的注册表副本可以是指通过数据文件的方式所存储的真实注册表中的所有信息,也可以是通过数据文件的方式仅存储真实注册表中软件修改所涉及的注册表项的信息。对于上例来说,可以是将真实注册表中所有信息以数据文件的方式存储到D:\virtual environment\123456文件夹下,然后再对该注册表副本进行修改;也可以是将真实注册表中与本次注册表修改相关的注册表项信息以数据文件的方式存储到D:\virtualenvironment\123456文件夹下。数据文件的方式是指按照真实注册表中信息的种类进行存储,包括根键名(例如HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER等)、路径(例如:SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{JPWB2012-QQ11-4C5F-B97C-BF6706BA594E}_is1)、键名(例如注册表中常出现的“默认”)、值项(其用来存储该项的内容)、类型(例如REG_SZ)、操作类型(例如修改、删除)。
其中,操作类型为删除时,就表明上次的注册表操作已经将该注册表项删除,那么下次通过重定向操作读取该虚拟环境中注册表副本时,首先判断此处的操作类型为删除,那么就告知读取该注册表项的程序该项不存在。而当操作类型是修改时,则继续读取剩下的内容。
对于新文件的创建来说,与系统文件的修改类似,也通过重定向技术在虚拟环境创建对应的文件夹及文件。
以上的各种路径的设置仅是一个实施例,实际操作中可以按照要求根据需要进行任意设置。
步骤S13,控制软件运行在对应虚拟环境。本步骤中控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。
软件的运行涉及到对其它磁盘文件的读写,下面将读和写分别予以说明,以展示如何控制软件运行在虚拟环境。
控制软件的读操作如下:
接收到读操作指令后,首先判断虚拟环境中是否存在该软件所要读取的文件,若是则通过重定向技术优先从该虚拟环境中读取;若虚拟环境中没有该软件要读取的文件,则直接从真实环境中读取。
以读取注册表文件为例,由于软件的安装一般会修改注册表,那么通过步骤S12的安装过程一般都已经在虚拟环境中创建了了注册表副本,且都修改过。那么在本步骤控制软件的读操作过程中,在接收到读操作指令后,显然判断结果是虚拟环境中存在要读取的文件,那么此时就从虚拟环境来读取注册表副本内所存储的需要的信息。
其背后的意义是,一般在虚拟环境中存在的文件都是经过修改的文件或新建的文件,对于修改的文件来说其内容显然是最新的(较真实环境中的相应文件来说),是软件运行所需的,若此时从真实环境读取则可能会造成软件运行错误;对于新建的文件来说,也仅在虚拟环境中存在,因为安装过程中是不会在真实环境中创建文件。所以说,优先从虚拟环境读取,其次再从真实环境读取。
控制软件的写操作如下:
接收到写操作指令后,首先判断虚拟环境中是否存在该软件的写操作的目标文件,若是则通过重定向技术控制软件对虚拟环境中的目标文件进行写操作;若虚拟环境中不存在写操作的目标文件,也就是该目标文件仅存在于真实环境,则在虚拟环境中创建真实环境中的目标文件的副本,然后通过重定向技术控制软件对虚拟环境中的目标文件的副本进行修改。
同样以修改注册表为例,通过判断虚拟环境中存在注册表副本,那么通过重定向技术控制该软件对该虚拟环境内的注册表副本进行修改。具体说是对该注册表副本内的相应注册表条目下的内容进行修改;当然若注册表副本是采用仅存储修改过的注册表项及其值的方式的话,那么此处判断虚拟环境中存在此注册表副本时,则对其进行修改,而判断不存在时,则首先按照步骤S12中的相关描述创建相应的数据文件,然后对其修改。
显然,对于软件运行过程中的写操作可能初次涉及某些系统文件,而这些系统文件显然在步骤S12中没有被复制到虚拟环境。因此此时通过本步骤的判断认为虚拟环境中没有,则只能从真实环境中读取副本至虚拟环境,然后再对该副本通过重定向技术进行修改。
值得注意的是,通过以上控制软件读/写操作的描述可以看出,无论是读还是写,其采用以上方法都是为了保证该软件能够面对最新的文件,以保障软件的正常运行,若不如此,当软件读/写一些较老的文件时,有可能会因为某些信息的缺失而产生运行错误。
步骤S14,控制软件卸载;接收到软件卸载指令后,删除该软件对应的虚拟环境。
本步骤中,当用户选择卸载该软件时,本发明的软件运行控制方法就会控制删除步骤S11中所创建的虚拟环境。仍然以步骤S11中的例子来说,本步骤中就是删除D:\virtual environment\123456的文件夹。
可以看出,本步骤中的“卸载”过程直接将虚拟环境删除,而根据以上描述可以知道:该软件的安装及运行所涉及的文件包括两部分,第一部分是被修改和创建的文件,其都在虚拟环境内;第二部分是从真实环境中读取的文件,其显然都在真实环境中。很明显,卸载的目的是删除该软件在安装和运行过程中对计算机的“修改”,而本步骤通过删除虚拟环境做到了对的“修改”的很好的还原,且不会对计算机造成任何的负面影响。对比现有技术,现有技术中软件的安装和运行中对计算机的修改都是针对真实环境,在卸载过程中要想完全彻底的将计算机恢复到软件安装前是非常困难的,而且有可能对计算机的运行造成不利影响。
如此,本步骤的“卸载”显然更为简单、彻底、可靠。特别是对那些恶意软件来说,克服了无法卸载、卸载不彻底的弊病。
对于步骤S11、步骤S12、步骤S13来说,其在软件的安装和运行过程中很好的实现了与真实环境的隔离,避免了与真实环境之间的交叉,最大限度的保证了真实环境的完整性、安全性和可靠性,防止了某些固有设计缺陷的软件或恶意软件对计算机的破坏。
上文中多次提及了重定向技术,对该重定向技术的进一步阐述请参阅下文。
在本发明一种软件运行控制方法的第二实施例中,与第一实施例相比,可以仅包含步骤S11和步骤S12。通过步骤S11和步骤S12就可以实现安装过程中对真实环境的保护,防止了安装过程对真实环境的破坏,同时也为后续运行和卸载过程对真实环境的保护打下了基础。
在本发明一种软件运行控制方法的第三实施例中,与第一实施例相比,可以仅包含步骤S11、步骤S12和步骤S13。因为通过步骤S11、步骤S12和步骤S13就可以实现安装和运行过程中对真实环境的保护,防止了安装和运行过程对真实环境的破坏,同时也为后续卸载过程对真实环境的保护打下了基础。
在本发明一种软件运行控制方法的第四实施例中,与第一实施例相比,第四实施例中是对多个软件运行控制,而第一实施例是对单一软件的运行控制。本实施例中,参考图2,包括了对软件A、软件B、软件C的运行控制;其特点之一在于,不同的软件(A、B、C)安装在真实环境中的不同的虚拟环境(虚拟环境A、虚拟环境B、虚拟环境C);如此,对于每个软件来说其虚拟环境是独立的(对于每个软件的运行控制与第一实施例相同,在此略过),根据上文的描述可知,由于虚拟环境是独立的,对于软件A、B、C来说其相互是不可见的。这样一来,就可以避免三个软件在安装和运行过程中的相互影响,以确保软件的可靠安装和运行。并且,由于不同的软件安装在不同的虚拟环境,因此在删除的时候仍然可以采用第一实施例的方式直接将虚拟环境删除,而不需要担心对其它软件造成影响。
此外,对于软件C来说,如果其包含了两个子程序:程序C1和程序C2。本实施例中,软件安装时,将程序C1和程序C2均安装于同一虚拟环境中,也就是为软件C所创建的虚拟环境。这样做的好处是,在软件C卸载时,可以简单的如第一实施例将软件C的对应虚拟环境删除,就可以实现对两个子程序的删除。当然,这仅是一个实施例,在本发明的另一实施例中,还可以为程序C1和程序C2分配不同的虚拟环境,比如程序C1在软件C的虚拟环境,而程序C2则单独分配有虚拟环境。但是,如此为保证软件C的正常运行,在主程序和子程序的相互调用和回调过程中便也要进行重定向,以确保能够启动和返回相应的程序,由于基于以上的描述,本领域技术人员可以类比实现,故不再做进一步阐述。
下面对本发明中的重定向技术举例进行详细说明,其不应构成对重定向技术的限制。
在重定向技术的第一个实施例中,基于windows文件过滤驱动机制来实现。过程如下:
当上文中被控制的软件发出相关的操作请求时,操作系统会将此请求转化为相应的IRP(I/O Request Package,输入输出请求包),并将该IRP传给具体对应的设备对象。而每个IRP传递给的设备对象可以构成一个设备栈结构,IRP信息从设备栈的上层依次传递到底层。而本实施例就是在IRP信息到达相应的设备对象时通过文件过滤驱动来截获该IRP信息,修改其中的指向文件等数据,将其修改为指向到虚拟环境中的路径,然后下发。
举例来说:软件的进程Pid:435,当该进程要修改位于windows目录下的1.txt文件时,进程调用windows的r3函数,该r3函数又调用r0函数实现向文件系统发送一个IRP。此时,文件过滤驱动截获该IRP,并修改其中的内容,也就是修改其中的目标文件的路径,将C:\Windows\1.txt修改为D:\virtualenvironment\123456\C\windows\1.txt,然后继续安装设备栈结构下发。当然,此时若虚拟环境路径D:\virtual environment\123456\C\windows\1.txt不存在,则需要建立该路径对应的目录结构并将C:\windows\1.txt复制到D:\virtualenvironment\123456\C\windows下,这样当IRP对应的设备对象接收到该IRP信息时才会对D:\virtual environment\123456\C\windows\1.txt进行修改。
以上是以写操作为例,当是读操作时,过程也类似。只不过需要先判断IRP信息中的1.txt文件是否在虚拟环境中也存在(对于虚拟环境中1.txt的是否存在,则可以安装我们的目录创建规则,在对应目录下寻找,比如若是C:\windows\1.txt,则在D:\virtual environment\123456\C\windows下寻找),若存在则直接将路径修改为虚拟环境中的路径,若不存在,则不做修改,继续下发,让其直接从真实环境中的读取。
在重定向技术的第二实施例中,基于windows的消息处理机制来实现。过程如下:
通过windows提供的Hook函数建立对软件进程的监控,当软件要调用API函数对目标文件进行修改时,则先找到该API函数在内存中的地址,然后改写该API函数头的几个字节为JMP指令跳转到预设的代码中,而该预设的代码则是执行将目标文件的路径进行修改,改为对应虚拟环境中的路径。修改完毕后,再执行API函数的被替换的原函数头的几个字节的指令,然后再跳转回API函数头后的位置继续执行。
例如,以对注册表修改为例,当通过Hook函数截获软件的修改注册表的消息时,则找到系统修改注册表的API函数,一般此类API函数头的结构如下:
mov edi,edi
push ebp
mov ebp,esp
这里首先将该函数头修改为JMP指令并指向我们预设函数的地址。
如此当执行该API函数时,很显然首先Jump到我们预设函数的地址,之后预设函数将相应的注册表文件路径也要修改为虚拟环境中的注册表副本路径,以在后续修改时能够对注册表副本进行修改。
然后,预设函数会控制返回API函数的被修改的函数头以下的位置继续执行;如此便可以实现截获消息、修改该消息中的路径信息,然后再返回对该消息的处理流程;再返回对该消息的处理流程也即是系统通过调用修改注册表的API函数来执行该消息的操作。
以上是以写操作为例,当执行读操作时,过程也类似。只不过要首先判断软件的操作的目标文件是否存在于虚拟环境中(当然是按照目录规则进行寻找确定),若是则通过预设函数修改目标文件的路径为虚拟环境中的文件位置,若虚拟环境中不存在,则可以不修改API函数的函数头,直接按照正常方式执行,也可以是虽然修改API函数的函数头,但是预设函数并不做修改而直接按照上述方式返回继续执行。
在重定向技术的第三实施例中,通过修改PE(Portable Execute,可移植执行体)的IAT(Import Address Table,输入地址列表)使其指向我们预设的函数,这样程序调用系统API的时候便会调用预设函数。当是写操作时,通过预设函数将目标文件地址修改为虚拟环境中的地址,并且执行API函数的功能;当是读操作时,则预设函数判断目标文件是否存在于对应虚拟环境,若是则从虚拟环境读取并执行,否则从真实环境中读取并执行。
以上几种重定向实现方案均可行,本发明实施例包括但不限于这几种。
在本发明一种软件运行控制装置的一个实施例中,如图4所示,包括:
安装控制单元41,用于在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,不同的虚拟环境之间相互独立,并将待安装的软件安装在对应的虚拟环境中。该单元的详细描述可以参考步骤S11和S12,并且作为更加优选的方案,对于多个软件安装,可以将其安装于不同的虚拟环境中,这一点可以参考图2及其相关的描述;
运行控制单元42,用于控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。其包括写操作控制模块421和读操作控制模块422,写操作控制模块421用于在接收到写操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则对其进行写操作,否则将真实环境中真实目标文件的副本复制入虚拟环境作为目标文件,并对其进行写操作。读操作控制模块422用于控制软件的读操作运行于其对应的虚拟环境。该单元的详细描述可以参考步骤S13;
卸载控制单元43,用于在接收到软件卸载指令后,删除该软件对应的虚拟环境。该单元的详细描述可以参考步骤S14,并且当多个软件分别被安装于不同的虚拟环境时,也可以直接删除虚拟环境,这一点可以参考图2及其相关描述。
当然,对于本实施例中的有益效果同样可以参考上文的相关描述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明还公开了A1、一种软件运行控制方法,包括:
在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,所述不同的虚拟环境之间相互独立;
将所述待安装的软件安装在对应的虚拟环境中;
控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中所述被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。
A2、如A1所述的方法,还包括软件卸载的步骤:
接收到软件卸载指令后,删除该软件对应的虚拟环境。
A3、如A1或A2所述的方法,所述控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤包括:在虚拟环境中,运行对应软件的写操作。
A4、如A3所述的方法,所述在虚拟环境中运行对应软件的写操作包括:接收到写操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则对其进行写操作,否则将真实环境中真实目标文件的副本复制入所述虚拟环境作为目标文件,并对其进行写操作。
A5、如A1或A2所述的方法,所述控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤包括:在虚拟环境中,运行对应软件的读操作。
A6、如A5所述的方法,所述在虚拟环境中运行对应软件的读操作包括:接收到读操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则读取该目标文件,否则从真实环境读取所述目标文件。
A7、如A1所述的方法,所述将待安装的软件安装在对应的虚拟环境中的步骤中,通过重定向操作控制将所述软件安装于对应的虚拟环境。
A8、如A1所述的方法,所述控制被安装在虚拟环境中的软件运行在对应的虚拟环境中的步骤中,通过重定向操作控制所述软件运行于对应的虚拟环境。
A9、如A7或A8所述的方法,所述重定向操作包括:
截获所述软件的操作;
将该操作的对象的路径修改为对应虚拟环境中的对应对象的路径;
返回所述操作。
A10、如A7或A8所述的方法,所述软件的操作对象为磁盘文件,所述重定向操作包括:
截获所述软件操作的输入输出请求包;
将该输入输出请求包中的文件路径修改为对应虚拟环境的对应文件路径;
将所述输入输出请求包向设备栈的下层下发。
A11、如A7或A8所述的方法,所述软件的操作对象为注册表,所述重定向操作包括:
截获所述软件产生的消息;
将该消息中的注册表路径修改为对应虚拟环境的注册表副本的路径;
返回对所述消息的处理流程。
本发明还公开了B12、一种软件运行控制装置,包括:
安装控制单元,用于在真实环境中为待安装的软件创建对应的虚拟环境,不同的软件对应创建不同的虚拟环境,所述不同的虚拟环境之间相互独立,并将所述待安装的软件安装在对应的虚拟环境中;
运行控制单元,用于控制被安装在虚拟环境中的软件运行在对应的虚拟环境中,其中所述被安装的软件运行所需的至少部分数据从对应虚拟环境中获得。
B13、如B12所述的装置,还包括:
卸载控制单元,用于在接收到软件卸载指令后,删除该软件对应的虚拟环境。
B14、如B12或B13所述的装置,所述运行控制单元包括写操作控制模块,该写操作控制模块用于控制所述软件的写操作运行于其对应的虚拟环境。
B15、如B14所述的装置,所述写操作控制模块具体用于:接收到写操作指令后,判断目标文件是否存在于对应的虚拟环境,若是则对其进行写操作,否则将真实环境中真实目标文件的副本复制入所述虚拟环境作为目标文件,并对其进行写操作。
B16、如B12所述的装置,所述运行控制单元包括读操作控制模块,该读操作控制模块用于控制所述软件的读操作运行于其对应的虚拟环境。
B17、如B16所述的装置,所述读操作控制模块具体用于:接收到读操作指令后,判断目标是否存在于对应的虚拟环境,若是则从对应虚拟环境中读取,否则从真实环境读取所述目标文件。
B18、如B12所述的装置,所述安装控制单元通过重定向操作控制所述软件安装于对应的虚拟环境。
B19、如B12所述的装置,所述运行控制单元通过重定向操作控制所述软件运行于对应的虚拟环境。
B20、如B18或B19所述的装置,所述重定向操作包括:
截获所述软件的操作;
将该操作的对象的路径修改为对应虚拟环境中的对应对象的路径;
返回所述操作。
B21、如B18或B19所述的装置,所述软件的操作对象为磁盘文件,所述重定向操作包括:
截获所述软件的操作的输入输出请求包;
将该输入输出请求包中的文件路径修改为对应虚拟环境的对应文件路径;
将所述输入输出请求包向设备栈的下层下发。
B22、如B18或B19所述的装置,所述软件的操作对象为注册表,所述重定向操作包括:
截获所述软件产生的消息;
将该消息中的注册表路径修改为对应虚拟环境的注册表副本的路径;
返回对所述消息的处理流程。