CN101290584A - 基于系统调用包裹技术的可迁移软件使用模式 - Google Patents
基于系统调用包裹技术的可迁移软件使用模式 Download PDFInfo
- Publication number
- CN101290584A CN101290584A CNA2007100655681A CN200710065568A CN101290584A CN 101290584 A CN101290584 A CN 101290584A CN A2007100655681 A CNA2007100655681 A CN A2007100655681A CN 200710065568 A CN200710065568 A CN 200710065568A CN 101290584 A CN101290584 A CN 101290584A
- Authority
- CN
- China
- Prior art keywords
- software
- application software
- system call
- resource
- storage device
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
基于系统调用包裹技术的可迁移软件使用模式属于计算机软件领域,该发明可以使得使用者在运行视窗(Windows)操作系统的任意个人计算机上,利用移动存储设备或网络服务器随时使用带有其个性化配置的应用软件,而不需要安装这些(个)软件。此项发明是一种将应用软件运行时所需的非操作系统提供的所有资源,包括文件、目录、系统注册表、环境变量,存储在移动存储设备或网络服务器上,并在运行时通过系统调用包裹技术截获对于这些资源的访问并重定向到移动存储设备或网络服务器上而实现的软件使用模式。它兼容已有的视窗应用软件,不需要修改其源代码。
Description
技术领域
基于系统调用包裹技术的可迁移软件使用模式(以下简称可迁移使用模式)属于计算机软件领域。
背景技术
硬件成本的降低、网络基础环境的大幅改善使得人们更容易在各种场合使用计算机,但关键问题是如何在这些不同的计算机上重现每个使用者所熟悉的个人工作环境(而不是依赖于背负一个笔记本电脑)——主要包括个性化的应用程序及其配置等。比如一个用户在家里有一个固定的视窗(Windows)工作环境以及一系列所需要的应用程序,如办公软件、媒体处理软件、即时通信软件等;但当他在出差的时候,如何在其他的机器上使用这些软件呢?即便这些软件安装在其他机器上,那又如何获得其个性化的软件配置呢?
目前存在的解决方案是基于服务器的瘦客户机计算模式:即用户所使用的机器是作为一个瘦客户机登录到服务器(可以是一台或多台专用的服务器,或者是用户的个人计算机),客户机只作为图形终端使用,所有的应用与服务都运行在服务器上。但这种方式有两个问题:首先如果有多人登录的话,服务器的负载容易过重;再者,通过广域网的连接会引入很大的网络延迟,这个问题无法通过增加网络带宽来解决,因此用户体验可能很差。这方面的方案有Citrix MetaFrame,Microsoft Windows Terminal Services(WTS),AT&T Virtual NetworkComputing(VNC),Tarantella等。
还有一种方式是基于浏览器的应用模式,即以浏览器为应用平台,开发各种以浏览器插件形式提供的软件应用,这样只要有网络与兼容的浏览器,就可以使用所需要的程序。这个方案较为方便、普适性也很好,主要的问题在于与现有的软件不兼容,需要重新开发;而且依赖于浏览器的版本兼容性。这方面现有的方案有Google Office、Adobe的Apollo平台、微软的Windows Presentation Foundation以及开源平台OpenLaszlo。
发明内容
我们的发明专利的目的在于避免瘦客户机计算模式所引入的用户体验问题、以及避免基于浏览器的应用模式所带来的软件不兼容问题,而提供一种让使用者在任意的Windows个人计算机上不用安装就可以随时使用其个性化的应用软件的方法。
在一般用户看来,我们这个发明所带来的软件使用模式是这样的:首先用户只需要随身携带一个移动存储设备(如优盘、移动硬盘等),将其插入到可以使用该类移动存储设备的任意一台Windows个人计算机上;或者用户在任意一台联网的Windows个人计算机上登陆相关的网络服务器后,就可以直接运行移动存储设备或网络服务器上的应用软件(而不需要安装);而用户在使用期间对软件资源进行的修改都会存储在该移动存储或网络服务器上,从而使得软件下次运行时(可能是在另外一台机器上)所使用的是最新的资源。
从来源上讲,我们认为个人计算机的应用软件在运行时所需要访问的资源可以划分为两部分:操作系统提供的和非操作系统提供的(也可被称为“应用自有”的)。这里的资源包括文件(包括配置文件、执行文件、动态链接库以及其他文件)、目录、环境变量与系统注册表。而所谓“应用自有”指的是一般应用软件在安装后系统增加或变化的那一部分资源:包括新安装的文件、创建的目录、创建或更改的系统注册表项和环境变量。如果将所有这些资源放置在一个移动存储设备或者一个能够随时访问到的网络服务器上,那么就可能在任何一台个人计算机上运行软件而不需要安装。
当然,目前主流的计算机软件并没有考虑到这种使用方式。一般的,它们大都需要一个安装过程,由此过程在系统上创建“应用自有”的资源,而在运行中则通过系统调用来访问/修改包括这些资源在内的所有的运行时所需资源。因此关键问题在于如何在不改变应用软件代码的前提下截获这些调用,并判断是否是访问“应用自有”的资源——如不是则由默认的系统调用处理;如是则由我们专门编写的代码进行处理,来访问这些存储于移动存储设备或网络服务器上的“应用自有”资源。同时将任何的资源修改都保存在移动存储设备或网络服务器上,使得每次在不同计算机上启动软件后所使用的都是最新的资源。这可以使用系统调用包裹技术来实现。
另一方面,移动存储设备(如移动硬盘、大容量的U盘等)的容量越来越大,价格却在不断降低;而且网络基础环境也有了大幅改善,带宽、接入普及程度日益提高。这样,就可以通过大容量移动存储设备来随身携带,或者使用网络服务器来随时访问应用软件所需的资源。
所以,本发明的目的是通过如下措施来达到的:
在移动存储设备或网络服务器上存储应用软件运行时所需的所有非操作系统提供的资源,包括其所有的执行文件、动态链接库文件、配置文件以及其它文件、目录结构、注册表信息、环境变量等;由特定的应用启动程序启动该软件或者由特定的动态链接库伴随该软件启动运行,并由该应用启动程序或者该动态链接库使用系统调用包裹技术在应用软件的资源(包括文件系统、注册表、环境变量)访问相关的系统调用与系统的实际系统调用间插入代码,来截获这些系统调用并进行处理:如果是访问这些非操作系统提供的资源,则由这些插入代码处理——即访问存储在移动存储设备或网络服务器上的资源并返回结果;否则交由默认的系统调用处理。
这样,虽然所运行的应用软件没有安装在运行主机上,但是当其访问这些应用自有的资源时,通过系统调用包裹技术所插入的代码能够替代默认的系统调用进行处理并返回结果,就如同该运行主机上安装有该软件一样。
同时,软件运行时的所有资源修改被存储在移动存储设备或网络服务器上,而不是在主机硬盘上。
本发明所述的使用模式,其特征在于:
它在移动存储设备或网络服务器上保存应用软件运行时所需的所有非操作系统提供的资源,在未安装该应用软件的视窗个人计算机上,由采用了系统调用包裹技术的应用启动程序或动态链接库截获该应用软件运行时对于这些资源的访问并重定向到该移动存储设备或网络服务器上,并将该应用软件运行过程中对所有资源的修改存储在该移动存储设备或网络服务器上。
本发明所述的所有非操作系统提供的资源,其特征在于:
包括文件、目录、注册表信息与环境变量,可以通过监测应用软件的安装过程对于操作系统的文件系统、系统注册表等的修改来获得。
本发明所述的应用启动程序与/或动态链接库,其特征在于:
预先保存于个人计算机之上、或者预先保存于移动存储设备或网络服务器上,由该应用启动程序启动应用软件或者由该动态链接库伴随应用软件一起运行,通过系统调用包裹技术在应用软件的资源访问相关的系统调用与默认的系统调用代码间插入代码,由插入代码进行资源访问处理,并将结果返回给应用软件。
本发明在用户主机上运行应用软件,从而避免了瘦客户机计算模式可能引起的服务器集中负载较重、广域网网络延迟较长引起的用户体验问题,同时可以充分利用用户主机的处理能力。而与基于浏览器的应用模式相比较,本发明的特色在于其与现有的Windows软件兼容——即应用软件不需要修改源码。
附图说明
图1,本发明的运行时的结构图。
说明:涉及到的模块有三个:移动存储设备或者网络服务器、应用软件、插入代码。
应用软件即为可以运行在视窗系统上的普通应用软件。
移动存储设备用于保存应用软件的所有运行时所需的非操作系统提供的资源,包括文件、目录、环境变量与注册表信息。同时还用于保存应用软件运行中对资源所做的修改信息。
类似的,网络服务器也用于保存应用软件的所有运行时所需的非操作系统提供的资源,包括文件、目录、环境变量与注册表信息;同时还用于保存应用软件运行中对资源所做的修改信息。个人计算机能够与其相连接并传输数据。
网络服务器与移动存储设备不都是必须的,但两者至少必居其一。
插入代码——由实现了系统调用包裹技术的应用启动程序或动态链接库在应用软件的资源访问相关的系统调用与默认的系统调用代码间插入的代码。
图2,本发明的使用时的运行流程框图。
图3,Windows的执行文件格式。
图4,代码插入后的执行文件格式。
图5,插入代码的总体流程。
具体实施方式
我们将该可迁移使用方式的实现分为“应用软件的非操作系统提供的资源的获得”与“运行中资源相关的系统调用的截获与处理”两个方面,并进行具体实现的介绍。以下以使用移动存储设备来存储非操作系统提供的资源为例来进行具体介绍:下面所述的计算机均为x86个人电脑,操作系统为Windows XP SP2,移动存储设备为USB 2.0移动硬盘(容量40G)。
1.应用软件的非操作系统提供的资源的获得
目前主流的软件都是以安装包的形式发布,即用户得到软件后需要先进行安装才能使用。在此安装过程中,由安装程序在系统的文件系统上创建应用软件的安装目录、拷贝文件到安装目录或者其他系统目录;通常还会在系统注册表中添加相关项;也有可能创建某些环境变量(这通常也是通过修改系统注册表实现的)。在这一过程中创建的文件、目录、环境变量、系统注册表项被称为非操作系统提供的资源(或者“应用自有”的资源)。软件必须依赖这些资源才能够正常运行。
综上所述,这些资源可以分为文件系统相关与系统注册表相关两大类,前者包括文件与目录的创建,后者包括注册表与环境变量的创建。因此,以下从这两个方面来叙述如何获得这些安装时创建的资源。
1)文件系统相关的资源的获得
安装时安装程序会对文件系统进行修改,因此监视并记录这些修改即可。我们采用了自由软件FileMon(www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx)来获得这些完整信息,FileMon将所有与文件系统相关的操作(如读取、修改、出错信息等)全部记录下来,并允许用户对记录的信息进行保存、过滤、查找等处理。
以微软的OFFICE 2003软件中的Word为例,我们给出如何获得其文件系统相关的非操作系统提供的资源的示例。
首先启动FileMon,设定其“filter”的关键字为“setup.exe”、“msiexec.exe”、“msohtmed.exe”、“OSE.EXE”,这几个程序是Word的安装程序,由它们生成文件系统相关的资源,因此需要监视并记录它们的操作,同时只记录“write”且成功的操作。
然后启动Word安装,这个过程与通常的安装一样,直至完成。这一过程中FileMon在同时运行并记录文件系统操作,并将这些记录存于文件中。下面给出了记录的一个片断,可以看出其完成的记录了安装程序所执行的文件创建、写入、目录创建等操作。
20:33:39 msiexec.exe:932 WRITE C:\Program Files\MicrosoftOffice\OFFICE11\MULTIQ.DLL SUCCESS Offset:0 Length:3276820:34:44 msiexec.exe:932 WRITE C:\Config.Msi\40758.rbs SUCCESS Offset:331723 Length:59
20:34:44 msiexec.exe:932 WRITE C:\Config.Msi\40758.rbs SUCCESS Offset:331782 Length:2
比如“20:34:44 msiexec.exe:932 WRITE C:\Config.Msi\40758.rbs SUCCESSOffset:331782 Length:2”表示在“c:\Config.Msi\40758.rbs”中写入数据;而“20:33:39msiexec.exe:932 WRITE C:\Program Files\Microsoft Office\OFFICE11\MULTIQ.DLLSUCCESS Offset:0 Length:32768”表示写入“C:\Program Files\MicrosoftOffice\OFFICE11\MULTIQ.DLL”。
然后,对这记录进行处理,归纳出该过程中创建的目录、文件的完整信息(先创建而后又删除的除外),即文件/目录的名字及其完整路径。接着,将这些目录、文件完整的拷贝到移动存储设备上,并保持其目录层次关系——即如果某个文件是C:\ProgramFiles\Microsoft Office\OFFICE11\winword.exe,而移动存储设备的盘符是“Z”,则将其拷贝到Z:\Program Files\Microsoft Office\OFFICE11\下(路径不存在的话要先创建);类似的,某一文件为C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSOXEV.DLL,则先创建Z:\Program Files\CommonFiles\Microsoft Shared\OFFICE11目录,再拷贝过去。
至此,我们可以完整地获得安装过程所创建的文件系统资源,并将其分离出来。
2)注册表相关的资源的获得
我们采用了自由软件RegMon(http://www.microsoft.com/technet/sysinternals/utilities/regmon.mspx)来获得这些完整信息,RegMon将所有与系统注册表相关的操作(如读取、修改、出错信息等)全部记录下来,并允许用户对记录的信息进行保存、过滤、查找等处理。
还是以word安装为例。首先启动RegMon,设定其“filter”的关键字为“setup.exe”、“msiexec.exe”、“msohtmed.exe”、“OSE.EXE”,这几个程序是Word的安装程序,由它们生成注册表相关的资源,因此需要监视并记录这些操作。同时只记录修改且成功的操作。
然后启动Word安装,这个过程与通常的安装一样,直至完成。这一过程中RegMon在同时运行并记录系统注册表操作,并将这些记录存于文件中。下面给出了记录的一个片断,可以看出其完成的记录了安装程序所执行的注册表项创建、写入、删除等操作。
OSE.EXE:568 Crea teKey
HKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads SUCCESS Access:0x2001F
OSE.EXE:568 SetValue
HKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads\90000804-6000-11D3-8CFE-0150048383C9\Type SUCCESS 0x2
OSE.EXE:568 SetValue
HKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads\90000804-6000-11D3-8CFE-0150048383C9\DefaultDrive SUCCESS 0x3
如“OSE.EXE:568 CreateKey HKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads SUCCESS Access:0x2001F”记录ose.exe创建注册表键(CreateKey)“HKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads”,以及创建时的Access参数“0x2001F”;“OSE.EXE:568 SetValueHKLM\SOFTWARE\Microsoft\Office\Delivery\SourceEngine\Downloads\90000804-6000-11D3-8CFE-0150048383C9\Type SUCCESS 0x2”则记录了在注册表键中填值(SetValue)的操作。
然后对该记录进行处理,完整的遴选出创建(CreateKey)/填值(SetValue)/删除(DeleteKey/DeleteValue)操作(先创建后删除的则排除掉),并以文本文件格式存储在移动存储设备上。示例如下:
[ABC\DEF\GHI] 1167875994
″123″=″456″
″789″=″012″
[ABC\DEF\JKL]1167876004
″456″=″123″
″012″=″789″
其存储了路径是“ABC\DEF\GHI”的注册表键,其有两个键值,名字分别为123与789,两个的值分别为456与012,图中的1167875994是该键的创建时间或者最后修改时间;另存储了路径是“ABC\DEF\JKL”的注册表键,其有两个键值,名字分别为456与012,两个的值分别为123与789,图中的1167876004是该键的创建时间或者最后修改时间。其他的也可以依次类推进行存储。
至此,我们通过一个典型应用示例介绍了Windows下通过监测应用的安装过程来获得其文件系统相关资源与注册表相关资源的方法,并将这些资源以一定格式存储在移动存储设备上。
2.运行中资源相关的系统调用的截获与处理
将应用软件相关的非操作系统提供的资源存于移动存储设备上之后,面临的一个问题是如何在启动应用程序后让其能够正常的(如同安装在硬盘上一样)访问这些资源。
首先还是从一般软件的安装过程说起。安装过程一般完成这些事情:
1)创建安装目录以及其他所需的目录(一般都位于安装目录下),还有些文件会拷贝到Windows操作系统预设的目录下,包括由环境变量指定的ProgramFiles、SystemRoot、windir、APPDATA、CommonProgramFiles等。同时安装目录会被安装程序写入系统注册表,以便软件运行时找到该目录。
2)保存应用相关的运行所需配置,包括1)中所述的安装目录等。这些信息保存在系统注册表中。
自然的,运行时必须使得程序能够正常地获取这些资源。如果是正常安装在系统上,则可以直接使用系统的注册表与环境变量相关的API来获得这些资源,但在我们的发明中这些注册表相关的信息(windows下环境变量也是保存在注册表里的)被以文本形式保存在移动存储设备上,如何在不改变应用源代码的前提下访问这些信息是关键问题。
我们采用系统调用包裹技术来实现。这一技术的实质就是在用户用到的系统调用与实际实现的功能之间插入代码,以便截获用户程序的调用参数等信息,然后在这些代码中进行处理。
我们采用了透明的代码插入技术,有两种方式:
1)是在应用程序的执行文件中插入代码,通过重写所要包裹的系统调用在执行文件中的入口来实现。这样一旦应用程序使用此调用,就会先进入插入的代码,由后者进行适当的处理后再调用真正的系统调用或直接返回。
2)是将应用程序装载入内存后再进行函数包裹,直接在内存中改写相关函数的映像(Image),这样可以不改变执行文件的大小,而效果与前者是一样的。
这种技术能在用户无需修改源代码,无需重新编译连接,及不替换任何动态连接库的前提下实现所需的功能。目前在我们的参考实现中使用的是第一种方式。以下叙述其实现的关键细节。
图3显示了Windows下执行文件的组成,包括文件头,PE头,正文段包括程序代码,数据段包括初始化数据、所用到的动态连接库与系统调用的输入链表,输出(Exported)函数表与调试符号。
为修改Windows执行代码,我们在其执行文件的调试符号与输出函数表之间创建了一个新的段——含有原先的PE头的拷贝与一个新的函数输入表,同时修改了原先的PE头使之指向新的输入表,最后是我们插入的代码。如图4。
插入新的输入表有两个目的:首先它保留了原先的输入表以便在需要时将修改过的执行文件改回去。其次,新的输入表可以包括新的动态连接库用以完成所需的额外功能。这样当目标应用程序使用系统调用时,实际上查询的是我们插入的新的函数输入表,从而调用了我们的插入代码,后者对原有调用函数进行了包裹,以便在必要时在调用原来的系统调用函数。
利用这种方式我们包裹了与系统注册表、环境变量相关的系统调用,包括:
系统注册表相关——
RegCloseKey
RegCreateKeyEx
RegDeleteKey
RegDeleteValue
RegEnumKeyEx
RegEnumValue
RegFlushKey
RegLoadKey
RegOpenCurrentUser
RegOpenKeyEx
RegOpenUserClassesRoot
RegQueryInfoKey
RegQueryMultipleValues
RegQueryValueEx
RegRestoreKey
RegSaveKey
RegSetValueEx
RegUnLoadKey
环境变量相关——
GetEnvironmentStrings
GetEnvironmentVariable
SetEnvironmentVariable
FreeEnvironmentStrings
针对这些调用,我们的插入代码的总体流程是一致的,即:
1)首先判断所访问的资源是否是存在移动存储设备上的应用自有的资源,如是,则转3);如不是,则转2);
2)判断是否是一个修改操作(包括写入、创建、删除等),如是,则转4);否则,转5);
3)根据传入的调用参数,针对存储于移动存储设备上的资源进行访问(包括读取或者修改)操作,转6);
4)根据传入的调用参数,将此修改操作所涉及的资源记录在移动存储设备上,转6);
5)调用默认的系统调用进行操作,转6);
6)插入代码的此次执行结束。
以下以几个主要函数RegCreateKeyEx、RegDeleteKey、RegSetValue、RegDeleteValue、RegQueryValueEx、ReeEnumKeyEx、RegEnumValue、GetEnvironmentVariable、SetEnvironmentVariable为例进行说明。
RegCreateKeyEx——
因为该调用是创建一个键,属于改变注册表操作,因此由我们的插入代码处理,即在移动存储设备上存储该新建的键值。假设创建的键的全路径名为“ABC\XYZ\123”,则在“应用软件的非操作系统提供的资源的获得”中的“注册表相关的资源的获得”一节中所述的存储注册表信息的文本文件(以下简称为注册表信息文本文件)中填入“[ABC\XYZ\123]”一项。
RegDeleteKey——
删除一个键,也属于改变操作,由我们的插入代码处理。假设删除全路径名为“ABC\XYZ\123”的键,即在注册表信息文本文件中删除“[ABC\XYZ\123]”项。
RegSetValueEx——
设置某个键的值,属于改变注册表操作,由我们的插入代码处理。比方说在“ABC\XYZ\123”下设置DEF为456,则在注册表信息文本文件中的“[ABC\XYZ\123]”项下插入“DEF=456”。
RegDeleteValue——
删除某个键值,属于改变注册表操作,由我们的插入代码处理。比方说在“ABC\XYZ\123”下删除DEF键,则在注册表信息文本文件中的“[ABC\XYZ\123]”项下删除“DEF=456”。
RegQueryValueEx——
获得某个键值。首先由我们的插入代码查询该键值是否存在于移动存储设备上(即搜索注册表信息文本文件),如是(假设要获得“ABC\XYZ\123”下的DEF键值),则直接返回456;否则交由系统的默认调用处理并返回(即查询系统默认的注册表)。
RegEnumKeyEx——
获得某个键下的所有子键。首先由我们的插入代码查询该键值是否存在于移动存储上(即搜索注册表信息文本文件),如是,则返回该键下的所有子键——假设要获得“ABC\DEF”下的子键,则返回“GHI”、“JKL”的信息;
否则交由系统的默认调用处理并返回(即查询系统默认的注册表)。
RegEnumValue——
获得某个键下的所有键值。首先由我们的插入代码查询该键值是否存在于移动存储上(即搜索注册表信息文本文件),如是,则返回该键下的所有键值——假设要获得“ABC\DEF\GHI”下的所有键值,则返回“123=456”、“789=012”信息。
GetEnvironmentVariable——
获得某一环境变量。首先插入代码查询该环境变量是否存在于移动存储上(windows系统下环境变量也存于注册表内),如是,则从注册表信息文本文件中读出该变量并返回;否则交由系统的默认调用处理并返回。
SetEnvironmentVariable——
设置某一环境变量,则由插入代码在注册表信息文本文件中保存此变量信息。
如果是采用网络服务器来存储非操作系统提供的资源,则可搭建一台Samba网络服务器。Samba是一个开源的Windows Common Internet File System的实现,可以安装在Linux系统上,而作为一个Windows文件服务器。这样,windows个人计算机使用者就可以将Samba服务器上的存储空间加载为本地的一个盘符,然后可以对此盘进行正常的文件系统操作,如同使用一个本地硬盘或者移动硬盘一样。而“应用软件的非操作系统提供的资源的获得”与“运行中资源相关的系统调用的截获与处理”中的其他细节的实现则与使用移动存储设备一样。
Claims (3)
1.基于系统调用包裹技术的可迁移软件使用模式,其特征在于:
它在移动存储设备或网络服务器上保存应用软件运行时所需的所有非操作系统提供的资源,在未安装该应用软件的视窗(Windows)个人计算机上,由采用了系统调用包裹技术的应用启动程序或动态链接库截获该应用软件运行时对于这些资源的访问并重定向到该移动存储设备或网络服务器上,并将该应用软件运行过程中对所有资源的修改存储在该移动存储设备或网络服务器上。
2.根据权利要求1所述的基于系统调用包裹技术的可迁移软件使用模式中的应用软件运行时所需的所有非操作系统提供的资源,其特征在于:
它可以通过监测应用软件的安装过程对于操作系统的文件系统、系统注册表等的修改来获得,包括新安装的文件、创建的目录、创建或更改的系统注册表项和环境变量。
3.根据权利要求1所述的基于系统调用包裹技术的可迁移软件使用模式中的应用启动程序或动态链接库,其特征在于:
它预先保存于个人计算机之上、或者预先保存于移动存储设备或网络服务器上,由该应用启动程序启动应用软件或者由该动态链接库伴随应用软件一起运行,通过系统调用包裹技术在应用软件的资源访问相关的系统调用与默认的系统调用代码间插入代码,由该插入代码进行资源访问处理,并将结果返回给应用软件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100655681A CN101290584A (zh) | 2007-04-17 | 2007-04-17 | 基于系统调用包裹技术的可迁移软件使用模式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100655681A CN101290584A (zh) | 2007-04-17 | 2007-04-17 | 基于系统调用包裹技术的可迁移软件使用模式 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101290584A true CN101290584A (zh) | 2008-10-22 |
Family
ID=40034851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100655681A Pending CN101290584A (zh) | 2007-04-17 | 2007-04-17 | 基于系统调用包裹技术的可迁移软件使用模式 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101290584A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN102754073A (zh) * | 2010-02-05 | 2012-10-24 | 微软公司 | 用于虚拟化的扩展点声明性注册 |
CN103051671A (zh) * | 2012-11-22 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统重复数据删除方法 |
WO2016155248A1 (zh) * | 2015-03-27 | 2016-10-06 | 中兴通讯股份有限公司 | 一种使用软件的方法和装置 |
CN106027655A (zh) * | 2016-05-24 | 2016-10-12 | 深圳市智物联网络有限公司 | 服务加载方法及装置 |
-
2007
- 2007-04-17 CN CNA2007100655681A patent/CN101290584A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102754073A (zh) * | 2010-02-05 | 2012-10-24 | 微软公司 | 用于虚拟化的扩展点声明性注册 |
US10331466B2 (en) | 2010-02-05 | 2019-06-25 | Microsoft Technology Licensing, Llc | Extension point declarative registration for virtualization |
CN102279748A (zh) * | 2011-08-29 | 2011-12-14 | 焦秀琴 | 远程存储本地执行的软件使用方法、系统、服务器及客户端 |
CN103051671A (zh) * | 2012-11-22 | 2013-04-17 | 浪潮电子信息产业股份有限公司 | 一种集群文件系统重复数据删除方法 |
WO2016155248A1 (zh) * | 2015-03-27 | 2016-10-06 | 中兴通讯股份有限公司 | 一种使用软件的方法和装置 |
CN106027655A (zh) * | 2016-05-24 | 2016-10-12 | 深圳市智物联网络有限公司 | 服务加载方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10007782B2 (en) | Method and system for facilitating replacement of system calls | |
JP6621543B2 (ja) | ハイブリッドアプリケーションの自動更新 | |
US8630978B2 (en) | Method of bi-directional synchronization of user data | |
US8572033B2 (en) | Computing environment configuration | |
JP5305581B2 (ja) | ポートレット構成データを交換するための方法、ポータル、およびコンピュータ・プログラム | |
US20080147671A1 (en) | System for Running Web Applications Offline and Providing Access to Native Services | |
CN105426223B (zh) | 应用加载方法和装置 | |
KR20090115168A (ko) | 모바일 환경 및 데스크탑 환경에서 소프트웨어 로딩 방법 | |
US20190087209A1 (en) | Hypervisor-based just-in-time compilation | |
US20120254118A1 (en) | Recovery of tenant data across tenant moves | |
WO2009118503A1 (en) | Web content management | |
CN102279748A (zh) | 远程存储本地执行的软件使用方法、系统、服务器及客户端 | |
CN104704468A (zh) | Web应用程序的跨系统安装 | |
US7865878B2 (en) | Method and apparatus for operating enterprise software from a detachable storage device | |
CN102118442A (zh) | 一种访问Web资源的方法及装置 | |
EP1782185A1 (en) | Application splitting for network edge computing | |
CN103631587A (zh) | 一种软件安装包的定制方法和一种服务器 | |
CN101290584A (zh) | 基于系统调用包裹技术的可迁移软件使用模式 | |
CN103631619A (zh) | 一种软件安装方法和一种终端 | |
CN1282923A (zh) | 将应用程序从系统固件传递到存储设备的方法和系统 | |
KR20090113372A (ko) | 모바일 환경 및 데스크톱 환경에서 장치들의 식별 방법 | |
US9342527B2 (en) | Sharing electronic file metadata in a networked computing environment | |
JP2003067209A (ja) | Java(登録商標)アプリケーション間の通信を用いたJava(登録商標)アプリケーションミドレットの実行方法 | |
CN103501341A (zh) | 一种Web服务的创建方法及装置 | |
WO2018217406A1 (en) | Providing instant preview of cloud based file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C57 | Notification of unclear or unknown address | ||
DD01 | Delivery of document by public notice |
Addressee: Qin Yan Document name: Notification that Application Deemed to be Withdrawn |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20081022 |