CN101777002B - 一种基于虚拟化的软件运行方法 - Google Patents

一种基于虚拟化的软件运行方法 Download PDF

Info

Publication number
CN101777002B
CN101777002B CN 201010040008 CN201010040008A CN101777002B CN 101777002 B CN101777002 B CN 101777002B CN 201010040008 CN201010040008 CN 201010040008 CN 201010040008 A CN201010040008 A CN 201010040008A CN 101777002 B CN101777002 B CN 101777002B
Authority
CN
China
Prior art keywords
software
file
operating system
user
operating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 201010040008
Other languages
English (en)
Other versions
CN101777002A (zh
Inventor
许冬
周宏杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Yuku Information Technology Co Ltd
Original Assignee
Hangzhou Yuku Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Yuku Information Technology Co Ltd filed Critical Hangzhou Yuku Information Technology Co Ltd
Priority to CN 201010040008 priority Critical patent/CN101777002B/zh
Publication of CN101777002A publication Critical patent/CN101777002A/zh
Application granted granted Critical
Publication of CN101777002B publication Critical patent/CN101777002B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于虚拟化的软件运行方法,包括(1)提取指定软件在操作系统注册表中的注册信息及该软件的文件;(2)将步骤(1)得到的数据保存成预定的格式,得到软件资源并存放在用户磁盘中;(3)对用户磁盘上的操作系统内核在操作注册表时所涉及的应用程序编程接口进行替换,并根据操作系统的标准接口建立文件过滤驱动;使得操作系统内核可依照步骤(2)所述的预定的格式识别软件资源中的注册信息及该软件的文件;(4)将磁盘中的软件资源通过映射方式显示给用户;(5)操作系统内核根据用户或系统的请求,运行软件资源所对应的指定软件。本发明生成的软件资源易于维护,利于对数据的保护和解决版本冲突也更少的占用资源。

Description

一种基于虚拟化的软件运行方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟化技术。
背景技术
虚拟化技术是指拦截、解析并重定向特定的IO操作,实现虚拟操作与物理设备之间的隔离。虚拟化技术从最初仅提供简单的存储保护,到现在的PC虚拟化,发展得十分迅速。虚拟化技术主要用于企业存储、灾难恢复、成本压缩、分布式计算、软件测试和病毒安全等领域。日后的“云”概念,更是会非常依赖虚拟化技术。
还原类软件可谓是最早的虚拟化技术的应用,它虚拟出一个硬盘供用户系统正常使用,实际上却不会修改到真实的数据。还原类软件至今在学校和网吧里还非常有市场。但它的缺点非常明显,还原在保护了用户数据的同时,也让用户没法安装软件,以致它的后期维护成了耗时耗力的工作。
以VMWare为代表的虚拟机软件,它的缺点是太过专业,不易于普通用户使用;并且它消耗了大量的资源虚拟出的虚拟机,对于用户体验来说,与真实的系统一样,反复安装卸载软件过多还是照样会崩溃以致重装。
还原类软件的目的只是保护最原始的数据。但是它忽略了用户后来使用过程中生成的重要数据。所以对于用户来说,还原类软件并没有真正保护到数据的安全。
发明内容
本发明提供了一种的虚拟化的软件运行方法,可以避免反复安装卸载软件,保护硬盘。
一种基于虚拟化的软件运行方法,包括如下步骤:
(1)提取指定软件在操作系统注册表中的注册信息及该软件的文件(实际安装该软件后,在各个目录中生成的所有文件包括子目录);
(2)将步骤(1)得到的数据保存成预定的格式,得到软件资源并存放在用户磁盘中;
所述的软件资源可以是用户自己制作,也可以是通过下载、共享等途径获得,但软件资源的使用是要求放入用户的磁盘。
(3)对用户磁盘上的操作系统内核在操作注册表时所涉及的应用程序编程接口进行替换,并根据操作系统的标准接口建立文件过滤驱动;使得操作系统内核可依照步骤(2)所述的预定的格式识别软件资源中的注册信息及该软件的文件;
(4)将磁盘中的软件资源通过映射方式显示给用户;
(5)操作系统内核根据用户或系统的请求,运行软件资源所对应的指定软件。
步骤(2)中将步骤(1)得到的数据保存成预定的格式,那么关于预定的格式有以下要求:
将同一个软件相关的文件和注册表信息保存到同一个特定目录下,在此特定目录下将该软件的注册表信息保存在一个指定文件中,并在此特定目录下建立若干个子目录,分别存放该软件安装后的文件。
由于一般软件安装后会在系统盘的“Program Files”、“Documents andSettings\当前用户名”等很多目录中生成软件文件,那么在我们也对应的在所述的特定目录下建立若干子目录存放对应的软件文件,在随后的对应用程序编程接口进行替换时,将所述的特定目录下建立若干子目录分别映射到软件实际安装在系统盘时对应的系统盘上的目录。
步骤(3)所述的应用程序编程接口,简称API(Application ProgrammingInterface),API是指Windows开放给程序员的编程接口,使得在用户级别下可以对操作系统进行控制,也就是一般的应用程序都需要调用API来完成某些功能
对应用程序编程接口进行替换的过程也可称为“Hook API”。
Hook API是一种通过截获应用软件对系统API的调用流程,从而对正常的数据处理流程进行干预的技术。Hook API一般是用更改系统函数表,或者修改系统代码,将系统的API替换为Hook者的API,当有应用程序调用被Hook的API时,Hook者所提供的API会先被调用,Hook者可以对应用程序传入的数据做查找、修改、放行或者丢弃以达到监控和更改系统行为的目的。
步骤(3)中根据操作系统的标准接口建立文件过滤驱动的进一步说明:
文件过滤驱动是操作系统的开发商提供给开发者的一种标准的解决方案规范。遵从这个规范,开发者可以很方便地在内核的文件驱动链添加自己的过滤器,用于监控和干涉所有的文件操作如枚举,打开,读,写,删除和重命名。目前主要被用于数据即时加解密和病毒监控。在本发明中建立文件过滤驱动的目的是监控文件的读写操作并将它重定向到软件资源。
步骤(5)中操作系统内核根据用户或系统的请求,运行软件资源所对应的指定软件时,为了保护数据和解决同一文件不同版本的冲突,采用如下方法:
定义所有软件的优先级;例如分为低级、中级和高级,操作系统定义为中级;该软件(此时操作系统视为一个软件)所有相关的文件也具有相同的优先级。
运行非操作系统软件时,所调用的文件可能在系统中有不同的版本,即有专属于当前运行软件的版本文件,也有专属于操作系统或其他软件的版本文件,判断的原则是优先访问专属当前运行软件自身的版本文件而不论该版本文件的优先级,若该版本文件并非专属当前运行软件自身,或者说前运行软件运行时需要访问操作系统或其他软件的版本文件,此时该文件如果有不同版本的话,则访问优先级高的版本。
运行操作系统时,作操作系统需要访问文件时,若该文件存在不同的版本,判断的原则是优先访问优先级高的版本。
本发明有益效果如下:
1、本发明生成的软件资源易于维护
采用精确到文件层和注册表项的虚拟化技术,可以轻易地得到用户常用软件的完整数据,用户可以很方便地在不丢失缓存的前提下,重装系统后继续使用软件或者携带着软件资源到另一台安装有同样环境的机器上使用,无需再次安装,直接虚拟化加载后,对于用户的使用,就如正常安装的软件一样方便。并且在不需要时可以即时关闭对应的软件虚拟化映射。
2、利于对数据的保护和解决版本冲突
本发明方法深入到虚拟化每一个文件,每一个注册表项。并智能分析所有的操作,过滤掉软件对系统的不良影响(例如冗余的注册表项和垃圾文件),留下用户生成的数据文档。
3、更少的资源占用
由于采用已经精确到文件层,基于文件的缓存技术,会比还原类软件节省大量的空间和时间。并且因为只针对用户最需要的文件数据保护,不需要像VMWare那样消耗大量资源把所有的硬件都虚拟化。
附图说明
图1~3为利用本发明方法运行软件时,运行优先级别低于操作系统的A软件时,以及运行操作系统时解决文件版本冲突的过程示意图。
图4~5为利用本发明方法运行软件时,运行优先级别高于操作系统的B软件时,以及运行操作系统时解决文件版本冲突的过程示意图。
图6~8为利用本发明方法运行软件时,运行优先级别低于操作系统的A软件时,运行操作系统时以及运行优先级别高于操作系统的B软件时解决文件版本冲突的过程示意图。
具体实施方式
实施本发明基于虚拟化的软件运行方法,过程如下:
(1)以A软件为例,先在一台电脑中实际安装该软件,这样会在该电脑操作系统注册表中添加的A软件注册信息,并在该电脑磁盘中的A软件的安装目录以及若干系统目录中生成很多与A软件相关的文件。
提取系统注册表中A软件注册信息,所有与A软件相关的文件。
(2)将步骤(1)得到的数据保存成预定的格式,得到软件资源,具体操作如下:
X:代表电脑系统盘的盘符;
针对A软件将提取出注册信息及所有与A软件相关的文件都保存到“X:\A软件”中,其中A软件的注册信息保存在“X:\A软件”中的RegFile文件中。
在“X:\A软件”中建立如下子目录:
“$PROGRAM_FILES$”,将A软件在实际安装时添加到“X:\ProgramFiles”中的所有文件都放入“X:\A软件\$PROGRAM_FILES$”中。
“$PROFILE$”,将A软件在实际安装时添加到“X:\Documents andSettings\当前用户名”中的所有文件都放入其中。
“$PERSONAL$”将A软件在实际安装时添加到“X:\Documents andSettings\当前用户名\My Documents”中的所有文件都放入其中。
“$LOCAL_APPDATA$”,将A软件在实际安装时添加到“X:\Documents and Settings\当前用户名\Local Settings\Application Data”中的所有文件都放入其中。
“$APPDATA$”,将A软件在实际安装时添加到“X:\Documents andSettings\当前用户名\Application Data”中的所有文件都放入其中。
“$ALL_USER_PROFILE$”,将A软件在实际安装时添加到“X:\Documents and Settings\All Users\Application Data”中的所有文件都放入其中。
“$ALL_USER_APPDATA$”,将A软件在实际安装时添加到“X:\Documents and Settings\All Users\Application Data”中的所有文件都放入其中。
“$USER_PATH$”,将A软件在实际安装时添加到“X:\Documents andSettings”中的所有文件都放入其中。
那么在“X:\A软件”中的所有数据就成为了A软件的软件资源。
软件资源可以是用户自己制作,也可以是通过下载、共享等途径获得。
(3)当用户需要使用软件资源时,则必须将软件资源放入用户的磁盘。
首先要对对用户磁盘上的操作系统内核在操作注册表时所涉及的应用程序编程接口进行替换,即“Hook API”。这一点可以通过现有技术来实现。
通过Hook API,保证A软件运行时可以正常访问自己注册信息。因为Hook API可以拦截、修改、放行或者阻止系统对所有数据的操作。当A软件资源读或写自己的注册信息时,Hook API会从该软件资源中的RegFile中读或写对应的数据。这样对于A软件来说,它运行的所有的注册信息都已经存在于注册表了。
接下来根据用户操作系统的标准接口建立文件过滤驱动;使得操作系统内核可依照步骤(2)所述的预定的格式识别软件资源中的注册信息及该软件的文件。
在这里也假定用户的系统盘盘符为“X:”,那么通过建立文件过滤驱动将“$PROGRAM_FILES$“映射到“X:\Program File”。
将“$PROFILE$”映射到“X:\Documents and Settings\当前用户名”。
将“$PERSONAL$,映射到“X:\Documents and Settings\当前用户名\My Documents”。
将“$LOCAL_APPDATA$”映射到“X:\Documents and Settings\当前用户名\Local Settings\Application Data”。
将“$APPDATA$”映射到“X:\Documents and Settings\当前用户名\Application Data”。
将“$ALL_USER_PROFILE$”映射到“X:\Documents and Settings\AllUsers\Application Data”。
将“$ALL_USER_APPDATA$”映射到“X:\Documents and Settings\AllUsers\Application Data”。
将“$USER_PATH$”映射到“X:\Documents and Settings”。
(4)将磁盘中的A软件的软件资源通过映射方式显示给用户,用户可以在磁盘中看到存放有A软件,尽管软件资源仅仅是存放在“X:\A软件”中,但由于采用了映射手段,例如在用户查看“X:\Program File”中的文件时,由于软件资源中的“$PROGRAM_FILES$”也映射到了“X:\Program File”,所以用户会在“X:\Program File”中看到软件资源中的“$PROGRAM_FILES$”中的文件。这样对于用户来说,A软件就如同实际安装一样。
(5)用户需要运行A软件时可以直接运行,即操作系统内核可以根据用户或系统的请求,直接运行软件资源所对应的指定软件。
以下结合附图详细说明在运行时为了保护数据和解决同一文件不同版本的冲突,采用如下方法:
图1中,假定A软件(附图标记A)的优先级为低级,而操作系统的优先级为中级;
当运行A软件时,A软件优先访问专属A软件自身的文件而不论该文件的优先级,参见图2,A软件与操作系统不相交的部分表示该部分的文件专属于A软件,且系统中也不存在其他版本。
A软件与操作系统相交的部分表示该部分的文件不仅有专属于A软件的版本,且系统中还存在其他版本,尽管操作系统的优先级的级别比A软件高,但是由于A软件优先访问专属该A软件自身的文件而不论该文件的优先级,所以运行A软件时所访问的文件都是专属A软件自身的版本文件。
图3中可见,当A软件并没有运行,但操作系统访问到了与A软件相交部分的文件时,由于操作系统的级别高于A软件的级别,所以对于操作系统来说调用这部分文件时优先调用级别与操作系统相同的那个版本文件,而不是调用专属于A软件的那个版本文件。
参见图4,假定B软件(附图标记B)的优先级为高级,而操作系统的优先级为中级;
参见图5,当运行B软件时,B软件优先访问专属B软件自身的文件而不论该文件的优先级,B软件与操作系统不相交的部分表示该部分的文件专属于B软件,且系统中也不存在其他版本。
B软件与操作系统相交的部分表示该部分的文件不仅有专属于B软件的版本,且系统中还存在其他版本。
当B软件并没有运行,但操作系统访问到了与B软件相交部分的文件时,由于操作系统的级别低于B软件的级别,所以对于操作系统来说调用这部分文件时优先调用级别与B软件相同的那个版本,而不是调用专属于操作系统的那个版本。
参见图6,假定A软件(附图标记A)的优先级为低级,B软件(附图标记B)的优先级为高级,而操作系统的优先级为中级;
当运行A软件时,A软件优先访问专属A软件自身的文件而不论该文件的优先级。
同理,A软件与操作系统不相交的部分表示该部分的文件专属于A软件,且系统中也不存在其他版本。
A软件与操作系统相交的部分表示该部分的文件不仅有专属于A软件的版本,且操作系统中还存在其他版本,A软件与操作系统及B软件均相交的部分表示该部分的文件不仅有专属于A软件的版本文件,且操作系统以及B软件中均存在其他版本。
参见图7,尽管操作系统及B软件的优先级的级别比A软件高,但是由于A软件优先访问专属该A软件自身的文件而不论该文件的优先级,所以运行A软件时所访问的文件都是专属A软件自身的版本文件。
参见图8,当A软件并没有运行,但操作系统访问到了与A软件相交部分(且不与B软件相交)的文件时,由于操作系统的级别高于A软件的级别,所以对于操作系统来说调用这部分文件时优先调用级别与操作系统相同的那个版本文件,而不是调用专属于A软件的那个版本文件。
若操作系统访问到了与A软件及B软件均相交部分的文件时,由于操作系统的级别低于B软件的级别,所以对于操作系统来说调用这部分文件时优先调用级别与B软件的级别相同的那个版本文件,而不是调用专属于操作系统的那个版本文件。
当运行B软件时,B软件优先访问专属B软件自身的文件而不论该文件的优先级。
本发明方法采用精确到文件层和注册表项的虚拟化技术,可以轻易地得到用户常用软件的完整数据,用户可以很方便地携带着软件资源到另一台安装有同样环境的机器上使用,无需再次安装,这样也会比还原类软件节省大量的空间和时间。

Claims (3)

1.一种基于虚拟化的软件运行方法,其特征在于,包括如下步骤:
(1)提取指定软件在操作系统注册表中的注册信息及该软件的文件;
(2)将步骤(1)得到的数据保存成预定的格式,得到软件资源并存放在用户磁盘中;
(3)对用户磁盘上的操作系统内核在操作注册表时所涉及的应用程序编程接口进行替换,并根据操作系统的标准接口建立文件过滤驱动,使得操作系统内核可依照步骤(2)所述的预定的格式识别软件资源中的注册信息及该软件的文件;
(4)将磁盘中的软件资源通过映射方式显示给用户;
(5)操作系统内核根据用户或系统的请求,运行软件资源所对应的指定软件。
2.如权利要求1所述的软件运行方法,其特征在于,步骤(2)中将步骤(1)得到的数据保存成预定的格式的要求如下:
将同一个软件相关的文件和注册表信息保存到同一个目录下,在此目录下将该软件的注册表信息保存在一个指定文件中,并在此目录下建立若干个子目录,分别存放该软件安装后的文件。
3.如权利要求1所述的软件运行方法,其特征在于,步骤(5)中操作系统内核根据用户或系统的请求,运行软件资源所对应的指定软件时,采用如下方法:
定义所有软件的优先级;运行非操作系统软件时,优先访问专属当前运行软件自身的版本文件而不论该版本文件的优先级,若该版本文件并非专属当前运行软件自身,或者前运行软件运行时需要访问操作系统或其他软件的版本文件,则访问优先级高的版本文件;
运行操作系统时,操作系统优先访问优先级高的版本文件。
CN 201010040008 2010-01-18 2010-01-18 一种基于虚拟化的软件运行方法 Active CN101777002B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010040008 CN101777002B (zh) 2010-01-18 2010-01-18 一种基于虚拟化的软件运行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010040008 CN101777002B (zh) 2010-01-18 2010-01-18 一种基于虚拟化的软件运行方法

Publications (2)

Publication Number Publication Date
CN101777002A CN101777002A (zh) 2010-07-14
CN101777002B true CN101777002B (zh) 2012-12-19

Family

ID=42513474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010040008 Active CN101777002B (zh) 2010-01-18 2010-01-18 一种基于虚拟化的软件运行方法

Country Status (1)

Country Link
CN (1) CN101777002B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855144B (zh) * 2011-06-27 2016-04-20 北大方正集团有限公司 用于单版本软件的版本处理方法和装置
CN102231116A (zh) * 2011-07-04 2011-11-02 成都市华为赛门铁克科技有限公司 应用程序虚拟化安装及加载方法及装置
CN104123202A (zh) * 2014-07-18 2014-10-29 珠海市君天电子科技有限公司 一种通信终端中数据的备份方法、还原方法及通信终端
CN105808980B (zh) * 2016-03-07 2019-06-11 深圳市新产业生物医学工程股份有限公司 非法使用软件的检测方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
CN101493766A (zh) * 2009-02-24 2009-07-29 浪潮集团山东通用软件有限公司 一种解决active x组件版本冲突的轻量级虚拟化方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
CN101493766A (zh) * 2009-02-24 2009-07-29 浪潮集团山东通用软件有限公司 一种解决active x组件版本冲突的轻量级虚拟化方法

Also Published As

Publication number Publication date
CN101777002A (zh) 2010-07-14

Similar Documents

Publication Publication Date Title
US10360054B2 (en) File mapping and converting for dynamic disk personalization for multiple platforms
US8539604B2 (en) Method, system and program product for versioning access control settings
EP3241140B1 (en) Malware detection in migrated virtual machines
US11314546B2 (en) Method and system for executing a containerized stateful application on a stateless computing platform using machine learning
CN102460382B (zh) 标注虚拟应用进程
US9069596B2 (en) Hypervisor file system
CN103827809B (zh) 用于虚拟分区监测的系统和方法
US9417870B2 (en) Managing user access to alternative versions of a particular function of a software product from within a current version of the software product
US20150332043A1 (en) Application analysis system for electronic devices
CN109241731B (zh) 一种基于虚拟应用的隐私信息保护方法、装置及存储介质
US9612942B2 (en) Verification of a computer program in respect to an unexpected response to an access request
EP2972728B1 (en) Tracking application usage in a computing environment
CN102722500B (zh) 一种虚拟文件系统及其实现方法
CN103678506B (zh) 在浏览器中加载应用程序快捷方式的方法、装置和浏览器
US8856740B2 (en) Implementing multiple versions of a plug-in concurrently
US8494964B1 (en) Software as a service via virtualization
US20100250493A1 (en) Using a sparse file as a clone of a file
JP5346405B2 (ja) ネットワークシステム
US20190121965A1 (en) Cloud application detection method and cloud application detection apparatus
CN110780930A (zh) 启动Android系统的方法、装置、电子设备及存储介质
CN103678505A (zh) 一种在浏览器中运行应用程序的方法、装置和浏览器
CN106897607A (zh) 一种应用程序监控方法及装置
CN101777002B (zh) 一种基于虚拟化的软件运行方法
US9053442B2 (en) Multiple project areas in a development environment
CN107636667B (zh) 在设备中创建多个工作空间的系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: 1, 310012, 1, 09, 2 Science and Technology Garden Road, Poplar Street, Hangzhou economic and Technological Development Zone, Zhejiang, China

Patentee after: Hangzhou Yu Shun network cool Technology Co.

Address before: Hangzhou City, Zhejiang province 310012 Xihu District Wenyi Road No. 75 Building No. 2 4 floor

Patentee before: Hangzhou Yuku Information Technology Co., Ltd.