CN101069157A - 用于访问资源的方法和系统 - Google Patents

用于访问资源的方法和系统 Download PDF

Info

Publication number
CN101069157A
CN101069157A CNA2005800410556A CN200580041055A CN101069157A CN 101069157 A CN101069157 A CN 101069157A CN A2005800410556 A CNA2005800410556 A CN A2005800410556A CN 200580041055 A CN200580041055 A CN 200580041055A CN 101069157 A CN101069157 A CN 101069157A
Authority
CN
China
Prior art keywords
resource
file
request
key
environment
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.)
Granted
Application number
CNA2005800410556A
Other languages
English (en)
Other versions
CN101069157B (zh
Inventor
N·A·比塞特
A·罗伊乔德里
R·J·马扎费里
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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
Priority claimed from US10/711,734 external-priority patent/US20060069662A1/en
Priority claimed from US10/711,736 external-priority patent/US8171479B2/en
Priority claimed from US10/711,732 external-priority patent/US7752600B2/en
Priority claimed from US10/711,733 external-priority patent/US8117559B2/en
Priority claimed from US10/711,735 external-priority patent/US7853947B2/en
Priority claimed from US11/231,370 external-priority patent/US8095940B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Priority claimed from PCT/US2005/034177 external-priority patent/WO2006039206A1/en
Publication of CN101069157A publication Critical patent/CN101069157A/zh
Publication of CN101069157B publication Critical patent/CN101069157B/zh
Application granted granted Critical
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Abstract

在本方法中由操作系统提供了访问资源的方法,在第一个环境内部执行的应用程序接收到一个访问资源的请求。与此资源相关的第一个标识符被获得。确定第二个标识符,其涉及被请求的资源和发起该资源的发起环境。响应于该第二个标识符,将对资源的请求重定向到所识别的资源实例。使用位于该资源驻留的环境中的该资源的实例,来响应对资源的请求。另外,在操作系统提供的用于访问资源的方法中,由在资源中执行的应用程序接收对资源的请求。第一个标识符与请求的资源相关。参考注册,作为对在与资源相关联的第一个标识符和与资源相关联的第二个标识符之间的关联的响应,此关联与环境相关联。作为对注册进行参考的响应,识别资源和在其上发起资源的环境。第二个标识符是与资源、环境和与在其上发起资源的环境相关联的。针对资源的注册键存储在注册中,该注册键包括第二个标识符。响应于第二个标识符,针对资源的请求被重定向到该资源的被识别的实例。使用位于资源所驻留的环境中的资源实例来针对资源的请求进行响应。响应于第二个标识符,在识别的环境中发起被请求的资源。

Description

用于访问资源的方法和系统
技术领域
本发明涉及管理由计算机执行的软件应用,特别地,涉及用于减少在由相同计算机系统执行的不同应用程序之间和相同应用的各个用户之间的兼容性和交际性(sociability)问题。
背景技术
计算机软件应用程序在执行和安装期间使用由计算机的操作系统提供的多种本地(native)资源。传统的单用户计算机于图1A中描述。如图1A中所示,由操作系统100提供的本地资源可以包括文件系统102、注册(registry)数据库104和对象106。文件系统102给应用程序提供打开、创建、读取、复制、更改和删除数据文件150、152的机制。数据文件150、152可以一起分组在目录160、162的逻辑层级中。注册数据库104存储关于与计算机物理联系(attach)的硬件的信息,在操作系统100启动时,哪些系统选项已经被选择,计算机存储器如何被建立,应用专用数据的各种项目和哪些应用程序应该存在。如图1A中所示,注册数据库104一般地被组织在“键”(key)170、172的逻辑层级中,键是注册值的容器。操作系统100可以还提供多个通信和同步对象106,包括信号量、区(section)、互斥体(mutexes)、计时器、变异体(mutant)和管道。文件系统102、注册数据库104、和对象106和任意其他由操作系统100使其可用的本地资源在本文档中一起称为“系统层”108。由系统层108提供的资源对任意应用或者系统程序112、114均可用。
但是,当试图执行或者安装两个不兼容的应用程序112,114时,出现问题。如图1A所示,两个应用程序APP1 112和APP2 114,在操作系统100“顶端”执行,也就是说,应用程序使用由操作系统提供的函数来访问本地资源。当应用程序在执行或者安装过程中,以相互排斥的方式使用本地资源102,104,106时,应用程序被称为相互不兼容的。APP1 112可能请求或者试图安装由路径名c:\windows\system32\msvcrt.dll定位的文件,并且,APP2 114可能请求或者试图安装由相同路径名定位的第二个不同的文件。在这个情况下,APP1 112和APP2 114不能够在相同的计算机上被执行,被称为是相互不兼容的。相似的问题可能为其他本地资源所遇到。这点最多对于需要在相同的操作系统100的环境中一起安装或执行APP1 112和APP2 114的计算机用户是不便的。
图1B描述支持代表多个用户并发执行应用程序112,114,112′,114′的多用户计算机系统。如图1B中所示,APP1的第一个实例112和APP2的第一个实例114在第一个用户会话110的上下文中执行,APP1的第二个实例112′在第二个用户会话120的上下文中执行,并且APP2的第二个实例114′在第三个用户会话130的上下文中执行。在这个环境中,如果APP1的两个实例112,112′和APP2的两个实例114,114′仿佛单个用户执行此应用那样使用资源102,104,106,则会发生问题。例如,APP1 112可能在注册键170中存储应用专用数据。当在第一个用户上下文110中执行的APP1的第一个实例112,和在第二个用户上下文120中执行的APP1的第二个实例112′,都试图将配置数据存储到相同的注册键170时,将为其中的一个用户存储不正确的配置信息。对于其它本地资源,可能发生类似的问题。
本发明解决了这些应用程序兼容性和交际性问题。
发明内容
本发明允许在单个计算机上安装和执行彼此不兼容的应用程序和相同的应用程序的不兼容版本。而且,它允许在多用户计算机上安装和执行设计用于单用户计算机的,或者在设计时没有考虑到当执行在多用户计算机上时遇到的问题的程序。所述的方法和设备对于单用户计算环境是适用的,其包括多用户可能一个接一个地使用单个计算机的环境,同样也适用于其中多个用户并发使用单个计算机的多用户计算环境。本发明虚拟化(virtualize)用户和应用对本地资源的访问,诸如文件系统、注册数据库、系统对象、窗口类和窗口名,而不对应用程序或者所基于运行的操作系统进行修改。另外,虚拟化了的本地资源可能被以本地格式存储(也就是说,虚拟化了的文件被存储在文件系统中,虚拟化了的注册项被存储在注册数据库中,等等),允许使用标准工具和技术对虚拟化了的资源进行查看和管理。
在一个方面,本发明涉及用于访问由操作系统提供的资源的方法。针对资源的请求由在第一环境中执行的应用程序接收。获取与此资源相关的第一标识符。确定涉及所请求资源的第二标识符和在其上发起(launch)资源的发起环境。响应于第二个标识符,针对资源的请求被重定向到所识别的资源实例。使用位于该资源所驻留(reside)的环境中的资源实例来答复针对该资源的请求。响应于第二标识符,在所识别的环境中发起所请求的资源。
在一个实施例中,确定第二个标识符包括参考(consult)与应用隔离(isolation)环境相关的图(map)。在另一个实施例中,确定第二个标识符包括从图接收第二个标识符,第二个标识符标识在资源所驻留的环境中所请求的资源的实例。
在另一个方面,本发明涉及用于访问由操作系统提供的资源的系统,其包括资源、应用程序、关联(association)、第一个进程、第二个进程和第三个进程。在环境中执行的应用程序接收到针对资源的请求。所述关联将与资源相关联的第一个标识符和与资源相关联的第二个标识符进行关联。响应于第一个标识符,第一个进程从此关联接收到第二个标识符。第二个进程识别资源实例和在其中发起资源的环境。响应于第二个标识符,第三个进程将针对资源的请求重定向(redirect)到该资源实例。
在一个实施例中,第一个进程从关联接收动态生成的第二个标识符。在另一个实施例中,关联包括将标识与应用程序相关联的至少一个COM服务器和应用隔离环境的类标识符映射到动态生成的类标识符的映射。在另一个实施例中,资源包括进程外(out-of-process)COM服务器。
在一个方面中,本发明涉及用于访问由操作系统提供的资源的方法。针对资源的请求由在环境中执行的应用程序接收。获取与此资源相关的第一标识符。响应于在与资源相关联的第一个标识符和与资源相关联的第二个标识符之间的关联,参考注册,此关系与环境相关联。响应于对注册的参考,识别出资源和在其上发起该资源的环境。第二个标识符与所述资源,所述环境和在其上发起该资源的环境相关联。用于该资源的注册键被存储在注册中,该注册键包括第二个标识符。响应于第二个标识符,针对资源的请求被重定向到所识别的资源实例。使用位于该资源所驻留(reside)的环境中的资源实例来答复针对该资源的请求。响应于第二标识符,在所识别的环境中发起所请求的资源。
在一个实施例中,响应于从关联接收第二标识符失败而参考注册。在另一个实施例中,在关联中该第二标识符被与所述资源、所述环境和发起该资源的环境相关联。
在另一个方面,本发明涉及用于访问由操作系统提供的资源的系统,其包括资源、应用程序、关联、钩取(hook)进程和第二个进程。在环境中执行的应用程序,接收针对资源的请求。在与资源相关联的第一个标识符和与资源相关联的第二个标识符之间的关联,与环境相关联。钩取进程获取与资源相关联的第一个标识符,识别该资源和在其上执行资源的环境,在关联中存储第二个标识符,并且存储用于该资源的注册键。响应于第二个标识符,第二个进程重定向到所请求的资源。
在一个实施例中,应用程序在应用隔离环境中执行。在另一个实施例中,资源驻留在第二个环境上。在又一个实施例中,关联包括从识别至少一个COM服务器和COM客户端所驻留的环境的类标识符到第二类标识符的映射。在还有的另一个实施例中,响应于对关联的参考,钩取进程确定参考注册。
附图说明
本发明的特性由所附权利要求指出。本发明上述的优点,和本发明的进一步的优点,可能参考下文中结合附图的描述而更好地得到理解。在其中:
图1A是支持代表一个用户执行两个应用程序的当前技术的操作系统环境的框图;
图1B是支持代表若干用户并发执行多个应用的当前技术的操作系统环境的框图;
图2A是具有的应用程序兼容性和交际性问题减少了的计算机系统的实施例的框图;
图2B是具有的应用程序兼容性和交际性问题减少了的计算机系统的实施例的图;
图2C是一个实施例中用于将一个进程与隔离范围相关联的步骤的流程图;
图3A是显示一个实施例中,用于虚拟化地访问在计算机系统中的本地资源的步骤的流程图;
图3B是显示一个实施例中,在执行模式中识别替换实例的步骤的流程图;
图3C是描述在安装模式中,当接收到打开本地资源的请求时,识别文字(literal)资源的实施例步骤的流程图,该请求指示所述资源以可以被更改的方式打开;
图3D是描述一个实施例中,在安装模式中,当接收到建立虚拟资源的请求时,识别文字资源的步骤的流程图;
图4是描述一个实施例中,在所述虚拟化的环境中,打开文件系统中的一个条目所采取的步骤的流程图;
图5是描述一个实施例中,在所述虚拟化的环境中,从文件系统删除一个条目所采取的步骤的流程图;
图6是描述一个实施例中,在所述虚拟化的环境中,枚举(enumerate)文件系统中的条目所采取的步骤的流程图;
图7是描述一个实施例中,在所述虚拟化的环境中,在文件系统建立一个条目所采取的步骤的流程图;
图8是描述一个实施例中,在所述虚拟化的环境中,打开一个注册键所采取的步骤的流程图;
图9是描述一个实施例中,在所述虚拟化的环境中,删除一个注册键所采取的步骤的流程图;
图10是描述一个实施例中,在所述虚拟化的环境中,枚举注册数据库中一个键的子键所采取的步骤的流程图;
图11是描述一个实施例中,在所述虚拟化的环境中,建立一个注册键所采取的步骤的流程图;
图12是描述一个实施例中,虚拟化地访问命名的对象的步骤的流程图;
图13是描述一个实施例中,在所述环境中虚拟化窗口名和窗口类的步骤的流程图;
图13A是描述一个实施例中,确定文字窗口名和窗口类名的步骤的流程图;
图14是描述一个实施例中,在所述虚拟化环境中,调用进程外COM服务器的步骤的流程图;
图15是描述一个实施例中,使用文件-类型关联来虚拟化应用调用的步骤的流程图;
图16是描述一个实施例中,从源隔离范围移动进程到目标隔离范围的步骤的流程图。
索引
本索引旨在帮助读者跟随本发明的讨论。
1.0隔离环境的概念性的概览
1.1应用隔离
1.2用户隔离
1.3本地资源合计图(aggregrate view)
1.4进程与隔离范围的关联
1.4.1范围外(out-of-scope)进程与隔离范围的关联
2.0虚拟化机制概览
3.0安装到隔离环境中
4.0详细的虚拟化例子
4.1文件系统虚拟化
4.1.1文件系统打开操作
4.1.2文件系统删除操作
4.1.3文件系统枚举操作
4.1.4文件系统建立操作
4.1.5短文件名管理
4.2注册虚拟化
4.2.1注册键打开操作
4.2.2注册键删除操作
4.2.3注册键枚举操作
4.2.4注册建立操作
4.3命名的对象的虚拟化操作
4.4窗口名虚拟化
4.5进程外COM服务器虚拟化
4.6虚拟化的文件-类型关联
4.7隔离环境间的进程的动态运动
具体实施方式
1.0隔离环境观念性的概览
1.1应用隔离
现在参考图2A,显示了一个在具有降低的应用兼容性和交际性问题的操作系统100控制下运行的计算机的实施例。操作系统100使各种本地资源通过系统层108对应用程序112,114可用。由系统层108实例化的资源的视图将被作为“系统范围”。为了避免应用程序112,114对本地资源102,104,106,107的访问的冲突,提供了隔离环境200。如图2A所示,隔离环境200包括应用隔离层220和用户隔离层240。观念性地,隔离环境200通过应用隔离层220为应用程序112,114提供本地资源的唯一视图,诸如文件系统102、注册104、对象106和窗口名107。每一个隔离层修改提供给应用的本地资源的视图。由一个层提供的修改的本地资源视图将被称为该层的“隔离范围”。如在图2A中所示,应用隔离层包括两个应用隔离范围222,224。范围222表示提供给应用112的本地资源的视图,并且范围224表示提供给应用114的本地资源的视图。因此,在图2A中显示的实施例中,APP1 112被提供文件系统的专用视图102′,而APP2 114被提供文件系统的另外一个专有视图102″。在一些实施例中,应用隔离层220为在操作系统100上执行的每一个单独的应用程序提供本地资源102,104,106,107的专用视图。在其它实施例中,应用程序112,114可以被分组在集合中,并且在这些实施例中,应用隔离层220为应用程序的每一个集合提供本地资源的专用视图。有冲突的应用程序可以被分到分离的组中,以提高应用的兼容性和交际性。在另一些实施例中,属于一个集合的应用可以由管理员配置。在一些实施例中,“全通过(passthrough)”隔离范围可以被定义为与系统范围完全相对应。换句话说,在全通过隔离范围内执行的应用直接在系统范围上进行操作。
在一些实施例中,应用隔离范围进一步被划分为分层的子范围。主子范围包含基本应用隔离范围,并且附加子范围包含对于此范围的多种修改,该修改对于该应用的多个执行实例可见。例如,子范围可以包括对所述范围的修改,其体现了在应用的补丁级别或者附加特性的安装或者删除中的改变。在一些实施例中,对于应用的执行实例可见的附加子范围的集合是可配置的。在一些实施例中,对于应用的所有执行实例,该可见子范围的集合是相同的,而不管该应用是代表哪个用户在执行。在其他实施例中,对于执行该应用的不同的用户,可见子范围的集合可以发生变化。在另一些实施例中,可以定义子范围的各种集合,并且用户可以选择使用哪个集合。在一些实施例中,子范围可以在不再需要时,被放弃。在一些实施例中,在一个子范围集合内的修改可以被一起合并来形成单个子范围。
1.2用户隔离
现在参考图2B,描述了具有减少的应用兼容性和应用交际性问题的多用户计算机。该多用户计算机包括在系统层108中的本地资源102,104,106,107,和上面所述的隔离环境200。应用隔离层220的功能如上所述,给应用或者应用组提供修改的本地资源视图。用户隔离层240,从概念上来说,给应用程序112,114提供的本地资源视图基于被执行应用所代表的用户的用户身份进一步变化。如图2B中所示,用户隔离层240可以被认为包括多个用户隔离范围242′,242″,242,242′,242″,242(通称242)。用户隔离范围242提供本地资源的应用专用视图的用户专用视图。例如,代表用户“a”在用户会话110中执行的APP1 112被提供文件系统视图102′(a)的,其由用户隔离范围242′和应用隔离范围222共同进行更改和修改。
在另一个方式中,用户隔离层240通过对由用户隔离范围242′提供的用户专用视图修改进行分层,为每一个单独用户更改本地资源的视图,而用户隔离范围242′提供的用户专用视图是在由应用隔离范围222提供的应用专用视图修改之上的,后者也是依次在由系统层提供的本地资源的系统范围的视图之上分层的。例如,当APP1 112的第一个实例访问注册数据库104中的一个条目时,专用于第一个用户回话和该应用的注册数据库的视图104′(a)被参考。如果请求的注册键在用户专用注册视图104′(a)中被找到,则将该注册键返回给APP1 112。如果没有找到,则参考专用于该应用的注册数据库视图104′。如果请求的注册键在应用专用的注册视图104′中被找到,注册键被返回给APP1 112。如果没有找到,则存储在系统层108中注册数据库104中的注册键(也就是本地注册键)被返回给APP1 112。
在一些实施例中,用户隔离层240给每个单独用户提供隔离范围。在其它实施例中,用户隔离层240为一组用户提供隔离范围,这可以由在组织内的角色来定义或者可以由管理员来预先确定。在又一些实施例中,没有提供用户隔离层240。在这些实施例中,一个应用程序所看到的本地资源的视图是由应用隔离层220提供的。隔离环境200,尽管是联系支持多个用户并发执行应用程序的多用户计算机进行了描述,其还可以被用于单用户计算机,来解决因不同用户在相同计算机系统上顺序执行应用程序所导致的应用兼容性和交际性问题,和因由相同用户安装和执行不兼容程序所导致的那些问题。
在一些实施例中,用户隔离范围进一步被划分为子范围。由用户隔离范围对展现给在此范围内执行的应用的视图的修改,是此范围内的每一个子范围包含的修改的汇总(aggregate)。子范围在彼此的顶上分层,并且在较高子范围中的资源的汇总视图修改覆盖较低子范围中对相同资源的修改。
在这些实施例中的一些中,这些子范围中的一个或多个可以包含对用户专用视图的修改。在这些实施例中的一些中,一个或者多个子范围可以包含对用户集合专用视图的修改,这些集合可以由系统管理员来定义或者在操作系统中被定义为用户组。在这些实施例中的一些中,这些子范围中的一个可以包含对特定登录会话的专用视图的修改,并且因此,在会话结束时被丢弃。在这些实施例中的一些中,由与用户隔离范围相关的应用实例对本地资源的改变通常影响这些子范围中的一个,并且在其他实施例中,那些改变依照被改变的特定资源,可以影响不同子范围。
1.3本地资源的汇总视图
上述概念性结构允许对代表一个用户来执行的应用展现,对于该应用和用户的组合专用的、本地资源的汇总或统一的虚拟化视图。该汇总视图可以被称为“虚拟范围”。将对代表用户执行的应用实例展现,反映本地资源的所有有效的虚拟化实例的本地资源单一视图。从概念上说,这个汇总视图首先包括由在系统范围内的操作系统提供的本地资源的集合,覆盖可应用于该执行的应用的应用隔离范围中体现的修改,还覆盖在可应用于该应用被执行所代表的用户的用户隔离范围中体现的修改。在系统范围内的本地资源的特征在于对该系统上所有用户和应用是共有的,除非操作系统拒绝对特定用户或者应用的访问。在应用隔离范围内体现的对资源视图的修改,特征在于,对与该应用隔离范围相关联的应用的所有实例是共有的。在用户隔离范围内体现的对资源视图的修改,特征在于,对代表与该用户隔离范围相关联的用户执行的可应用的应用隔离范围的相关的所有应用是共有的。
此概念能够被扩展到子范围;在用户子范围中体现的对资源视图的修改,对于代表与用户隔离子范围相关联的用户或用户组执行的可应有的应用隔离子范围的所有相关应用,是共有的。贯穿此说明书中,应该理解当一般性提及“范围”时,还指子范围(如果子范围存在的话)。
当一个应用请求本地资源的枚举时,诸如文件系统或者注册数据库的一部分,通过首先枚举本地资源的“系统范围的”的实例,也就是,在系统层中找到的(如果有的话)实例,来构建虚拟化的枚举。接着,枚举所请求的资源的“应用范围的”实例(在合适的应用隔离范围内找到的实例,如果有的话)。在应用隔离范围内遇到的任何被枚举的资源,被加入到视图中。如果所枚举的资源已经存在于视图中(因为同样存在于系统范围内),则用该应用隔离范围内遇到的资源的实例替代它。相似地,枚举所请求的资源的“用户范围的”实例,也就是在合适的用户隔离范围内找到的实例(如果有的话)。再次,在该用户隔离范围内遇到的任意枚举的资源被加入视图。如果该本地资源在视图中已存在(因为,它在系统范围或合适的应用隔离范围内存在),则用该用户隔离范围内遇到的资源的实例替代它。在这个方式中,本地资源的任意枚举将合适地反映被枚举的本地资源的虚拟化。从概念上说,相同的方法适用于枚举包括多个子范围的隔离范围。对各个子范围进行枚举,其中来自较高子范围的资源替换来自该汇总视图中较低子范围的匹配实例。
在其他实施例中,枚举可以从用户隔离范围层向下直到系统层来完成,而不是反过来。在这些实施例中,用户隔离范围被枚举。随后,应用隔离范围被枚举,并且在应用隔离范围内出现的、没有在用户隔离范围内枚举的任何资源实例,被添加到正在进行创建的汇总视图中。对于仅在系统范围内出现的资源,重复相似的处理。
在另一些实施例中,所有隔离范围可以被同时枚举,并且将相应的枚举进行组合。
如果一个应用试图打开一个本地资源的已有实例,而不想修改资源,则被返回给该应用的特定实例是在虚拟范围内找到的一个,或者与出现在所请求资源的父资源的虚拟化枚举中的实例相等同。从隔离环境的观点来看,应用被描述为请求打开“虚拟资源”,并且用于满足该请求的本地资源的特定实例被描述为对应于所请求资源的“文字资源”(literal resource)。
如果代表用户执行的一个应用试图打开资源,并且显示出它这样作意图要对资源进行修改,该应用实例通常被给予要修改资源的私有拷贝,因为,在应用隔离范围和系统范围内的资源对于代表其他用户执行的应用是公有的。通常,该资源的用户-范围的拷贝被制造,除非已经存在该用户-范围的实例。由虚拟范围提供的汇总视图的定义意味着,将应用-范围的或者系统-范围的资源拷贝到用户隔离范围的动作不改变由所讨论的用户和应用的虚拟范围所提供的汇总视图(对任意其他的用户,任意其他的应用实例,也不改变)。由代表该用户执行的应用实例对所拷贝的资源的随后修改,不影响不共享相同的用户隔离范围的、任意其他的应用实例的汇总视图。换句话说,那些修改不改变其他用户的,或者不与相同应用隔离范围相关联的应用实例的,本地资源的汇总视图。
1.4进程与隔离范围的关联
应用可以安装到特定的隔离范围中(下文将更详细地描述)。被安装到隔离范围内的应用总是与该范围相关联。或者,应用可以被发起到特定的隔离范围内,或者多个隔离范围内。实际上,应用被发起到一个或者多个隔离范围并且与之相关联。相关联的一个或多个隔离范围为进程提供本地资源的特别视图。应用可以也被发起到系统范围中,也就是,它们可以不与隔离范围相关联。这允许选择性的执行操作系统应用,诸如IE,也可以是在隔离环境中的第三方应用。
这种不论应用在何处安装而在隔离范围内发起应用的能力,不需要在隔离范围内单独安装应用,而缓和(mitigate)应用的兼容性和交际性问题。该选择性地发起在不同隔离范围内安装的应用的能力,提供了使得需要助手应用(诸如,Word,Notepad等)的应用能够具有在相同规则集合中发起的那些助手应用。
进一步,在多个隔离的环境中发起应用的能力,允许在隔离的应用和公有的应用之间提供更好的集成。
现在参考图2C,并且简要来说,用于将进程与隔离范围关联的方法包括:在挂起状态发起进程的步骤(步骤282)。获取与期望的隔离范围相关联的规则(步骤284),并且用于该进程和所获取的规则的标识符被存储在存储单元中(步骤286),并且挂起的进程被恢复(resume)(步骤288)。由进程进行的访问本地资源的随后的命令(call)被中断或者钩取(步骤290),与进程标识符相关联的规则(如果有的话)被用于虚拟化对所请求资源的访问(步骤292)。
还是参考图2C,并且更详细地来说,进程被发起在挂起状态中(步骤282)。在一些实施例中,使用客户发起器(launcher)程序来完成该任务。在一些实施例中,发起器被特别地设计来将进程发起到选择的隔离范围内。在其他实施例中,发起器通过(例如)命令行选项接受输入期望的隔离范围的说明。
与期望的隔离范围相关联的规则被获取(步骤284)。在一些实施例中,规则从持久存储单元(诸如硬盘驱动器,或者其他固态存储单元)中获取。规则可以被以关系数据库,平坦文件数据库,树状结构数据库,二叉树结构或者其他持久数据结构来存储。在其他实施例中,规则可以被存储在特别配置来存储它们的数据结构中。
用于进程的标识符,诸如进程id(PID),和所获取的规则被存储在存储单元中(步骤286)。在一些实施例中,提供核模式驱动器来接收与新进程建立相关的操作系统消息。在这些实施例中,PID和获取的规则可以被存储在该驱动器的上下文中。在其他实施例中,提供文件系统过滤器驱动器,或者小过滤器,来截取(intercept)本地资源请求。在这些实施例中,PID和获取的规则可以存储在过滤器中。在另一些实施例中,所有的截取由用户-模式钩取来完成,并且根本不存储PID。在进程初始化中,由用户-模式钩取设备加载规则,并且没有其他组件需要知道应用于PID的规则,因为规则关联完全在进程内完成。
挂起的进程被恢复(步骤288),并且由该进程进行的访问本地资源的随后的命令被截取或者钩取(步骤290),与该进程标识符相关联的规则(如果有的话)被用于对请求的资源的虚拟化访问(步骤292)。在一些实施例中,文件系统过滤器驱动器或者,小过滤器截取访问本地资源的请求,并且确定与截取的请求相关联的进程标识符是否已与规则集合相关联。如果是,与存储的进程标识符相关联的规则被用于对访问本地资源请求的虚拟化。如果不是,访问本地资源的请求不修改地被传递出(pass through)。在其他实施例中,一动态链接库被加载到新创建的进程中,并且该库加载隔离规则。在又一些其他实施例中,核模式技术(钩取,过滤器驱动器,小过滤器)和用户模式技术均被用于截取访问本地资源的命令。对于文件系统过滤器驱动器存储规则的实施例中,该库可以从文件系统过滤器驱动器加载规则。
与隔离范围相关联的进程的“子”进程与它们“父”进程的隔离范围相关联。在一些实施例中,这是由核模式驱动器在当一个子进程被创建时,通知文件系统过滤器驱动器来完成的。在这些实施例中,文件系统过滤器驱动器确定父进程的进程标识符是否与隔离范围相关联。如果是,文件系统过滤器驱动器存储在新创建的子进程的进程标识符和父进程的隔离范围之间的关联。在其他实施例中,文件系统过滤器驱动器能够不使用核模式驱动器而被从系统直接调用。在其他实施例中,在与隔离范围相关联的进程中,创建新进程的操作系统函数被钩取或者截取。当创建新进程的请求被从这样的一个进程接收到时,在新的子进程和父进程的隔离范围之间的关联被存储。
在一些实施例中,范围或子范围可以被与单个线程而不是整个进程相关联,允许在每线程(per-thread)基础上完成隔离。在一些实施例中,每线程隔离可以被用于服务和COM+服务器。
1.4.1将范围外进程与隔离范围相关联
本发明的另一个特点是能够将任意应用实例与任意应用隔离范围相关联,不论此应用是否被安装到该应用隔离范围、另一个应用隔离范围中或者没有安装在应用隔离范围中。没有被安装到特定的应用范围内的应用仍然能够代表用户在应用隔离范围和对应用户隔离范围的上下文中被执行,因为通过由用户隔离范围、应用隔离范围和系统范围构成的汇总虚拟范围,它们的本地资源对它们是可用的。在期望在一隔离范围内运行应用时,这为直接安装到系统范围内的应用提供了在该隔离范围内运行的能力,而不需要该应用在该隔离范围内单独的安装。这还为直接安装到系统范围内的应用,提供了在任意隔离范围的上下文中作为助手应用被使用的能力。
每一个应用实例(包括构成执行的应用的所有进程),被与零个或者一个应用隔离范围相关联,并且通过扩展精确地与零个或者一个对应的用户隔离范围相关联。这个关联由规则引擎在确定哪个规则(如果有的话)适用于资源请求时被使用。此关联不必是该应用被安装到的(如果有的话)应用隔离范围。许多被安装到隔离范围的应用在不同隔离范围内或者没有隔离范围运行时,不能正确起效,因为它们不能够找到必需的本地资源。但是,因为隔离范围是包括系统范围的资源视图的总和,安装在系统范围内的应用在任意应用隔离范围内通常能正确起效。这意味着,助手程序和进程外COM服务器,能够由代表用户的应用在特定隔离范围内调用和执行。
在一些实施例中,安装在系统范围内的应用被在隔离范围内执行,以便识别作为此执行的结果,对计算机的文件和配置设置做了哪些改变。因为所有受影响的文件和配置设置是在用户隔离范围内被隔离的,这些文件和配置设置很容易被识别。在这些实施例中的一些,,这用于报告应用对所述文件和配置设置做了那些改变。在这些实施例中的一些,文件和配置设置在应用执行结束时被删除,这有效地确保没有计算机的文件和配置设置的改变作为应用执行结果进行存储。在另一些实施例中,文件和配置设置在应用执行结束时被选择性地删除或者不被删除,这将有效地确保计算机的文件和配置设置的改变只有一些作为应用执行结果进行存储。
2.0虚拟化机制概览
现在参考图3A,显示了一个实施例中在执行模式中虚拟化访问本地资源的步骤,下文将把执行模式和安装模式区分开来。在简要的概览中,访问本地资源的请求被截取或者接收(步骤302)。此请求识别所寻找的要访问的本地资源。确定关于如何处理该接收到的访问请求的适用规则(步骤304)。如果规则指示此请求该被忽略,该访问请求不被修改地传送给系统层(步骤306),并且结果返回给请求者(步骤310)。如果规则指示此访问请求应被重定向或者隔离,则识别出满足此请求的资源的文字实例(步骤308),修改的或者置换的对该文字资源的请求被传送给系统层(步骤306),并且此结果被返回给请求者(步骤310)。
还是参考图3,并且更详细,识别本地资源的请求被截取或者接收(步骤302)。在一些实施例中,针对本地资源的请求被通过操作系统提供的“钩取”函数截取,用于进行本地资源请求的应用。在特殊的实施例中,这被实现为动态链接库,该库被载入到由操作系统创建的每一个新进程的地址空间中,并且在起初始化例程中实现钩取函数。可以通过由操作系统提供的工具(facility),实现将DLL加载到每个进程,或者可选择地通过修改DLL的可执行图像列表,而输入到磁盘文件中,或者当从磁盘加载该进程的可执行图像列表时输入存储器中。在其他实施例中,钩取函数由服务、驱动器或者端口监督程序(daemon)完成。在其他实施例中,由操作系统提供的可执行图像(包括共享的库和可执行文件)可以被修改或者打补丁,旨在提供钩取函数或者直接实现本发明的逻辑。对于特定的实施例,在其中操作系统是操作系统的微软Windows家族中的一员,截取可以由核模式驱动器钩取(hooking)系统服务分配表来实现。在另一些实施例中,操作系统可以提供允许第三方钩取访问本地资源的请求的函数的工具。在这些实施例中的一些中,操作系统可以通过应用编程接口(API)或者调试工具提供此工具。
在其他实施例中,本地资源请求被与本地资源相关联的驱动器堆栈或者处理程序堆栈(handler stack)中的过滤器所截取。例如,微软视窗(Windows)操作系统家族中的一些成员提供将第三方过滤器驱动器或者将小过滤器插入到文件系统驱动器堆栈的能力,并且文件系统过滤器驱动器或者小过滤器可以被用于提供如下所述的隔离功能。在另一些实施例中,本发明包括直接与本发明逻辑结合的文件系统实现。可选择地,操作系统可以被重写,来直接提供如下所述的功能。在一些实施例中,上述列出的截取或者接收针对资源的请求的方法中的一些或者全部的组合,可以同时被使用。
在许多实施例中,仅打开存在的本地资源或者创建新本地资源的请求被钩取或者截取。在这些实施例中,对本地资源的最初访问是导致资源被虚拟化的访问。在最初访问之后,请求应用程序能够使用由操作系统提供的、直接识别文字资源的句柄或者指针或者其他标识符,与操作系统关于虚拟化的资源进行通信。在其他实施例中,在虚拟化的本地资源上进行操作的其他类型请求也被钩取或者截取。在这些实施例中的一些,由应用打开或者创建虚拟资源的请求返回虚拟的句柄,其不直接标识文字资源,并且隔离环境负责将随后的相对于虚拟句柄的请求翻译为对应的文字资源。在那些实施例中的一些,附加的虚拟化操作能够被延迟,直到被证实为是必需的。例如,为隔离范围提供资源的私有可修改的拷贝的操作能够被延迟,直到改变资源的请求被提出,而不是当资源以允许随后修改的方式被打开。
一旦本地资源请求被截取或者接收,决定如何处理特定请求的适用的规则被确定(步骤304)。最适用的规则可以参考规则引擎、规则数据库、或者包含采用诸如列表或者树结构等合适的数据结构组织的规则的平坦文件,而被确定。在一些实施例中,依照优先级的规则确定在两个或者多个规则可用的时候,哪个规则将被作为最适用的。在这些实施例中的一些,规则优先级被包括在规则自身中,或者可选地,规则优先级可以被嵌入在用于存储规则的数据结构中,例如,规则优先级可以由树结构中的规则位置所指示。被确定的规则可以包括关于如何处理虚拟化的资源请求的附加信息,诸如,将请求重定向到哪个文字资源。在特别的实施例中,规则是一个三元组,包括过滤器域、动作域、数据域。在此实施例中,过滤器域包括用于匹配本地资源请求以确定该规则是否对于被请求的资源名有效的过滤器。动作域可以是“忽略”,“重定向”,“隔离”。数据域可以是关于在规则可用时要采用的动作的任意附加信息,包括在规则可用时所采用的功能。
规则动作“忽略”意味着请求直接在系统范围内的被请求的本地资源上进行操作。也就是,此请求被没有修改的传送给系统层108(步骤306),并且此请求以好像不存在隔离环境200那样被实现。在此例子中,隔离环境被描述为有个“洞”,或者此请求可以被参考为“全通过”请求。
如果规则动作指示本地资源请求须被重定向或者隔离,则识别满足此请求的文字资源(步骤308)。
规则动作“重定向”意味着此请求直接在系统范围的本地资源上进行操作,虽然是与在此请求中所指定的不同的资源。文字资源通过将所确定规则的数据域指定的、或者暗示的映射函数应用在被请求的本地资源名而进行识别。在最通常的例子中,文字的本地资源可以被放置在系统范围内的任意位置。作为一个简单的例子,规则{prefix_match(″c:\temp\″,resource name),REDIRECT,replace_prefix(″c:\temp\″,″d:\wutemp\″,resourcename)}将访问文件c:\temp\examples\d1.txt的请求重定向给文字文件d:\wutemp\examples\d1.txt。映射函数包括在规则的数据域中,并且匹配函数可以进一步范化以便通过使用(例如)有规律的表达式支持复杂的行为。一些实施例可以提供指定映射函数的能力,此函数定位在适用于应用所代表的用户的用户隔离范围或者子范围内或者适用于该应用的应用隔离范围内的文字资源的能力。进一步,实施例可以提供指定映射函数的能力,此函数定位在适用于不同应用的应用隔离范围内的文字资源,旨在提供在被隔离的应用之间受控的交互形式。在一些特别的实施例中,“重定向”动作能够被配置来提供等价于“忽略”规则动作的行为。在这些实施例中,文字资源恰恰是被请求的本地资源。当这个条件被进行了配置,隔离环境可以被称为有“洞”,或者此请求被称为“全通过”请求。
“隔离”规则动作意味着在使用合适的用户隔离范围和应用隔离范围识别的文字资源上的请求操作。也就是说,文字资源的标识符通过使用用户隔离范围、应用隔离范围、该两个范围、或者不用两个范围来修改所请求的本地资源的标识符而确定。依照请求访问的类型和被请求的本地资源的实例是否在适用的用户隔离范围、适用的应用隔离范围和系统范围内存在,识别特别的文字资源。
图3B描述了一个实施例中,当接收到打开本地资源的请求,指示此资源正在以要对其进行修改的目的被打开时,识别文字的资源(在图3A中步骤306)所采取的步骤。简要地,确定是否存在用户范围的所请求的本地资源的实例(也就是存在于适用的用户范围或者用户子范围内的实例)(步骤354)。如果存在,此用户范围的实例被识别为此请求的文字资源(步骤372),并且该实例被打开并返回给请求者。如果此用户范围的实例不存在,则作出请求的本地资源的应用范围的实例是否存在的判断(步骤356)。如果应用范围的实例存在,将其识别为“候选”资源实例(步骤359),并且检测与候选实例相关联的许可(permission)数据,确定该实例的修改是否被允许(步骤362)。如果不存在应用范围的实例,则判断此被请求的本地资源的系统范围实例是否存在(步骤358)。如果它不存在,返回一个错误条件给请求者,指示该被请求的虚拟化的资源不存在于虚拟范围内(步骤360)。但是,如果系统范围的资源存在,将其识别为候选资源实例(361),并且检测与候选实例相关联的许可数据,确定对该实例的修改是否是被允许的(步骤362)。如果不是,则返回一个错误条件给请求者(步骤364),指示对该虚拟化资源的修改是不被允许的。如果许可数据指示该候选资源可以被修改,则进行对本地资源的候选实例的用户范围的拷贝(步骤370),该用户范围的实例被识别为针对该请求的文字实例(步骤372),并且被打开,并被返回给请求者。
还是参考图3B,并且更详细,确定是否存在用户范围的资源,或者换句话说,在适用的用户范围内或者子范围内是否存在被请求的资源(步骤354)。适用的用户范围或者子范围是与该用户相关联的范围,是在与发出请求的应用相关联的应用隔离范围的上层的。用户隔离范围或者子范围,在文件系统例子中,可以是一个目录,在此目录下,存储着存在于该用户隔离范围内所有的文件。在这些实施例中的一些,在用户隔离目录下的目录树结构反映了被请求资源的路径。例如,如果被请求的文件是c:\temp\test.txt,并且用户隔离范围目录是d:\user1\app1\,则到用户范围的文字文件的路径可以是d:\user1\app1\c\temp\test.txt。在另一个实施例中,到用户范围的文字文件的路径可以被以本地命名惯例定义。例如,到用户范围的文字文件的路径可以是d:\user1\app1\device\harddisk1\temp\test.txt。在另一个实施例中,用户范围的文件可以全部被存储在具有选定的唯一名字的单一目录中,并且数据库可以将请求的文件名和对应的文字文件名之间的映射存储在此目录中。在又一个实施例中,文字文件的内容被存储在数据库中。在还有的另一个实施例中,本地文件系统提供用于使单个文件包括多个独立命名的“流”的设备,并且用户范围的文件的内容作为系统范围内相关文件的附加流存储。可选择地,文字文件可以被存储在客户文件系统中,此系统可以被设计对磁盘使用或者其他关注的标准进行最优化。
如果用户范围的资源实例不存在,则确定应用范围的资源是否存在,或者换句话说,此被请求的资源是否存在于应用隔离范围内(步骤356)。上述此方法被用于作出这个决定。例如,如果被请求的文件是c:\temp\test.txt,并且应用隔离范围目录是e:\app1\,则到应用范围的文件的路径可以是e:\app1\c\temp\test.txt。如上,到应用范围的文件的路径可以按照本地命名惯例存储。上述实施例可以还应用于应用隔离范围。
如果应用范围的资源不存在,则确定系统范围的资源是否存在,或者换句话说,在系统范围内是否存在被请求的资源(步骤358)。例如,如果被请求的文件是c:\temp\test.txt,则到系统范围的文件是路径是c:\temp\test.txt。如果被请求的资源不存在于系统范围内,则关于被请求的资源不存在于虚拟范围内的指示被返回给请求者(步骤360)。
被请求的资源的候选资源实例是否位于应用隔离范围内或是位于系统范围内,确定候选资源实例的修改是否被允许(步骤362)。例如,候选本地资源实例可以与本地许可数据相关联,指示不允许由该用户对候选实例的修改。进一步,规则引擎可以包括配置设置,指示隔离环境遵守或不遵守资源的虚拟化拷贝的本地许可数据。在一些实施例中,规则可以为一些虚拟资源指定在其中可以发生修改的范围,例如系统范围或者应用隔离范围或者子范围,或者用户隔离范围或者子范围。在一些实施例中,规则引擎可以基于被访问资源的层级或者类型,指定应用于虚拟化本地资源的子集合的配置设置。在这些实施例中的一些,配置设置可以对于每一个原子本地资源是专用的。在另一个例子中,规则引擎可以包括禁止或者允许对文件的某些类的修改的配置数据,诸如可执行代码或者MIME类型或者操作系统定义的文件类型。
如果在步骤362中确定对候选资源实例的修改不被允许,则错误条件被返回给请求者,其指示对虚拟资源的写访问不被允许(步骤364)。如果在步骤362中确定对候选资源实例的修改被允许,则候选实例被拷贝到合适的用户隔离范围或者子范围(步骤370)。对于被请求的本地资源的逻辑层级结构被维持在隔离范围内的实施例,将此资源的候选实例复制到用户隔离范围可能需要在层级占位符(hierarchyplaceholder)的用户隔离范围内进行创建。层级占位符是一个节点,被置于层级中,以便在隔离范围内正确地定位被拷贝的资源。层级占位符不存储数据,被标识为一个占位符节点,并且感觉上“不存在”,它不能够是返回给请求者的文字资源。在一些实施例中,对作为占位符节点的节点的识别是通过在与节点、或者节点的父节点、或者在系统层中一些其他相关的实体相连的元数据中记录事实来完成的。在其他实施例中,维护着一个占位符节点名的单独的储存库(repository)。
在一些实施例中,规则可以指定对特定资源的修改可以在特定范围(诸如应用隔离范围)内实现。在那些例子中,在步骤370中的拷贝操作被扩展,以确定对候选资源实例的修改是否允许在其被找到的该范围或者子范围内进行。如果不允许,候选资源实例被拷贝到允许修改的范围或者子范围,其不是总是用户隔离范围,并且新的拷贝被识别为文字的资源实例(步骤372)。如果允许,候选资源实例被识别为文字的实例(步骤372),并且被打开,结果被返回给请求者(步骤306)。
返回来参考图3A,文字的资源实例在步骤354定位或者在步骤370中建立,被打开(步骤306),并且被返回给请求者(步骤310)。在一些实施例中,这通过发出一“打开”指令给操作系统并且将操作系统针对“打开”命令的响应返回给请求者来完成。
如果代表用户执行的应用删除一个本地资源,作为虚拟范围展现给此应用的本地资源的汇总视图必须反映此删除。删除资源的请求是特殊类型的修改请求,虽然是通过完全地移除其存在来修改资源。从概念上说,删除资源的请求与在图3A中略述的相似的方式进行,包括如图3B中略述的对文字的资源的确定。但是,步骤306对隔离的资源和重定向的或者忽略的资源的操作是不同的。对于重定向或者忽略,文字的资源被从系统范围删除。对于隔离,文字的资源是“虚拟地”被删除,或者换句话说已经被删除的事实是被记录在用户隔离范围内的。一个被删除的节点不包含数据,被识别为被删除的,它和它的所有后代(descendant)是“不存在”的。换句话说,如果资源或者资源的祖先(ancestor)将以别的方式满足资源的请求,“资源没有被找到”的错误被返回给请求者。进一步的细节将在节4中进行略述。在一些实施例中,将节点标识为一个被删除的节点,是通过在与节点、或者父节点或者在系统层中一些其他相关的实体连接的元数据中记录事实来完成的。在其他实施例中,维护着一个被删除的节点名的单独的存储库,例如,在单独的子范围内。
3.0安装到隔离环境中
上述的应用隔离范围能够被视为这样的范围,在其中关联的应用实例独立于任意用户或者等同地代表所有可能的用户地分享资源,包括那些应用实例创建的资源。这些资源的主类是当应用被安装到操作系统上时创建的集合。如图1A中所示,两个不兼容的应用不能够被安装在相同系统范围中,但是这个问题能够通过将那些应用中的至少一个安装到隔离环境中来解决。
隔离范围或者与隔离范围相关联的应用实例,能够在“安装模式”中进行操作,来支持应用的安装。这对比于下文结合图4-16描述的“执行模式”。在安装模式中,应用安装程序与应用隔离范围相关联,并且被假定为代表所有用户来执行。对于此应用实例,应用隔离范围的操作仿佛它是针对“所有用户”的用户隔离范围,并且对于此应用实例没有用户隔离范围是激活的。
图3C描述了在安装模式中,当接收到打开本地资源的请求时,识别文字资源的实施例步骤,该请求指示所述资源以可以被更改的方式打开。简要地,因为没有用户隔离范围是激活的,首先确定被请求的本地资源的应用范围的实例是否存在(步骤374)。如果存在应用范围的实例,其被识别为文字的资源实例(步骤384)。如果不存在应用范围的实例,确定被请求的本地资源的系统范围的实例是否存在(步骤376)。如果其不存在,将错误条件返回给请求者,指示被请求的虚拟化资源不存在于虚拟范围内(步骤377)。但是,如果系统范围的资源存在,其被识别为候选资源实例(步骤378),并且检测与候选实例相关联的许可数据来确定对该实例的修改是否被允许(步骤380)。如果不被允许,则返回给请求者一个错误条件(步骤381),指示对虚拟化资源的修改不被允许。如果许可数据指示候选资源可以被修改,因为没有用户范围是激活的,生成本地资源的候选实例的应用范围的拷贝(步骤382),并且该应用范围的实例被识别为针对请求的文字的实例(步骤384)。在一些实施例中,候选文件被拷贝到由规则引擎定义的位置。例如,规则可以指定文件被拷贝到应用隔离范围。在其他实施例中,规则可以指定文件将被拷贝到的特定的应用隔离子范围或者用户隔离子范围。不出现在文件被拷贝到的隔离范围中的、被请求文件的任意祖先在隔离范围内被创建为占位符,旨在在层级中正确定位被拷贝的实例。
图3D显示一个实施例,在安装模式中当创建本地资源的请求被接收到时,识别文字的资源所采用的步骤。简要地,因为没有用户隔离范围是激活的,首先确定被请求的本地资源的应用范围实例是否存在(步骤390)。如果应用范围实例存在,错误条件可以被返回给请求者,指示此资源不能够被创建,因为它已经存在(步骤392)。如果不存在应用范围实例,确定被请求的本地资源的系统范围实例是否存在(步骤394)。如果系统范围实例存在,错误条件可以被返回给请求者,指示此资源不能够被创建,因为它已经存在(步骤392)。在一些实施例中,用于打开此资源的请求可以指定此资源的任意现存的系统范围的实例可以被重写。如果系统范围的实例不存在,应用范围资源实例可以被识别为将被创建来完成此请求的文字的实例(步骤396)。
通过将图3B和图3C,3D进行比较,能够看出,安装模式以与执行模式类似的方式进行操作,应用隔离范围代替用户隔离范围。换句话说,对持久资源的修改,包括新资源的创建,发生在合适的应用隔离范围内,而不是合适的用户隔离范围内。进而,对存在的隔离资源的访问的虚拟化也忽略合适的用户隔离范围,并且开始在应用隔离范围内寻找候选文字的资源。
还存在另外两种例子,其中以此方式操作的应用隔离范围,包括对存在的资源进行修改和新资源的创建。首先,可以存在配置用于不需要用户隔离层而进行操作的隔离环境,或者配置用于不需要用户隔离范围而进行操作的虚拟范围。在这种情况下,应用隔离范围是能够隔离被修改的和新创建的资源的唯一隔离范围。其次,控制虚拟资源的特别集合的规则可以指定它们将被隔离到合适的应用隔离范围内,而不是合适的用户隔离范围内。再次,这意味着服从该规则的,对资源的修改和创建将被隔离到合适的应用隔离范围内,其中它们对所有共享该范围的应用实例是可见的,而不是在用户隔离范围内(其中它们仅仅对执行那些应用实例的用户是可见的)。
在另一些其他实施例中,隔离环境可以被配置来允许某种资源在系统范围内被共享,也就是,隔离环境可以针对一个或者多个系统资源产生仿佛不存在用户隔离范围和应用隔离范围的效果。在系统范围内共享的系统资源在意图对其进行修改的访问时,从来不被拷贝,因为它们被所有的应用和所有的用户所共享,也就是它们是全局的对象。
4.0详细的虚拟化例子
上述的方法和工具可以被用于很多种的本地资源108的虚拟化。这些资源中的一些在下文中详细描述。
4.1文件系统虚拟化
上述的方法和工具可以被用于虚拟化对文件系统的访问。如上所述,文件系统通常以目录的逻辑层级进行组织,该层级是它们自身的文件,也可以包括其他目录和数据文件。
4.1.1文件系统打开操作
在简要的概览中,图4描述了在上述虚拟化环境中打开一个文件所需采用的步骤的一个实施例。打开文件的一个请求被接收或者截取(步骤402)。此请求包括一个文件名,其被此隔离环境处理为虚拟文件名。适用于文件系统打开请求的目标的处理规则被确定(步骤404)。如果规则动作为“重定向”(步骤406),提供在此请求中的虚拟文件名被依照该适用的规则映射为文字的文件名(步骤408)。使用文字的文件名打开文字的文件的请求被传送给操作系统,来自操作系统的结果被返回给请求者(步骤410)。如果规则动作是“忽略”(步骤406),则文字的文件名被确定为和虚拟文件名完全一样(步骤412),并且打开文字的文件的请求被传送给操作系统,来自操作系统的结果被返回给请求者(步骤410)。如果在步骤406中,规则动作为“隔离”,则在用户隔离范围内对应于虚拟文件名的文件名被识别为候选文件名(步骤414)。换句话说,候选文件名是通过映射形成的,此映射将虚拟文件名映射为该适用的用户隔离范围内专有的对应的本地文件名。候选文件所存在性的范畴由检测用户隔离范围和与候选文件相关联的任意元数据而确定(步骤416)。如果候选文件被确定为具有“负面的存在性”,因为候选文件或者其在用户隔离范围内的祖先目录之一被标记为已删除,这意味着被请求的虚拟文件已知是不存在的。在这种情况下,指示没有找到被请求文件的错误条件被返回给请求者(步骤422)。如果在步骤416中,候选文件反而被确定具有“肯定的存在性”,因为候选文件存在于用户隔离范围内并且没有被标记为占位符节点,此时,被请求的虚拟文件被已知是存在的。候选文件被识别为此请求的文字的文件(步骤418),并且发出打开此文字的文件的请求,结果返回给请求者(步骤420)。但是,如果在步骤416中,候选文件具有“中性的存在性”,因为候选文件不存在,或者候选文件存在但是被标记为占位符节点,仍不能知晓虚拟文件是否存在。在这种情况下,对应于虚拟文件名的应用范围的文件名被识别为候选文件名(步骤424)。换句话说,候选文件名通过将虚拟文件名映射为适用的应用隔离范围的专有的对应的本地文件名而形成。候选文件存在性的范畴通过检测应用隔离范围和与候选文件相关联的任意元数据而进行确定(步骤426)。如果候选文件被确定为具有“负面的存在性”,因为候选文件或者其在应用隔离范围内的祖先目录之一被标记为已删除,这意味着被请求的虚拟文件已知是不存在的。在这种情况下,指示没有找到被请求文件的错误条件被返回给请求者(步骤422)。如果在步骤426中,该候选文件被确定具有“肯定的存在性”,因为候选文件存在于应用隔离范围内并且没有被标记为占位符节点,此时,被请求的虚拟文件被已知是存在的。检测请求来确定打开请求是否指示对文件进行修改的意图(步骤428)。如果不是,候选文件被识别为针对此请求的文字的文件(步骤418),并且发出打开此文字的文件的请求,结果返回给请求者(步骤420)。但是,如果在步骤428中,确定打开请求指示对文件进行修改的意图,与文件相关联的许可数据被进行检测来确定对此文件的修改是否被允许(步骤436)。如果不允许被修改,指示对此文件的修改不被允许的错误条件被返回给请求者(步骤438)。如果许可数据指示此文件可以被修改,候选文件被拷贝至用户隔离范围(步骤440)。在一些实施例中,候选文件被拷贝至由规则引擎定义的位置。例如,规则可以指定文件被拷贝至应用隔离范围。在其他实施例中,规则可以指定将文件拷贝至的特定的应用隔离子范围或者用户隔离子范围。不出现在文件被拷贝至的隔离范围内的、被请求文件的任意祖先,被创建为隔离范围内的占位符,旨在正确地在层级中定位被拷贝实例。范围内的实例被识别为文字的文件(步骤442),并且发出一个请求来打开该文字的文件,返回结果给请求者(步骤420)。返回到步骤426,如果候选文件的存在性是中性的,因为候选文件不存在,或者因为候选文件被找到但是标记为占位符节点,仍不知道该虚拟文件是否存在。在这种情况下,对应于虚拟文件名的系统范围的文件名被识别为候选文件名(步骤430)。换句话说,候选文件名完全就是虚拟文件名。如果候选文件不存在(步骤432),指示虚拟文件未被找到的错误条件返回给请求者(步骤434)。如果在另一个方面,候选文件存在(步骤432),检测请求来确定打开请求是否指示对文件进行修改的意图(步骤428)。如果不是,候选文件被识别为针对请求的文字的文件(步骤418),发出打开文字的文件的请求,并且返回结果给请求者(步骤420)。但是,如果在步骤428中,确定打开请求指示了修改文件的意图,则检测与此文件相关联的许可数据,来确定是否允许对此文件的修改(步骤436)。如果不被允许,一个错误条件返回给请求者(步骤438),指示对文件的修改不被允许。如果许可数据指示此文件可以被修改,候选文件被拷贝至用户隔离范围(步骤440)。在一些实施例中,候选文件被拷贝至由规则引擎定义的位置。例如,规则可以指定文件被拷贝至应用隔离范围。在其他的实施例中,规则可以指定文件将被拷贝至的特定的应用隔离子范围或者用户隔离子范围。不在该隔离范围内出现的被请求文件的任意祖先被创建为在隔离范围内的占位符,旨在在层级中正确地定位所拷贝的实例。范围的实例被识别为文字的文件(步骤442),并且发出打开文字的文件的请求,并且返回结果给请求者(步骤420)。
此实施例能够被微小的改动来完成对文件存在性的检测,而不是打开文件。在步骤420中打开文字的文件的试图被置换为对此文字的文件的存在性的检测,并且返回此状态给请求者。
还是参考图4,并且现在更加细致,打开虚拟文件的请求被接收或者截取(步骤402)。对应的文字的文件可以是在用户隔离范围,应用隔离范围或者系统范围,或它可以被限定范围为应用隔离子范围或者用户隔离子范围。在一些实施例中,请求被替代操作系统的功能或者用于打开文件的函数所钩取。在另一个实施例中,钩取动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数在用户模式中执行的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数执行在核模式中的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的调度(dispatch)请求中。对于对每一个文件操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个文件操作类型的创建或者打开的调用。
此请求包括一个文件名,此文件名由隔离环境处理为虚拟文件名。适用于文件系统打开请求的处理规则通过参考规则引擎为被确定(步骤404)。在有些实施例中,适用于打开请求的处理规则通过使用包括在打开请求中的虚拟文件名来确定。在有些实施例中规则引擎被提供作为关系数据库。在其他实施例中,规则引擎可以是树结构数据库,hash表,或者平坦文件数据库。在有些实施例中,提供给被请求文件的虚拟文件名被作为规则引擎中的一个索引来使用,来定位应用于此请求的一个或者多个规则。在这些实施例中的特别的一些中,用于特别文件的规则引擎中可以存在多个规则,在这些实施例中,具有与虚拟文件名相匹配的最长前缀的规则,是被应用于此请求的规则。在其他实施例中,进程标识符被用于在规则引擎中定位应用于此请求的规则,如果存在的话。与请求相关联的规则可以是忽略该请求,重定向该请求,或隔离该请求。尽管显示在图4中作为单一的数据库事务或者在文件中的单个查找,规则查找可以被执行为一系列的规则查找。
如果规则动作是“重定向”(步骤406),在请求中提供的虚拟文件名依照适用的规则,被映射为文字的文件名(步骤408)。打开通过文字的文件名识别的文字的文件的请求被传递给操作系统,并且来自操作系统的结果被返回给请求者(步骤410)。例如,打开命名为“file_1”的文件的请求可以导致对命名为“Different_file_1”的文字的文件的打开。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。对于使用文件系统过滤器驱动器的实施例,使用虚拟名打开文件的第一个请求导致从文件系统过滤器驱动器返回STATUS_REPARSE响应,指示所确定的文字的名字。I/O管理器此时再次发出具有被确定的文字的名字(包括在STATUS_REPARSE响应中)的文件打开请求。
如果规则动作反而为“忽略”(步骤406),则文字的文件名被确定为和虚拟文件名完全相同(步骤412),并且打开文字的文件的请求被传送给操作系统,并且来自操作系统的结果返回给请求者(步骤410)。例如,打开名为“file_1”的文件的请求将导致对名为“file_1”的实际文件的打开。在一个实施例中,这是通过调用被钩取函数的原始版本并且将形成的文字的名字传递给此函数作为一个自变量的方式来完成。
如果在步骤406中,规则动作是“隔离”,则对应于虚拟文件名的用户范围的文件名被识别为候选文件名(步骤414)。换句话说,通过将虚拟文件名映射为适用的用户隔离范围专有的对应本地文件名,来形成候选文件名。例如,打开名为“file_1”的文件的请求将导致对名为“Isolated_file_1”实际文件的打开。在一个实施例中,这是通过调用被钩取函数的原始版本并且将形成的文字的名字作为一个自变量传递给此函数的方式来完成。对于使用文件系统过滤器驱动器的实施例,使用虚拟名打开文件的第一个请求,导致从文件系统过滤器驱动器返回STATUS_REPARSE响应,指示被确定的文字的名字。I/O管理器此时再次发出具有被确定的文字的名字(包括在REPARSE响应中)的文件打开请求。
在有些实施例中,形成的旨在隔离被请求的系统文件的文字的名,可以基于接收到的虚拟文件名和范围专用的标识符。范围专用的标识符可以是与应用隔离范围,用户隔离范围,会话隔离范围和应用隔离子范围,用户隔离子范围,或者上述的一些组合相关联的。范围专用的标识符被用于“损坏(mangle)”在请求中接收到的虚拟名。
在其他实施例中,用户隔离范围或者子范围可以是一个目录,在其下存储了存在于该用户隔离范围内的所有文件。在这些实施例中的一些,在用户隔离目录下的目录树结构反映了被请求的资源的路径。换句话说,通过将虚拟文件路径映射到用户隔离范围,形成文字的文件路径。例如,如果被请求的文件是c:\temp\test.txt,并且用户隔离范围目录是d:\user1\app1\,则到用户范围的文字的文件的路径可以是d:\user1\app1\c\temp\test.txt。在其他的实施例中,到用户范围的文字的路径可以以本地命名惯例被定义。例如,到用户范围的文字的文件的路径可以是d:\user1\app1\device\harddisk1\temp\test.txt。在另一些实施例中,用户范围的文件可以被全部存储在具有被选择的唯一名字的单个目录中,并且数据库可以被用于存储在被请求的文件名和对应的存储在目录中的文字的文件的名字之间的映射。在另一些实施例中,文字的文件的内容可以被存储在数据库中。在另一些实施例中,本地文件系统为单个文件提供包括多个独立命名的“流”所用设备,和用户范围的文件的内容被作为在系统范围内相关联的文件的附加流而被存储。或者,文字的文件可以被存储在客户文件系统中,客户文件系统可以被设计来对磁盘用途或者其他感兴趣的标准进行最优化。
通过检测用户隔离范围和与候选文件相关联的任意元数据来确定候选文件存在性的范畴(步骤416)。如果候选文件被确定为具有“负面的存在性”,因为候选文件或者其在用户隔离范围内的祖先目录之一被标记为已删除,这意味着被请求的虚拟文件已知不存在。在这种情况下,指示被请求文件没有被找到的错误条件被返回给请求者(步骤422)。
在有些实施例中,关于文件的少量的元数据可以被直接存储在文字的文件名中,诸如通过给虚拟名添加元数据指示器(indicator)的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过对由于元数据指示器的存在造成的文字的文件名的可能变种的检测来访问文件的请求,和获取文件自身的名字的请求,被钩取或者截取,旨在对该文字的名字作出响应。在其他实施例中,文件的一个或者多个可更换的名字可以从虚拟文件名和元数据指示器形成,并且可以使用由文件系统提供的硬连接或者软连接工具而被创建。这些连接的存在可以由隔离环境从应用隐藏,通过在如果一个请求使用连接名字访问文件时,指示此文件未被找到。一个特定的连接的存在或者不存在可以指示每一个元数据指示器的元数据的一位,或者可以存在具有可以呈现多个状态来指示元数据的多个位的元数据指示器的连接。在其中文件系统支持可替换的文件流的一些实施例中,一个可替换的文件流可以被创建以体现元数据,其具有指示元数据多个位的流的大小。在还有的一些实施例中,文件系统可以直接提供为每一个文件在文件系统中存储第三方元数据的能力。
在这些实施例中的特定的一些中,被删除文件或者文件系统元素的列表可以被维护,并且被参考来对已删除文件检测进行优化。在这些实施例中,如果被删除的文件被重新创建,则文件名可以被从被删除文件的列表中删除。在这些实施例中的其他中,如果此列表增长地超出某个大小时,文件名可以被从此列表中删除。
如果在步骤416中,候选文件被确定为具有“正面的存在性”,因为候选文件存在于用户隔离范围,并且没有被标记为占位符节点,则被请求的虚拟文件已知是存在的。候选文件被识别为针对此请求的文字的文件(步骤418),并且发出打开此文字的文件的请求,并且返回结果给请求者(步骤420)。
但是,如果在步骤416中,候选文件具有“中性的存在性”,因为候选文件不存在,或者因为候选文件存在但是标记为占位符节点,仍不知道虚拟文件是否存在。在这种情况下,对应于虚拟文件名的应用范围的文件名被识别为候选文件名(步骤424)。换句话说,候选文件名通过将虚拟文件名映射为适用的应用隔离范围专有的对应的本地文件名而被形成。通过检测应用隔离范围和与候选文件相关联的任意元数据,来确定候选文件存在性的范畴(步骤426)。
如果应用范围的候选文件被确定为具有“负面的存在性”,因为候选文件或者其在应用隔离范围内的祖先目录中的一个被标记为已删除,这意味着被请求的虚拟文件已知不存在。在这种情况下,指示被请求文件没有被找到的错误条件被返回给请求者(步骤422)。
如果在步骤426中,候选文件被确定为具有“正面的存在性”,因为候选文件存在于应用隔离范围,并且没有被标记为占位符节点,则被请求的虚拟文件被已知为是存在的。此请求被进行检测来确定是否此打开请求指示对此文件进行修改的意图(步骤428)。如果不是,则候选文件被识别为针对此请求的文字的文件(步骤418),并且发出打开此文字的文件的请求,并且返回结果给请求者(步骤420)。
但是,如果在步骤428中,确定此打开请求指示修改文件的意图,则检测与此文件相关联的许可数据,来确定对此文件的修改是否被允许(步骤436)。在有些实施例中,许可数据是与应用范围的候选文件相关联的。在这些实施例中的一些中,许可数据被存储在规则引擎或者与此候选文件相关联的元数据中。在其他的实施例中,与候选文件相关联的许可数据由操作系统提供。进一步,规则引擎可以包括指导隔离环境的配置设置,此配置设置指导隔离环境遵守或者不遵守资源的虚拟化拷贝的本地许可数据。在有些实施例中,规则可以为有些虚拟资源指定在其中可以发生修改的范围,例如,系统范围或者应用隔离范围或者子范围,或者用户隔离范围或者子范围。在有些实施例中,规则引擎可以指定应用于虚拟化本地资源的子集合的配置设置,此配置设置基于被访问资源的层级或者类型。在这些实施例中的一些中,配置设置可以被指定给每一个原子的本地资源。在另一个例子中,规则引擎可以包括配置数据来禁止或者允许对文件的某些类的修改,诸如可执行代码或者MIME类型或者由操作系统定义的文件类型。
如果与候选文件相关联的许可数据指示将不能被修改,指示文件的修改不被允许的错误条件被返回给请求者(步骤438)。如果许可数据指示此文件可以被修改,候选文件被拷贝至用户隔离范围(步骤440)。在有些实施例中,候选文件被拷贝至由规则引擎定义的位置。例如,规则可以指定此文件被拷贝至另一个应用隔离范围。在其他实施例中,规则可以指定文件将被拷贝至的,特定的应用隔离子范围或者用户隔离子范围。在文件被拷贝至的隔离范围内不出现的被请求文件的所有祖先,在该隔离范围内被创建为占位符,旨在在层级中正确地定位被拷贝的实例。
在有些实施例中,元数据与拷贝到隔离范围的文件相关联,指示文件被拷贝的日期和时间。此信息可以被用来将与被拷贝的文件实例相关联的时间戳与文件的原始实例或者位于更低层的隔离范围内的另一个文件实例的最后修改的时间戳,进行比较。在这些实施例中,如果文件的原始实例或者位于更低层的隔离范围内文件的实例,与晚于被拷贝文件的时间戳的时间戳相关联,此文件可以被拷贝至隔离范围对候选文件进行更新。在另一个实施例中,在隔离范围内的文件的拷贝可以与识别包括被拷贝的原始文件的范围的元数据相关联。
在进一步的实施例中,因为以对它们进行修改的意图打开而被拷贝至隔离范围的文件,可以被监测来确定它们是否确实被修改。在一个实施例中,被拷贝的文件与一个标志相关联,此标志当文件被实际修改时被设置。在这些实施例中,如果被拷贝的文件实际上没有被修改,它可以在被关闭后被从其被拷贝至的范围删除,以及与此被拷贝的文件相关联的所有占位符节点也被删除。
范围内的实例被识别为文字的文件(步骤442)并且发出打开文字的文件的请求,返回结果给请求者(步骤420)。
回到步骤426,如果候选文件具有中性的存在性,因为候选文件不存在,或者因为候选文件存在但是标记为占位符节点,仍不知道虚拟文件是否存在。在这种情况下,对应于虚拟文件名的系统范围的文件名被识别为候选文件名(步骤430)。换句话说,候选文件名与虚拟文件名完全相同。
如果候选文件不存在(步骤432),指示虚拟文件未被找到的错误条件被返回给请求者(步骤434)。如果在另一个方面,候选文件存在(步骤432),检测请求来确定打开请求是否指示对文件进行修改的意图(步骤428)。
如上所述,如果候选文件被不以修改为意图打开,系统范围的候选文件被识别为针对此请求的文字的文件(步骤418),并且发出打开文字的文件的请求,并且返回结果给请求者(步骤420)。但是,如果在步骤428中,确定打开请求是以修改此文件为意图的,与此文件相关联的许可数据被进行检查来确定对此文件的修改是否被允许(步骤436)。在有些实施例中,许可数据是与系统范围的候选文件相关联的。在这些实施例中的一些中,许可数据被存储在规则引擎或者与此候选文件相关联的元数据中。在其他的实施例中,与候选文件相关联的许可数据由操作系统提供。
如果与系统范围的候选文件相关联的许可数据指示此文件不能被修改,指示对文件的修改不被允许的错误条件被返回给请求者(步骤438)。但是,如果许可数据指示此文件可以被修改,候选文件被拷贝至用户隔离范围(步骤440)。在一些实施例中,候选文件被拷贝至由规则引擎定义的位置。例如,规则可以指定文件被拷贝至应用隔离范围或者可以被留在系统范围中。在其他的实施例中,规则可以指定文件将被拷贝至的特定的应用隔离子范围或者用户隔离子范围。不在该隔离范围内出现的被请求文件的任意祖先被创建为在隔离范围内的占位符,旨在在层级中正确地定位所拷贝的实例。
在有些实施例中,与拷贝到隔离范围的文件相关联的元数据,标识文件被拷贝的日期和时间。这个信息可以被用于将与文件的被拷贝实例相关联的时间戳与文件原始实例的最后一次修改的时间戳相比较。在这些实施例中,如果文件的原始实例的时间戳较被拷贝的文件的时间戳晚,则可以将原始的文件拷贝至隔离范围以更新候选文件。在其他的实施例中,被拷贝至隔离范围的候选文件可以与标识原始的文件被拷贝来自的范围的元数据相关联。
在进一步的实施例中,因为以对它们进行修改的意图打开而被拷贝至隔离范围的文件,可以被监测来确定它们是否确实被修改。在一个实施例中,被拷贝的文件与一个标志相关联,此标志当文件被实际修改时被设置。在这些实施例中,如果被拷贝的文件实际上没有被修改,它可以在被关闭后被从其被拷贝至的范围删除,以及与此被拷贝的文件相关联的所有占位符节点也被删除。在另一些实施例中,文件只有当被实际修改时,才拷贝到合适的隔离范围。
此范围内的实例被识别为文字的文件(步骤442),并且发出打开文字的文件的请求,返回结果给请求者(步骤420)。
4.1.2文件系统删除操作
现在参考图5,并且在简要的概览中,描述了删除文件所采用的步骤的一个实施例。删除文件的一个请求被接收或者截取(步骤502)。此请求包括一个文件名,其被此隔离环境处理为虚拟文件名。规则确定如何处理此文件操作(步骤504)。如果规则动作为“重定向”(步骤506),依照此规则直接将此虚拟文件名映射为文字的文件名(步骤508)。删除文字的文件的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤510)。如果规则动作为“忽略”(步骤506),则文字的文件名被识别为和虚拟文件名完全一样(步骤513),并且删除文字的文件的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤510)。如果规则动作为“隔离”(步骤506),则虚拟文件的存在性被确认(步骤514)。如果虚拟文件不存在,指示虚拟文件不存在的错误条件被返回给请求者(步骤516)。如果虚拟文件存在,并且如果此虚拟化的文件指定一个目录而不是一个普通的文件,则参考此虚拟目录来确定其是否包含任意虚拟文件或者虚拟孩子(步骤518)。如果被请求的虚拟化的文件是包含任意虚拟文件或者虚拟孩子的虚拟目录,此虚拟目录不能够被删除,并且错误消息被返回(步骤520)。如果被请求的虚拟化的文件是一个普通文件或者是一个没有包含虚拟文件和虚拟孩子的虚拟目录,则对应此虚拟文件的文字的文件被识别(步骤522)。检测与此文件相关联的许可数据来确定删除是否被允许(步骤524)。如果不被允许,则返回许可错误消息(步骤526)。但是,如果文件的删除是被允许的,并且如果虚拟文件是在合适的用户隔离范围内(步骤528),此虚拟文件被删除(步骤534),并且在该合适的用户隔离范围内,创建象征被删除的虚拟文件的一个“已删除”节点(步骤536)。但是,如果在步骤528,确定了此文字的文件不在用户隔离范围内,但是其在合适的应用隔离范围内或者系统范围内,此时,并非已经存在的被请求文件的用户范围内实例的每一个用户范围内祖先的实例被创建,并且被标记为占位符(步骤532)。这被完成来维持在用户隔离范围内目录结构的逻辑层级。象征已被删除文件的用户范围内的“已删除”节点此时被创建在合适的用户隔离范围内(步骤536)。
还是参考图5,并且现在更加细致,删除文件的请求被接收或者截取(步骤502)。此文件可以是在用户隔离范围,应用隔离范围或者系统范围,或一些适用的隔离范围内。在一些实施例中,该请求被替代操作系统的功能或者用于删除文件功能的函数所钩取。在另一个实施例中,用于钩取的动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中执行。对于那些钩取函数(hooking function)在用户模式中执行的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数在核模式中执行的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的请求的调度中。对于对每一个文件类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型文件的创建或者打开的调用。
此请求包括一个文件名,此文件名由隔离环境处理为虚拟文件名。适用于删除操作的处理规则通过参考规则引擎而被确定(步骤504)。在有些实施例中,提供给被请求文件的虚拟文件名被用于在规则引擎中对应用于此请求的规则进行定位。在这些实施例中的特别的一些中,多个规则可以存在于用于特定文件的规则引擎中,并且,在这些实施例中,具有与虚拟文件名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中,规则引擎可以被提供为关系数据库。在其他的实施例中,规则引擎可以是树状结构的数据库,hash表,或者平坦文件数据库。在有些实施例中,提供在此请求中的虚拟文件名被作为在规则引擎中的索引,来对应用于此请求的一个或者多个规则进行定位。在其他实施例中,进程标识符被用于在规则引擎中定位应用于此请求的规则(如果存在一个规则的话)。与请求相关联的规则可以忽略此请求,重定向此请求,或者隔离此请求。尽管在图5中显示为一系列的判定,规则的查询可以作为单独的数据库事务而发生。
如果规则动作是“重定向”(步骤506),虚拟文件名依照适用的规则,被直接映射为文字的文件名(步骤508)。删除此文字的文件的请求被传递给操作系统,并且来自操作系统的结果被返回给请求者(步骤510)。例如,删除名为“file_1”的文件的请求可以导致对名为“Different_file_1”的实际文件的删除。在一个实施例中,这通过调用被勾取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。对使用文件系统过滤器驱动器的实施例,使用虚拟名删除文件的第一个请求,导致从文件系统过滤器驱动器返回STATUS_REPARSE响应,指示被确定的文字的名字。I/O管理器此时再次发出具有被确定的文字的名字(包括在STATUS_REPARSE响应中)的文件删除请求。
在有些实施例中,与文字的文件“Different_file_1”相关联的操作系统的许可可能阻止对此文字的文件的删除。在这些实施例中,错误消息被返回,此文件不能够被删除。
如果规则动作为“忽略”(步骤506),则文字的文件名被确定为和虚拟文件名完全相同(步骤513),并且删除文字的文件的请求被传送给操作系统,并且来自操作系统的结果返回给请求者(步骤510)。例如,删除名为“file_1”的文件的请求将导致对名为“file_1”实际文件的删除。在一个实施例中,这是通过调用被钩取函数的原始版本并且将形成的文字的名字作为一个自变量传递给此函数的方式来完成。对使用文件系统过滤器驱动器的实施例,使用虚拟名删除文件的第一个请求,导致从文件系统过滤器驱动器返回STATUS_REPARSE响应,指示文字的名字。I/O管理器此时再次发出具有被确定的文字的名字(包括在STATUS_REPARSE响应中的)的文件删除请求。
在有些实施例中,与文字的文件“file_1”相关联的操作系统许可可能阻止对该文字的文件的删除。在这些实施例中,错误消息被返回,此文件不能够被删除。
如果规则动作是“隔离”(步骤506),则此虚拟文件的存在性被确定(步骤514)。如果此文件不存在,一个指示此文件未被找到的错误被返回(步骤516)。
但是,如果在步骤518中,确定此文件存在,并且不是一个普通文件且不是一个空的虚拟目录,也就是说,它包括虚拟文件或者虚拟孩子,一个指示此文件不能够被删除的错误消息被返回(步骤520)。
但是,如果此文件被确定为存在并且此请求的虚拟化的文件是普通文件或者是一个空的虚拟目录,也就是说,它不包括虚拟文件且不包括虚拟子目录(步骤518),此时对应于此虚拟文件的文字的文件被识别(步骤522)。从由隔离规则指定的虚拟文件名确定文字的文件名。例如,删除名为“file_1”的文件的请求可以导致对名为“Isolated_file_1”实际文件的删除。在一个实施例中,这是通过调用被钩取函数的原始版本并且将形成的文字的名字作为一个自变量传递给此函数的方式来完成。对于使用文件系统过滤器驱动器的实施例,使用虚拟名删除文件的第一个请求,导致从文件系统过滤器驱动器返回STATUS_REPARSE响应,指示被确定的文字的名字。I/O管理器此时再次发出具有包括在STATUS_REPARSE响应中的被确定的文字的名字的文件删除请求。
一旦对应虚拟文件的文字的文件被识别,确定该文字的文件是否可以被删除(步骤524)。如果文件不可以被删除,一个指示此文件不能够被删除的错误被返回(步骤524)。在有些实施例中,许可数据是与系统范围内的候选文件相关联的。在这些实施例中的一些中,此许可数据被存储在规则引擎中或者与此候选文件相关联的元数据中。在其他的实施例中,与候选文件相关联的许可数据由操作系统提供。
但是,如果文件的删除是被允许的,并且如果文字的文件在合适的用户隔离范围内(步骤528),该文字的文件被删除(步骤534),并且象征该被删除的虚拟文件的“已删除”节点被创建在合适的用户隔离范围内(步骤536)。
但是,如果在步骤528中,确定了此文字的文件不在用户隔离范围内,但是在合适的应用隔离范围、或者系统范围内,并非已经存在的该被请求文件的用户范围内实例的、每一个用户范围内祖先的实例被创建,并且被标记为占位符(步骤532)。这被完成来维持在用户隔离范围内目录结构的逻辑层级。一个用户范围内的象征已被删除文件的“已删除”节点此时被创建在合适的用户隔离范围内(步骤536)。在有些实施例中,被删除的文件的身份被存储在文件或者其他高速缓冲存储器中,以便对已删除的文件的检查进行最优化处理。
在有些实施例中,被定位的虚拟化的文件可以与指示此虚拟化的文件已经被删除的元数据相关联。在有些其他的实施例中,虚拟化的文件的祖先(例如,包括此文件的更高级的目录)与指示其被删除的元数据相关联。在这些实施例中,可以返回指示该虚拟化的文件不存在的错误消息。在这些实施例中的特别的一些中,被删除文件或者文件系统元素的列表可以被维持,并且被参考以优化对删除的文件的检查。
4.1.3文件系统枚举操作
现在参考图6,并且在简要的概览中,描述了在所述虚拟化的环境中,枚举一个目录采用的步骤的一个实施例。一个枚举的请求被接收或者截取(步骤602)。此请求包括一个目录名,其由此隔离环境处理为虚拟目录名。从概念上说,虚拟目录的存在性是由在节4.1.1中所述的那样来确定(步骤603)。如果虚拟目录不存在,指示此虚拟目录未被找到的结果被返回给请求者(步骤620)。如果此虚拟目录存在,则规则引擎被参考来确定用于枚举请求中指定的目录的规则(步骤604)。如果规则动作为“重定向”(步骤606),对应于虚拟目录名的文字的目录名被按照此规则指定的确定(步骤608),并且由文字的名字识别的文字的目录被进行枚举,而且枚举结果存储在工作数据存储中(步骤612),接着有如随后所述的步骤630。如果被指定的规则动作不是“重定向”而是“忽略”(步骤610),文字的目录名和虚拟目录名完全一样(步骤613),并且此文字的目录被枚举,枚举结果存储在工作数据存储中(步骤612),接着有如随后所述的步骤630。但是,如果规则动作指定为“隔离”,首先,系统范围被进行枚举,也就是说,候选目录名和虚拟目录名完全一样,并且,如果候选目录存在,其被枚举。枚举结果被存储在工作数据存储中。如果候选目录不存在,在此阶段,工作数据存储保持为空(步骤614)。接着候选目录被识别为虚拟目录的应用范围内的目录,候选目录存在性的范畴被确定(步骤615)。如果候选目录具有“负面的存在性”,也就是,此范围中其或者其祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤642)。如果作为更换,候选目录不具有负面的存在性,候选目录被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于该枚举中的每一个文件系统元素,其存在性的范畴被确定。具有负面的存在性的元素被从工作数据存储中删除,具有正面的存在性的元素,也就是说,那些存在并且没有被标记为占位符和没有被标记为已删除的元素,被加入到工作数据存储中,替代工作数据存储中的对应元素(如果已经存在)(步骤616)。
在两个情况中的每一个中,候选目录被识别为虚拟目录的用户范围内的实例,并且候选目录的存在性的范畴被确定(步骤617)。如果候选目录具有负面的存在性,也就是说,其或者此范围中的其祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤644)。如果作为更换,候选目录不具有负面的存在性,则候选目录被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于该枚举中的每一个文件系统元素,其存在性的范畴被确定。具有负面的存在性的元素被从工作数据存储中删除,具有正面的存在性的元素,也就是说,那些存在并且没有被标记为占位符和没有被标记为已删除的元素,被加入到工作数据存储中,替代工作数据存储中的对应元素(如果已经存在)(步骤618),接着有如随后所述的步骤630。
随后,对于规则的所有三种类型,执行步骤630。规则引擎被查询以寻找,其过滤器与被请求目录的直接孩子相匹配但是不与被请求目录自身相匹配的规则集合(步骤630)。对于集合中的每一个规则,其名字与规则中名字相匹配的虚拟孩子的存在性被使用在节4.1.1中略述的逻辑进行查询。如果该孩子具有正面的存在性,其被加入到工作数据存储中,替代那里已经存在的相同名字的任意孩子。如果该孩子具有负面的存在性,则在工作数据存储中与该孩子相对应的条目(如果存在的话)被删除(步骤632)。最后,构建的枚举此时被从工作数据存储返回给请求者(步骤620)。
还是参考图6,并且现在更加细致,枚举目录的请求被接收或者截取(步骤602)。在有些实施例中,此请求被替代操作系统的功能或者用于枚举目录功能的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数在用户模式中执行的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数在核模式中执行的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的请求的调度中。对于对每一个文件操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型文件的创建或者打开的调用。
虚拟目录的存在性被确定(步骤603)。这个如在节4.1.1中描述的那样完成。如果虚拟目录不存在,它不能够被枚举,并且指示虚拟目录不存在的结果返回给请求者(步骤620)。
此请求包括一个目录名,此目录名被隔离环境处理为虚拟目录名。如果虚拟目录存在,则确定枚举操作如何被处理的规则通过参考规则引擎被定位(步骤604)。在有些实施例中,规则引擎可以被提供为关系数据库。在其他的实施例中,规则引擎可以是树状结构的数据库,hash表,或者平坦文件数据库。在有些实施例中,为此被请求的目录所提供的虚拟目录名被用于在规则引擎中定位应用到此请求的规则。在这些实施例中的特殊的一些中,多个规则可以存在于用于特定文件的规则引擎中,并且,在这些实施例中,具有与虚拟目录名相匹配的最长前缀的规则,是被应用于此请求的规则。在其他实施例中,进程标识符被用于在规则引擎中定位应用于此请求的(如果存在的话)规则。与此请求相关联的规则可以忽略此请求,重定向此请求,或者隔离此请求。尽管在图6中显示为单一数据库事务或者在文件中的单一查询,规则查询可以通过一系列的规则查询来完成。
如果规则动作是“重定向”(步骤606),依照规则虚拟目录名被直接映射为文字的目录名(步骤608)。针对此文字的目录枚举的请求被传递给操作系统(步骤612),并且步骤630被如下文所述那样执行。例如,枚举名为“directory_1”的目录的请求可以导致对名为“Different_directory_1”的文字的目录的枚举。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。对于使用文件系统过滤器驱动器的实施例,使用虚拟名打开用于枚举的目录的第一个请求,导致“STATUS_REPARSE”请求响应,指示被确定的文字的名字。I/O管理器此时再次发出具有包括在STATUS_REPARSE响应中的、被确定的文字的名字的,用于枚举的目录打开请求。
如果规则动作不是“重定向”(步骤606)而是“忽略”(步骤610),则文字的目录名被识别为和虚拟目录名完全一样(步骤613),并且枚举此文字的目录的请求被传送给操作系统(步骤612),并且,步骤630被如下文所述那样执行。例如,枚举名为“directory_1”的目录的请求可以导致对名为“directory_1”  实际的目录的枚举。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。对于使用文件系统过滤器驱动器的实施例,使用虚拟名来枚举目录的第一个请求,被过滤器驱动器没有进行修改地传递。
如果规则动作在步骤610被确定为不是“忽略”而是“隔离”,则系统范围被枚举,也就是说,提供在请求中的虚拟名被用于识别被枚举的目录(步骤614)。枚举的结果被存储在工作数据存储中。在有些实施例中,工作数据存储由存储单元组成。在其他实施例中,工作数据存储包括数据库或者文件,或者固态存储单元,或持久的数据存储。
然后,候选目录被识别为虚拟目录的应用范围内的实例,并且候选目录存在性的范畴被确定(步骤615)。如果候选目录具有“负面的存在性”,也就是说,其或者此范围中的其祖先之一被标记为已删除,则在此范围内其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤642)。
在有些实施例中,关于文件的少量的元数据可以被直接存储在文字的文件名中,诸如通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟文件名检测由于元数据指示器的存在而导致的文字的文件名的可能变种,而对文件访问的请求,和获取文件自身的名字的请求被钩取或者截取,旨在作为对文字的名字的响应。在其他实施例中,针对文件的一个或者多个可选的名字可以从虚拟文件名和元数据指示器形成,并且可以使用由文件系统提供的硬连接或者软连接设备被创建。这些连接的存在可以由隔离环境从应用隐藏,通过在如果一个请求使用连接名字访问文件时,指示此文件未被找到。一个特定的连接的存在或者不存在可以指示每一个元数据指示器的元数据的一位,或者可以存在具有可以呈现多个状态来指示元数据的多个位的元数据指示器的连接。在其中文件系统支持可替换的文件流的一些实施例中,一个可替换的文件流可以被创建以体现元数据,其具有指示元数据多个位的流的大小。在还有的一些实施例中,文件系统可以直接提供为每一个文件在文件系统中存储第三方元数据的能力。在另一些实施例中,单独的子范围可以被用于记录删除的文件,并且在此子范围内的文件(不被标识为占位符的)的存在性被视为意味着此文件被删除。
如果候选目录不具有负面的存在性,候选目录被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于枚举中的每一个文件系统元素,其存在性的范畴被确定。具有负面的存在性的元素被从工作数据存储中删除,具有正面的存在性的元素,也就是说,那些存在并且没有被标记为占位符和没有被标记为已删除的元素,被加入到工作数据存储中,替代工作数据存储中的对应元素(如果存在的话)(步骤616)。
在两个情况中的任一个中,候选目录被识别为虚拟目录的用户范围内的实例,并且候选目录的存在性的范畴被确定(步骤617)。如果候选目录具有“负面的存在性”,也就是说,其或者此范围中的其祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤644)。如果作为更换,候选目录不具有负面的存在性,则候选目录被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于枚举中的每一个文件系统元素,其存在性的范畴被确定。具有负面的存在性的元素被从工作数据存储中删除,具有正面的存在性的元素,也就是说,那些存在并且没有被标记为占位符和没有被标记为已删除的元素,被加入到工作数据存储中,替代工作数据存储中的对应元素(如果存在的话)(步骤618),接着是如随后所述的步骤630。
然后,对于规则的所有三种类型,步骤630被执行。规则引擎被查询来寻找其过滤器与被请求目录的直接孩子相匹配,但是不与被请求目录自身相匹配的规则集合(步骤630)。对于集合中的每一个规则,名字与规则中名字相匹配的虚拟孩子的存在性被使用在节4.1.1中略述的逻辑进行查询。如果孩子具有正面的存在性,其被加入到工作数据存储中,替代已经在这里存在的相同名字的任意孩子。如果孩子具有负面的存在性,则在工作数据存储中与孩子相对应的条目(如果存在的话)被删除(步骤632)。最后,构建的枚举此时被从工作数据存储返回给请求者(步骤620)。
本领域中的普通技术人员将了解上述的分层的枚举过程能够通过微小的改动应用于包括多个隔离子范围的单个隔离范围的枚举操作。工作数据存储被创建,后继的子范围被枚举并且结果被合并到工作数据存储中,来形成隔离范围的汇总枚举。
4.1.4文件系统创建操作
现在参考图7,并且在简要的概览中,描述了在隔离环境中创建一个文件所采用的步骤的一个实施例。一个创建文件的请求被接收或者截取(步骤702)。此请求包括一个文件名,其被此隔离环境处理为虚拟文件名。进行尝试,来使用适用的规则、使用完全的虚拟化打开被请求文件,也就是说,如在节4.1.1中所述的,使用合适的用户和应用隔离范围(步骤704)。如果访问被拒绝(步骤706),关于访问被拒绝的错误被返回给请求者(步骤709)。如果访问被允许(步骤706),并且被请求的文件被成功地打开(步骤710),则将请求的文件返回给请求者(步骤712)。但是如果访问被允许(步骤706),但是被请求的文件没有被成功地打开(步骤710),则如果被请求的文件的父亲也不存在(步骤714),与请求语义相关的错误被发出给请求者(步骤716)。如果另一方面,被请求文件的父亲在使用合适的用户和应用范围的完全的虚拟化视图中被找到(步骤714),此时,确定文件操作如何被处理的规则被确定(步骤718)。如果规则动作是“重定向”或“忽略”(步骤720),虚拟文件名依照此规则被直接映射到文字的文件名。特别地,如果规则动作是“忽略”,文字的文件名被识别为和虚拟文件名完全一样。如果,规则动作是“重定向”,文字的文件名如在规则中指定的那样,从虚拟文件名来确定。此时,创建该文字的文件的请求被传送给操作系统,并且结果被返回给请求者(步骤724)。如果在另一方面,规则动作在步骤720中被确定为是“隔离”,则文字的文件名被识别为在用户隔离范围内虚拟文件名的实例。如果该文字的文件已经存在,但是与指示其是一个占位符或者其已被删除的元数据相关联,则相关联的元数据被修改来删除那些指示,并且确认此文件是空的。在这两种情况中的每一个中,打开文字的文件的请求被传送给操作系统(步骤726)。如果文字的文件被成功地打开(步骤728),该文字的文件被返回给请求者(步骤730)。如果在另外一个方面,在步骤728中,被请求的文件打开失败,为目前不存在于用户隔离范围内的该文字文件的每个祖先创建占位符(步骤732),并且使用文字的名字创建文字的文件的请求被传送给操作系统,结果被返回给请求者(步骤734)。
还是参考图7,并且现在更加细致,创建文件的请求被接收或者截取(步骤702)。在有些实施例中,此请求被替代操作系统的功能或者用于创建文件功能的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取请求。钩取函数可以在用户模式或者在核模式中被执行。对于那些钩取函数在用户模式中执行的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数在核模式中执行的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的请求的调度中。对于对每一个文件操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型文件的创建或者打开的调用。
此请求包括一个文件名,此文件名被隔离环境处理为虚拟文件名。请求者试图使用适用的规则、使用完全的虚拟化打开被请求文件,也就是说,如在节4.1.1中所述的,使用合适的用户和应用隔离范围(步骤704)。如果在完全虚拟化打开操作中,访问被拒绝(步骤706),一个访问被拒绝的错误被返回给请求者(步骤709)。如果访问被允许(步骤706),并且被请求的文件被成功地打开(步骤710),则对应的文字的文件被返回给请求者(步骤712)。但是,如果访问被允许(步骤706),但是被请求的文件没有被成功地打开(步骤710),则虚拟文件已经被确定为不存在。如果被请求的虚拟文件的虚拟父亲也不存在,如在节4.1.1中所述的过程所确定的那样(步骤714),则与请求语义相关的错误被发出给请求者(步骤716)。如果另一方面,被请求文件的父亲在使用合适的用户和应用范围的完全的虚拟化视图中被找到(步骤714),则,确定该创建操作如何被处理的规则通过参考规则引擎被定位(步骤718)。在有些实施例中,规则引擎可以提供为关系数据库。在另一些实施例中,规则引擎可以是树状结构的数据库,hash表,或者平坦文件数据库。在有些实施例中,为被请求的目录所提供的虚拟目录名被用于在规则引擎中定位应用到此请求的规则。在这些实施例中的特殊的一些中,多个规则可以存在于用于特定文件的规则引擎中,并且,在这些实施例中的一些中,具有与虚拟文件名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中,进程标识符被用于在规则引擎中定位应用于此请求的(如果存在的话)规则。与请求相关联的规则可以忽略此请求,重定向此请求,或者隔离此请求。尽管在图7中显示为单一数据库事务或者在文件中的单一查询,规则查询可以通过一系列的规则查询来完成。
如果规则动作是“重定向”和“忽略”(步骤720),虚拟文件名依照此规则被直接映射到文字的文件名(步骤724)。如果,规则动作是“重定向”(步骤720),文字的文件名如在规则中指定的那样,从虚拟文件名来确定(步骤724)。如果,规则动作是“忽略”(步骤720),则文字的文件名被确定为和虚拟文件名完全一样(步骤724)。如果,规则动作是“忽略”或者规则动作是“重定向”,使用被确定的文字的文件名创建文字的文件的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤724)。例如,创建名为“file_1”虚拟文件的请求可以导致对名为“Different_file_1”的文字的文件的创建。在一个实施例中,这是通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成的(步骤724)。对于使用文件系统过滤器驱动器的实施例,使用虚拟名打开文件的第一个请求,导致STATUS_REPARSE响应,指示被确定的文字的名字。I/O管理器此时再次发出具有包括在STATUS_REPARSE响应中的被确定的文字的名字的,文件打开请求。
如果规则动作在步骤720中,不是“重定向”或者“忽略”,而是“隔离”,则文字的文件名被识别为在用户隔离范围内的虚拟文件名的实例。如果文字的文件已经存在,但是与指示其是一个占位符或者其已被删除的元数据相关联,则相关联的元数据被修改来删除那些指示,并且确认此文件是空的。
在有些实施例中,关于文件的少量的元数据可以被直接存储在文字的文件名中,诸如通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟文件名检测由于元数据指示器的存在而导致的文字的文件名的可能变种,而对文件访问的请求,和获取文件自身的名字的请求,被钩取或者截取,旨在作为对文字的名字的响应。在其他实施例中,文件的一个或者多个可选的名字可以从虚拟文件名和元数据指示器形成,并且可以使用由文件系统提供的硬连接或者软连接设备被创建。这些连接的存在可以由隔离环境从应用隐藏,通过在如果一个请求使用连接名字访问文件时,指示此文件未被找到。一个特定的连接的存在或者不存在可以指示每一个元数据指示器的元数据的一位,或者可以存在具有可以呈现多个状态来指示元数据的多个位的元数据指示器的连接。在其中文件系统支持可替换的文件流的一些实施例中,一个可替换的文件流可以被创建以体现元数据,其具有指示元数据多个位的流的大小。在还有的一些实施例中,文件系统可以直接提供为每一个文件在文件系统中存储第三方元数据的能力。
在这些实施例中的特定的一些中,被删除文件或者文件系统元素的列表可以被维护,并且被参考以对已删除文件检测最优化。在这些实施例中,如果被删除的文件被重新创建,则文件名可以被从被删除文件的列表中删除。在这些实施例中的其他中,如果此列表增长地超出某个大小时,文件名可以被从此列表中删除。
在这两种情况中的任一个中,打开用户范围内的文字的文件的请求被传送给操作系统(步骤726)。在有些实施例中,规则可以指定对应于虚拟文件的文字的文件应该被创建的范围,除了用户隔离范围,还有诸如应用隔离范围,系统范围,用户隔离子范围或者应用隔离子范围。
如果文字的文件被成功地打开(步骤728),文字的文件被返回给请求者(步骤730)。如果在另外一个方面,在步骤728中,被请求的文件打开失败,为目前不存在于用户隔离范围内的该文字文件的每个祖先创建占位符(步骤732),并且使用文字的名字创建文字的文件的请求被传送给操作系统,结果被返回给请求者(步骤734)。
此实施例是用于具有仅支持每一个调用创建一个层级的API或者设备的操作系统。延展到每一个调用多个层级的方法对本领域中的技术人员来说是显而易见的。
4.1.5短文件名管理
在有些实施例中,短的和长的文件名均可以被赋予每一个文件。每一个名字可以被用于访问在上述文件操作中的文件。对于具有短的和长的文件名两者的每一个文件,这隐含地创建了分配给那个文件的短的和长的文件名之间的关联。在这些文件系统中的一些中,短名字被文件系统自动地分配给使用长的文件名创建的文件。如果在短的和长的文件名之间的关联不被隔离环境所维持,在同样的目录中、但是在不同的范围级别中的具有不同的长名字的文件可能具有相同的短文件名,导致如果使用短名字访问虚拟文件会造成含糊。可选地,当一个文件被拷贝至用于修改的用户隔离范围时,短的文件名可以改变,意味着虚拟文件不能再使用原始的短名字来访问。
为了防止这些问题,首先,拷贝旨在修改的被打开文件实例的文件系统操作被修改到更高范围,该范围保持着在与被拷贝的实例相关联的短的和长的文件名之间的关联。其次,为新创建的隔离文件创建唯一的短的名字,代替操作系统分配的文件名。此被生成短文件名应该满足这样的条件,被生成的文件名与在相同的隔离范围内的相同目录中或者在“更低”的隔离范围内的相同目录中的任意存在的短的文件名不匹配。例如,为位于用户隔离范围内的文件的实例所生成的短的文件名,应该不与此目录的应用隔离范围内的或者此目录的系统范围内的实例的存在的短文件名匹配。
现在参考图7A,显示了在创建了一个新文件之后,分配唯一的短文件名的所采用的步骤的实施例。并且在简要的概览中,进行检测来确定是否短的文件名将被创建(步骤752)。如果不被,返回指示没有短的文件名将被创建的状态(步骤754)。否则,检测该文件名来确定依照文件系统是否已经存在一个合法的短文件名(步骤756)。如果已经有一个合法的短的文件名,指示没有短的文件名将被创建的状态被返回(步骤754)。否则,合适的短的文件名被创建(步骤758)。
还是参考图7A,并且现在更加细致,进行检测来确定短的文件名是否应该被生成(步骤752)。在有些实施例中,这个决定可以基于文件名所涉及的存储该文件的设备。在其他的实施例中,短的文件名的生成可以在某些范围或者子范围内,或者作为一个整体的隔离范围内进行。在这些实施例中的一些中,注册设置可以指定是否短的文件名为特定的文件名而生成。如果没有短的文件名被生成,指示没有短的文件名将被生成的状态被返回(步骤754)。
否则,检查文件名来确定是否已经存在合法的短的文件名(步骤756)。在有些实施例中,合法的短文件名在文件名中包括8个字符的并且在可选的扩展中至多包括3个字符。在有些实施例中,合法的短文件名仅仅包括合法字符,诸如A-Z,a-z,0-9,′,~,!,@,#,$,%,^,&,*,(,),-,_,‘,{和}。在有些实施例中,最开始的空格或者“.”或者多于一个的嵌入的“.”是不合法的。如果提供的文件名已经是合法的短文件名,指示没有短文件名将被生成的状态被返回(步骤754)。
否则,如果在步骤756中,确定文件名是非法的短文件名,一个合适的短文件名被创建(步骤758)。在有些实施例中,这通过在短文件名中使用合法的长文件名中的某些部分来完成,关联被编码的迭代计数来形成候选的短的文件名。迭代计数增加,直到相关联的候选短文件名是合适的,也就是说,是没有被在相同的范围内或者在更低的范围内的相同目录中的任何其他文件使用的合法的短文件名。在其他的实施例中,长文件名被损坏或者哈希(hush)和编码,与编码的迭代计数一起来形成候选的短文件名。迭代计数增加,直到相关联的候选短文件名是合适的,也就是说,是没有被在相同的范围内或者在更低的范围内的相同目录中的任何其他文件使用的合法的短文件名。在这些所有的实施例中,范围专有的字符串可以被合并到候选的短文件名中,以增加利用低迭代计数时该合适的候选短文件名被找到的可能性。
4.2注册虚拟化
上述的方法和设备可以用于虚拟化对注册数据库的访问。如上所述,注册数据库存储关于与计算机物理连接的硬件的信息,这些信息包括,哪些系统选项已经被选择,计算机存储器如何被建立,应用专用数据的各种项目,和在操作系统启动时哪些应用程序将被呈现。注册数据库通常被组织在“键”170,172的逻辑层级中,其是注册值的容器。
4.2.1注册键打开操作
在简要的概览中,图8描述了在上述隔离环境中打开一个注册键所采用的步骤的实施例。打开注册键的请求被接收或者截取,此请求包括注册键名,其被此隔离环境处理为虚拟键名(步骤802)。适用于此请求中的虚拟名的处理规则确定注册键操作如何被进行处理(步骤804)。如果规则动作为“重定向”(步骤806),在请求中提供的虚拟键名被映射为由适用的规则指定的文字的键名(步骤808)。使用文字的键名打开文字的注册键的请求被传递给操作系统,并且来自操作系统的结果被返回给请求者(步骤810)。如果规则动作不是“重定向”而是“忽略”(步骤806),则虚拟键名被识别为文字的键名(步骤812),并且打开该文字的注册键的请求被传递给操作系统,并且来自操作系统的结果被返回给请求者(步骤810)。如果在步骤806中确定的规则动作不是“重定向”且不是“忽略”,而是“隔离”,此请求中提供的虚拟键名被映射为用户范围内的候选键名,此键名与该适用的用户隔离范围专有的虚拟键名相对应(步骤814)。用户范围内的候选键的存在性的范畴,通过检测用户隔离范围和与候选键相关联的任意元数据来确定(步骤816)。如果候选键具有“负面的存在性”,因为候选键或者用户隔离范围内的其祖先之一被标记为已删除,这意味着被请求的虚拟键是已知不存在的。在这种情况下,指示被请求的文件未被找到的错误条件被返回给请求者(步骤822)。如果在步骤816中,候选键被确定为具有“正面的存在性”,因为,候选键存在于用户隔离范围内,并且没有被标记为占位符节点,则被请求的虚拟键被已知是存在的。候选键被识别为针对此请求的文字的键(步骤818),并且发出打开此文字的键的请求,返回结果给请求者(步骤820)。但是,如果在步骤816中,候选键被确定为具有“中性的存在性”,因为候选键不存在或者候选键存在但是被标记为占位符节点,虚拟键是否存在不得而知。在这种情况下,与虚拟键名相对应的应用范围的键名被识别为候选键名(步骤824)。换句话说,候选键名通过将虚拟键名映射为与指定给适用的应用隔离范围的本地键名相对应的虚拟键名来形成的。候选键存在性的范畴通过检测应用隔离范围和与候选键相关联的任意元数据而被确定(步骤826)。如果候选键具有“负面的存在性”,因为候选键或者用户应用范围内的祖先之一被标记为已删除,这意味着被请求的虚拟键是已知不存在的。在这种情况下,指示被请求的文件未被找到的错误条件被返回给请求者(步骤822)。如果在步骤826中,候选键被确定为具有“正面的存在性”,因为,候选键存在于应用隔离范围内,并且没有被标记为占位符节点,则被请求的虚拟键被已知是存在的。此请求被检测来确定打开请求是否指示对此键修改的意图(步骤828)。如果不是,候选键被识别为针对此请求的文字的键(步骤818),并且发出打开此文字的键的请求,返回结果给请求者(步骤820)。但是,如果在步骤828中,确定打开请求指示对此键修改的意图,则检测与此键相关联的许可数据来确定对此键的修改是否被允许(步骤836)。如果不允许,指示对此键的修改不被允许的错误条件被返回给请求者(步骤838)。如果许可数据指示此键可以被修改,候选键被拷贝至用户隔离范围(步骤840)。在有些实施例中,候选键被拷贝至由规则引擎定义的位置。例如,规则可以指定此键被拷贝至应用隔离范围。在其他的实施例中,规则可以指定此键将被拷贝至的特定的应用隔离子范围或用户隔离子范围。不出现在此键被拷贝至的隔离环境中的、此请求的键的任意祖先被创建为此隔离范围内的占位符,旨在正确地定位在此层级中的被拷贝的实例。新被拷贝的范围内的实例被识别为文字的键(步骤842),并且打开此文字的键的请求被发出,结果返回给请求者(步骤820)。返回到步骤826,如果候选键具有“中性的存在性”,因为候选键不存在,或者因为候选键存在但是标记为占位符节点,仍不知道虚拟键是否存在。在这种情况下,对应于虚拟键名的系统范围的键名被识别为候选键名(步骤830)。换句话说,候选键名与虚拟键名完全一样。如果候选键名不存在(步骤832),指示虚拟键未被找到的错误条件被返回给请求者(步骤834)。如果,在另一个方面,如果候选键存在(步骤832),检测该请求来确定打开请求是否指示对此键修改的意图(步骤828)。如果不是,候选键被识别为针对此请求的文字的键(步骤818),并且发出打开此文字的键的请求,返回结果给请求者(步骤820)。但是,如果在步骤828中,确定打开请求指示对此键修改的意图,则检测与此键相关联的许可数据来确定对此键的修改是否被允许(步骤836)。如果不允许,指示对此键的修改不被允许的错误条件被返回给请求者(步骤838)。如果许可数据指示此键可以被修改,候选键被拷贝至用户隔离范围(步骤840)。在有些实施例中,候选键被拷贝至由规则引擎定义的位置。例如,规则可以指定此键被拷贝至应用隔离范围。在其他的实施例中,规则可以指定此键将被拷贝至的特定的应用隔离子范围或用户隔离子范围。此请求的键的不出现在此键被拷贝至的隔离环境中的任意祖先被创建为此隔离范围内的占位符,旨在正确地定位在此层级中被拷贝的实例。新被拷贝的范围内的实例被识别为文字的键(步骤842),并且打开此文字的键的请求被发出,结果返回给请求者(步骤820)。
还是参考图8,并且现在更加细致,打开虚拟注册键的请求被接收或者截取(步骤802)。对应的文字的注册键可以是在用户隔离范围、应用隔离范围或者系统范围内,或者由应用隔离子范围或用户隔离子范围限定范围。在有些实施例中,此请求被替代操作系统的功能或者用于打开注册键功能的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数在用户模式中执行的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数在核模式中执行的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地注册键的请求的调度中。对于对每一个注册键操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型的注册键操作的创建和打开的调用。
此请求包括一个注册键名,此注册键名被隔离环境处理为虚拟注册键名。适用于注册键打开请求的处理规则通过参考规则引擎被确定(步骤804)。在有些实施例中,规则引擎被提供作为关系数据库。在其他实施例中,规则引擎可以是树结构数据库,hash表,或者平坦文件数据库。在有些实施例中,提供给被请求的注册键的虚拟注册键名被用于在规则引擎中定位应用于此请求的规则。在这些实施例中的特别的一些中,用于特定注册键的规则引擎中可以存在多个规则,并且在这些实施例中,具有与虚拟注册键名相匹配的最长前缀的规则,是被应用于此请求的规则。在其他实施例中,进程标识符被用于在规则引擎中定位(如果存在的话)应用于此请求的规则。与请求相关联的规则可以忽略此请求,重定向此请求,或者隔离此请求。尽管显示在图8中,作为单一的数据库事务或者在文件中的单个查找,规则查找可以被执行为一系列的规则查找。
如果规则动作是“重定向”(步骤806),在此请求中提供的虚拟注册键名依照适用的规则,被映射为文字的注册键名(步骤808)。使用文字的注册键名打开文字的注册键的请求被传递给操作系统,来自操作系统的结果被传递给请求者(步骤810)。例如,打开名为“registry_key_1”的注册键的请求可以导致对名为“Different_registry_key_1”的文字的注册键的打开。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。在其他的实施例中,概念上与文件系统过滤器驱动器设备相似的注册过滤器驱动器设备可以由操作系统提供。在这些实施例中,对文字的注册键的打开,可以通过信号通知注册过滤器管理器来使用所确定的文字的键名重新解析此请求,从而响应打开虚拟键的原始请求,来完成。如果规则动作是“忽略”(步骤806),则文字的注册键名被确定为和虚拟注册键名完全一样(步骤812),并且打开该文字的注册键的请求被传递给操作系统,并且来自操作系统的结果被返回给请求者(步骤810)。例如,打开名为“registry_key_1”的注册键的请求可以导致对名为“registry_key_1”的文字的注册键的打开。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。在另一个实施例中,这是通过信号通知注册过滤器管理器来继续以正常模式处理原始的未被修改的请求而完成。
如果在步骤806中确定的规则动作是“隔离”,则对应于虚拟注册键名的用户范围内的注册键名被识别为候选注册键名(步骤814)。换句话说,候选的注册键名通过将虚拟注册键名映射为指定给适用的用户隔离范围的对应本地注册键名而形成。例如,打开名为“registry_key_1”的注册键的请求可以导致对名为“Isolated_UserScope_UserA_registry_key_1”的文字的注册键的打开。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个自变量来完成。在其他实施例中,对该文字的注册键的打开,可以通过信号通知注册过滤器管理器使用被确定的文字的键名,重新解析此请求,从而响应对打开虚拟键的原始请求来完成。
在有些实施例中,形成的旨在隔离被请求的虚拟注册键的文字的名,可以基于接收到的虚拟注册键名和范围专用的标识符。范围专用的标识符可以是与应用隔离范围,用户隔离范围,会话隔离范围和应用隔离子范围,用户隔离子范围,或者上述这些的组合相关联的。范围专用的标识符被用于“损坏”在请求中接收到的虚拟名。
在其他实施例中,用户隔离范围或者子范围可以是注册键,在其下,该用户隔离范围内存在的所有键被存储。在这些实施例中的一些中,在用户隔离键下的键的层级反映被请求的资源的路径。换句话说,此文字的键的路径通过将虚拟键路径映射到用户隔离范围而形成。例如,如果被请求的键是HKLM\Software\Citrix\MyKey,并且,用户隔离范围键是HKCU\Software\UserScope\,此时,到用户范围内的文字的键的路径是HKCU\Software\UserScope\HKLM\Software\Citrix\MyKey。在其他的实施例中,到用户范围内的文字的路径可以以本地命名惯例定义。例如,到用户范围内的文字的键的路径可以是HKCU\Software\UserScope\Registry\Machine\Software\Citrix\MyKey。在另一些实施例中,用户范围内的键可以全部被存储在具有选择的唯一名字的单一的键下,并且一个数据库可以被用于存储在被请求键名和存储在用户隔离键中的对应的文字的键名之间的映射。在另一些实施例中,文字的键的内容可以被存储在数据库或者文件存储中。
候选键的存在性的范畴,通过检测用户隔离范围和与该候选键相关联的任意元数据来确定(步骤816)。如果候选键具有“负面的存在性”,因为候选键或者用户隔离范围内的其祖先之一被标记为已删除,这意味着被请求的虚拟键是已知不存在的。在这种情况下,指示被请求键未被找到的错误条件被返回给请求者(步骤822)。
在有些实施例中,文字的注册键可以与指示此虚拟化的注册键已经被删除的元数据相关联。在有些实施例中,与注册键相关的元数据可以以该键保持的值来区分,并且该键的存在性从注册API的一般应用用途隐藏。在有些实施例中,少量的关于注册键的元数据可以被直接存储在文字的键名中,诸如,通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟名检测由于元数据指示器的存在而造成的文字的键名的可能的变种,而对访问文件的请求,和获取键自身的名字的请求被钩取或者截取,旨在针对文字的名字作出响应。在其他实施例中,元数据指示器可以被编码为子键名或者注册值名,而不是键名本身。在另一些实施例中,注册键系统可以直接提供用于存储每一个键的一些第三方元数据的能力。在有些实施例中,元数据被存储在数据库或者其他与注册数据库分离的存储库中。在有些实施例中,一个单独的子范围可以被用于存储被标记为已删除的键。在该子范围内键的存在性指示此键被标识为已删除。
在这些实施例中特定的一些中,被删除的键的列表或者键系统元素可以被维持,并且被参考来最优化对这些删除的键的检查过程。在这些实施例中,如果被删除的键被重新创建,则键名可以被从该被删除的键的列表中除去。在这些实施例中的另一些中,如果此列表超过某大小之后,键名可以从此列表中被删除。
如果在步骤816中,候选键被确定为具有“正面的存在性”,因为,候选键存在于用户隔离范围内,并且没有被标记为占位符节点,则被请求的虚拟键被已知是存在的。候选键被识别为针对此请求的文字的键(步骤818),并且发出打开此文字的键的请求,返回结果给请求者(步骤820)。
但是,如果在步骤816中,候选键被确定为具有“中性的存在性”,因为候选键不存在或者候选键存在但是被标记为占位符节点,虚拟键是否存在不得而知。在这种情况下,与虚拟键名相对应的应用范围的键名被识别为候选键名(步骤824)。换句话说,候选键名通过将虚拟键名映射到指定给适用的应用隔离范围的对应本地键名来形成的。候选键存在性的范畴通过检测应用隔离范围和与候选键相关联的任意元数据而被确定(步骤826)。
如果应用隔离范围的候选键具有“负面的存在性”,因为候选键或者应用隔离范围内的祖先之一被标记为已删除,这意味着被请求的虚拟键是已知不存在的。在这种情况下,指示被请求的文件未被找到的错误条件被返回给请求者(步骤822)。
但是,如果在步骤826中,候选键被确定为具有“正面的存在性”,因为,候选键存在于应用隔离范围内,并且没有被标记为占位符节点,则被请求的虚拟键被已知是存在的。此请求被检测来确定打开请求是否指示对此键修改的意图(步骤828)。如果不是,候选键被识别为针对此请求的文字的键(步骤818),并且发出打开此文字的键的请求,返回结果给请求者(步骤820)。
但是,如果在步骤828中,确定打开请求指示对此键修改的意图,则与此键相关联的许可数据被检测来确定对此键的修改是否被允许(步骤836)。在有些实施例中,许可数据是与应用隔离范围内的候选键相关联的。在这些实施例中的一些中,许可数据被存储在规则引擎中或者与此候选键相关联的元数据中。在其他实施例中,与此候选键相关联的许可数据由操作系统提供。进一步,规则引擎可以包括配置设置,此配置设置指导隔离环境遵守或者不遵守针对资源的虚拟化的拷贝的本地许可数据。在有些实施例中,规则可以为一些虚拟资源指定在其中将发生修改的范围,这些范围诸如系统范围或者应用隔离范围或者子范围,或者用户隔离范围或者子范围。在有些实施例中,规则引擎可以指定配置设置,此配置设置应用于基于层级的、虚拟化的本地资源的子集合。在这些实施例中的一些中,配置设置可以被指定于每一个原子的本地资源。
但是,如果与此候选键相关联的许可数据指示其不可以被修改,指示对此键的修改不被允许的错误条件被返回给请求者(步骤838)。如果许可数据指示此键可以被修改,候选键被拷贝至用户隔离范围(步骤840)。在有些实施例中,候选键被拷贝至由规则引擎定义的位置。例如,规则可以指定此键被拷贝至另一个应用隔离范围。在其他的实施例中,规则可以指定此键将被拷贝至的特定的应用隔离子范围或用户隔离子范围。此请求的键的不出现在此键被拷贝至的隔离环境中的任意祖先被创建为此隔离范围内的占位符,旨在正确地定位在此层级中的被拷贝的实例。
在有些实施例中,与被拷贝到隔离范围的此键相关联的元数据标识这些键被拷贝的日期和时间。这个信息可以被用于将此键被拷贝的实例的时间戳对比此键原始实例的、或者在位于更低隔离范围内的键的另一个实例的最后一次修改的时间戳。在这些实施例中,如果此键的原始实例或者位于更低隔离范围内的键的实例,与晚于被拷贝键的时间戳的时间戳相关联,则此键可以被拷贝至隔离范围来更新候选键。在其他的实施例中,在隔离范围内的此键的拷贝,可以与标识包含被拷贝的原始键的范围的元数据相关联。
在进一步实施例中,由于被拷贝至隔离范围的键被以进行修改的意图打开,可以监控这些键来确定它们实际上是否被修改。在一个实施例中,被拷贝的文件与一个标志相关联,此标志当文件确实被修改时被设置。在这些实施例中,如果被拷贝的文件实际上没有被修改,它可以在被关闭后被从其被拷贝至的此范围删除,以及与此被拷贝的键相关联的所有占位符节点也被删除。
范围内的实例被识别为文字的键(步骤842),并且发出打开文字的键的请求,返回结果给请求者(步骤820)。
回到步骤826,如果候选键具有中性的存在性,因为候选键不存在,或者因为候选键被找到但是被标记为占位符节点,仍不知道虚拟键是否存在。在这种情况下,对应于虚拟键名的系统范围的键名被识别为候选键名(步骤830)。换句话说,候选键名与虚拟键名完全相同。
如果候选键不存在(步骤832),指示虚拟键未被找到的错误条件返回给请求者(步骤834)。如果在另一个方面,候选键存在(步骤832),检测该请求来确定打开请求是否指示对键进行修改的意图(步骤828)。
如上所述,如果候选键被不以修改为意图打开,系统范围的候选键被识别为针对此请求的文字的键(步骤818),并且发出打开文字的键的请求,并且返回结果给请求者(步骤820)。但是,如果在步骤828中,确定打开请求是以修改此键为意图的,则检查与此键相关联的许可数据来确定,对此键的修改是否被允许(步骤836)。在有些实施例中,许可数据是与应用范围的候选键相关联的。在这些实施例中的一些中,许可数据被存储在规则引擎或者与此候选键相关联的元数据中。在其他的实施例中,与候选键相关联的许可数据由操作系统提供。进一步,规则引擎可以包括指导隔离环境的配置设置,此配置设置指导隔离环境遵守或者不遵守针对资源的虚拟化拷贝的本地许可数据。在有些实施例中,规则可以为一些虚拟资源指定在其中将发生修改的范围,这些范围诸如系统范围或者应用隔离范围或者子范围,或者用户隔离范围或者子范围。在有些实施例中,规则引擎可以指定配置设置,此配置设置基于层级用于虚拟化的本地资源的子集合。在这些实施例中的一些中,配置设置可以被指定于每一个原子的本地资源。
如果,与此系统范围内的候选键相关联的许可数据指示此键不可以被修改,指示对此键的修改不被允许的错误条件被返回给请求者(步骤838)。但是,如果许可数据指示此键可以被修改,候选键被拷贝至用户隔离范围(步骤840)。在有些实施例中,候选键被拷贝至由规则引擎定义的位置。例如,规则可以指定此键被拷贝至一个应用隔离范围,或者其可以被留在系统范围内。在其他的实施例中,规则可以指定此键将被拷贝至的特定的应用隔离子范围或用户隔离子范围。此请求的键的不出现在此键被拷贝至的隔离环境中的任意祖先被创建为此隔离范围内的占位符,旨在正确地定位在此层级中被拷贝的实例。
在有些实施例中,与被拷贝到隔离范围的此键相关联的元数据标识这些键被拷贝的日期和时间。这个信息可以被用于将与此键被拷贝的实例关联的时间戳对比此键原始实例的最后一次修改的时间戳。在这些实施例中,如果此键的原始实例与晚于被拷贝键的时间戳的时间戳相关联,则原始键可以被拷贝至隔离范围来更新候选键。在其他的实施例中,被拷贝至隔离范围的候选键,可以与标识被拷贝的原始键所来自的范围的元数据相关联。
在进一步实施例中,由于被拷贝至隔离范围的键被以进行修改的意图打开,可以监控这些键来确定它们实际上是否被修改。在一个实施例中,被拷贝的文件与一个标志相关联,此标志当文件确实被修改时被设置。在这些实施例中,如果被拷贝的文件实际上没有被修改,它可以在被关闭后被从其被拷贝至的此范围删除,以及与此被拷贝的键相关联的所有占位符节点也被删除。在另外的实施例中,只有当该键被实际修改时,其才被拷贝到合适的隔离范围。
范围内的实例被识别为文字的键(步骤842),并且发出打开文字的键的请求,返回结果给请求者(步骤820)。
4.2.2注册键删除操作
现在参考图9,并且在简要的概览中,描述了删除一个注册键所采用的步骤的实施例。在一个键可以被删除之前,此键必须首先被以删除访问成功地打开(步骤901)。如果此键未被成功地打开,一个错误被返回(步骤916)。如果此键被成功地打开,删除虚拟化的注册键的请求被接收或者截取,此请求包括对应于虚拟键的文字的键的句柄(步骤902)。一个规则来确定此注册键操作如何被处理(步骤904)。除了适用于将被删除的此键的规则,检查任意其他适用于紧接着的子键的规则(步骤905)。对于适用于被找到的紧接着的子键的每个规则,尝试用在步骤905中找到的规则中给定的名字所指定的虚拟子键名,打开虚拟子键。如果具有与在步骤905中找到的规则中的一个相对应名字的键被成功地打开(步骤906),则此虚拟键被认为具有子键,意味着其不能被删除,并且错误被返回(步骤907)。
如果在从步骤905中选出的所有虚拟键名均被尝试打开之后(步骤906),没有虚拟键被发现是存在的,需要进一步检查。如果规则动作不是“隔离”,而是“重定向”或者“忽略”(步骤908),删除此文字的注册键的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤911)。但是,如果规则动作在步骤908中被确定为“隔离”,汇总的虚拟化的注册键被参考来确定其是否包括任意的虚拟子键(步骤914)。如果虚拟化的键具有子键,则删除不能够继续进行,并且指示此键没有被删除的错误被返回(步骤920)。如果该虚拟化的键不具有子键,则检查与虚拟键对应的文字的键来确定它是否掩盖了在另一个范围层级别中的具有相同虚拟名的范围内的键(步骤922)。如果对应于虚拟键的文字的键没有掩盖不同范围内的具有相同的虚拟名的键,则与此虚拟键相对应的文字的键被删除,并且返回结果(步骤926)。如果对应于虚拟键的文字的键掩盖了不同范围内的具有相同的虚拟名的键,则给此虚拟键相对应的文字的键标记一个值,表示其被删除,并且返回成功的结果给调用者(步骤924)。
还是参考图9,并且现在更加细致,为了删除键,必须首先以删除访问的方式打开此键(步骤901)。以删除访问打开此键的请求包括此键的名,其被隔离环境处理为虚拟名。完全虚拟化的键的打开如节4.2.1所述的完成。如果虚拟化的打开操作失败,错误被返回给请求者(步骤916)。如果虚拟化的打开操作成功,对应于此虚拟键的文字的键的句柄被返回给请求者。随后,删除在步骤901中打开的注册键的请求被接收或者截取(步骤902)。打开的文字的注册键可以是在用户范围,应用隔离范围,系统范围,或者一些适用的隔离子范围内。在有些实施例中,此删除请求被替代操作系统的功能或者用于删除注册键功能的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取删除请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数执行在用户模式中的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数执行在核模式中的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地注册键的请求的调度中。在其他的实施例中,概念性地相似于文件系统过滤器驱动器设备的注册过滤器驱动器设备可以由操作系统提供。在本领域中的技术人员可以建立操作系统将传递请求来完成注册操作的注册过滤器驱动器,从而,提供截取注册操作请求的机制。在那些单独的操作系统函数被提供于注册键功能的每一个类型的实施例,每一个函数可以被单独地钩取。或者,可以提供单独的钩取函数,截取针对注册键函数的多种类型的建立或者打开的调用。
删除请求包括一个文字的键的句柄。与此句柄相关联的虚拟键名通过查询操作系统寻找与此句柄相关联的文字的名来被确定。规则引擎被参考来确定与此文字的名相关联的虚拟名(如果存在的话)。确定注册键操作如何被处理的(步骤904)规则,通过参考规则引擎而被获得。在有些实施例中,将被枚举的虚拟注册键的虚拟键名被用于在规则引擎中定位应用于此请求的规则,在这些实施例中的特别的一些中,在规则引擎中可以存在针对特定虚拟键的多个规则,并且在这些实施例中的一些中,具有与虚拟键名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中规则引擎被提供作为关系数据库。在其他实施例中,规则引擎可以是树结构数据库,hash表,或者平坦注册键数据库。在有些实施例中,与此请求中虚拟键句柄相对应的虚拟键名被用为规则引擎中的索引,此索引定位应用于此请求的一个或者多个规则。在有些实施例中,进程标识符被用于在规则引擎中定位应用于此请求的规则(如果存在的话)。与此请求相关联的规则可以忽略此请求,重定向此请求,或者隔离从请求。规则查询可以以一系列的决定的形式发生或者规则查询可以以单一数据库事务的形式发生。
此将被删除键的虚拟名被用于参考规则引擎,来定位适用于删除此虚拟键的任意紧接着的子键的规则集合,但是不是适用于将被删除的虚拟键。无论那些子键是否存在,此规则集合被定位(步骤905)。如果这个适用于紧接着的子键的规则集合不为空,则这项规则的每一个的虚拟名被依次取出(步骤906)。如果对应于这些虚拟名中的任一个的虚拟键的任一个能够被成功地打开,则意味着虚拟子键存在。这意味着虚拟键不能够被删除,因为其具有存在的子键,并且一个错误被返回(步骤907)。如果在对适用于虚拟键的紧邻子键的规则集合的全部进行检查后(步骤905),则没有找到虚拟子键的存在,删除能够继续进行。例如,如果具有虚拟名“key_1”的键可以具有适用于“key1\subkey_1”和“key1\subkey_2”的子规则。在这个步骤中,试图进行对“key1\subkey_1”和“key1\subkey_2”的虚拟化的打开操作。如果这些虚拟子键的任一个能够被成功地打开,则删除操作将失败,并且一个错误被返回(步骤907)。只有如果这些虚拟子键中的任一个都不存在的时候,删除操作能够继续。
如果规则动作不是“隔离”,但是“重定向”,或者“忽略”(步骤908),删除此文字的注册键的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤911)。如果此文字的键包括文字的子键,则此请求将失败。在一个实施例中,通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成删除文字的注册键的请求。在使用了注册过滤器驱动器的实施例中,这个是通过对此请求返回一个完成的状态,来指示操作系统完成对此请求的正常处理。在有些实施例中,与文字的注册键相关联的操作系统的允许可以阻止此删除操作。在这些实施例中,错误消息被返回,此虚拟注册键不能够被删除。
如果规则动作在步骤908中被确定为“隔离”,总和的虚拟化的注册键被参考来确定其是否包括任意的虚拟子键(步骤914)。如果此被请求的虚拟化的键具有子键,则此虚拟键不能够被删除,并且错误被返回给调用者(步骤920)。
如果此被请求的虚拟化的键不包含虚拟子键,则此虚拟键能够被删除。随后的所采取的动作依赖于包括将被删除的文字的键的范围。例如,删除虚拟注册键的请求可以导致对应用范围内的文字的键的删除。包括文字的键的范围能够通过参考具有到文字的键的完全路径的规则引擎来确定。
如果将被删除的文字的键被发现于特别的范围内,并且此文字的键掩盖在另一个范围内的相同虚拟名的另一个键,则将被删除的文字的键被标记为已删除,并且返回给请求者结果(步骤924)。例如,如果具有相同的虚拟名的对应的应用范围内的键或者具有相同的虚拟名的对应的系统范围内的键具有“正面的存在性”,也就是存在于此范围内,并且不被标记为占位符,并且不被认为是将被删除的,则对应于用户范围的文字的键的虚拟键,被认为掩盖不同范围内的键。相似地,如果系统范围内的键存在并且不被认为是将被删除的,则应用范围内的键被认为掩盖与相同虚拟名对应的系统范围内的键。
如果将被删除的文字的键没有被发现掩盖了在另一个范围内的相同虚拟名的另一个键,则将被删除的文字的键被实际地删除并且返回一个结果(步骤926)。
在有些实施例中,与文字的注册键相关联的操作系统的允许可以阻止此删除操作。在这些实施例中,错误消息被返回,此虚拟注册键不能够被删除。
在有些实施例中,文字的注册键是与指示虚拟化的注册键已经被删除的元数据相关联的。在有些实施例中,与注册键相关联的元数据可以被存储于由此键具有的不同的值,将此键的存在性从注册API的普通应用用途中隐去。在有些实施例中,少量的关于注册键的元数据可以被直接存储在文字的键名中,诸如,通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟名检测由于元数据指示器的存在,造成的文字的键名的可能的变种的方式访问文件的请求,和恢复键自身的名字的请求被钩取或者截取,旨在针对文字的名字作出响应。在其他实施例中,元数据指示器可以被编码为子键名或者注册值名,而不是键名本身。在另一些实施例中,注册键系统可以直接提供用于存储每一个键的一些第三方元数据。在有些实施例中,元数据被存储在数据库或者其他与注册数据库分离的库中。在有些实施例中,分离的子范围可以被用于存储被标记为已删除的键。在子范围内键的存在性指示此键被标识为已删除。
在这些实施例中特定的一些中,被删除的键的列表或者键系统元素可以被维持并且被参考来最优化对这些删除的键的检查过程。在这些实施例中,如果被删除的键被重新创建,则键名可以被从此被删除的键的列表中除去。在这些实施例中的另一些中,如果此列表超过某大小之后,键名可以从此列表中被删除。
在有些实施例中,在相同的范围内的文字的注册键的祖先是与指示其被删除的或者另外地被指示将被删除的元数据相关联的。在这些实施例中,错误消息被返回,指示此虚拟化的注册键不存在。在这些实施例中的特别的一些中,被删除的键的列表或者键系统元素可以被维持并且被参考来最优化对这些删除的键的检查过程。
4.2.3注册键枚举操作
现在参考图10,并且在简要的概览中,描述了在所述虚拟化的环境中,枚举一个键所采用的步骤的一个实施例。在一个键能够被枚举之前,首先此键必须以枚举访问的方式被成功地打开(步骤1001)。如果键没有被成功地打开,则返回一个错误(步骤1040)。如果虚拟键被成功地打开,则一个枚举的请求被接收或者截取,此请求包括对应于此虚拟键的文字的键的句柄(步骤1002)。
对应于此句柄的虚拟键名被确定,并且规则引擎被参考来确定针对于在枚举请求中指定的键的规则(步骤1004)。如果规则没有指定动作为“隔离”,但是指定为“忽略”或者指定为“重定向”(步骤1006),由文字的键的句柄指定识别的文字的键被枚举,而且枚举结果存储在工作设计存储中(步骤1012),接着有如随后所述的步骤1030。
但是,如果规则指定为“隔离”,首先,系统范围被进行枚举,也就是,候选键名和虚拟键名完全一样,并且,如果候选键存在,其被枚举。枚举结果被存储在工作数据存储中。如果候选键不存在,在此阶段,工作数据存储保持空(步骤1014)。接着候选键被识别为虚拟键的应用范围内的实例,候选键存在性的范畴被确定(步骤1015)。如果候选键具有“负面的存在性”,也就是,其或者此范围中的其祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤1042)。如果作为更换,候选键不具有负面的存在性,候选键被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于枚举中的每一个子键,其存在性的范畴被确定。具有负面的存在性的子键被从工作数据存储中删除,具有正面的存在性的子键,也就是,那些存在并且没有被标记为占位符和没有被标记为已删除的元素,被加入到工作数据存储中,替代那些如果已经呈现在工作数据存储中的对应元素(步骤1016)。
在两个例子中的任一个中,候选键被识别为虚拟键的用户范围内的实例,并且候选键的存在性的范畴被确定(步骤1017)。如果候选键具有负面的存在性,也就是,其或者此范围中的其祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤1044)。如果作为更换,候选键不具有负面的存在性,候选键被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于枚举中的每一个子键,其存在性的范畴被确定。具有负面的存在性的子键被从工作数据存储中删除,具有正面的存在性的子键,也就是,那些存在并且没有被标记为占位符和没有被标记为已删除的子键,被加入到工作数据存储中,替代那些如果已经呈现在工作数据存储中的对应子键(步骤1018),接着有如随后所述的步骤1030。
随后,对于规则的所有三种类型,步骤1030被执行。规则引擎被查询来寻找其过滤器与被请求虚拟键名的直接子键相匹配,但是不与被请求虚拟键名自身相匹配的规则集合(步骤1030)。对于集合中的每一个规则,名字与规则中名字相匹配的虚拟子键的存在性被确定。如果子键具有正面的存在性,其被加入到工作数据存储中,替代已经在这里存在的相同名字的任意子键。如果子键具有负面的存在性,则在工作数据存储中与子键相对应的条目(如果存在的话)被删除(步骤1032)。最后,构建的枚举此时被从工作数据存储返回给请求者(步骤1020)。
还是参考图10,并且现在更加细致,为了枚举键,其首先被以枚举的请求被打开(步骤1001)。以枚举访问打开此键的请求包括在此隔离环境中被处理为虚拟名的此键的名。一个完全虚拟化的键打开是由如节4.2.1所述完成的。如果虚拟化的打开操作失败,错误被返回给请求者(步骤1040)。如果虚拟化的打开操作成功,对应于此虚拟键的文字的键的句柄被返回给请求者。随后,枚举在步骤1001中打开的注册键的请求被接收或者截取(步骤1002)。打开的文字的注册键可以是在用户范围,应用隔离范围,系统范围,或者一些适用的隔离子范围内。在有些实施例中,此枚举请求被替代操作系统的功能或者用于枚举注册键功能的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取枚举请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数执行在用户模式中的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数执行在核模式中的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地注册键的请求的调度中。在其他的实施例中,概念性地相似于文件系统过滤器驱动器设备的注册过滤器驱动器设备可以由操作系统提供。在本领域中的新手可以建立操作系统将完成注册操作的注册过滤器驱动器,从而,提供截取注册操作请求的机制。在那些单独的操作系统函数被提供于注册键函数的每一个类型的实施例,每一个函数可以被单独地钩取。或者,可以提供单独的钩取函数,截取针对注册键函数的多种类型的建立或者打开的调用。
枚举请求包括文字的键句柄。与此句柄相关联的虚拟键名通过查询操作系统寻找与此句柄相关联的文字的名来被确定。规则引擎被参考来确定与此文字的名相关联的虚拟名(如果存在的话)。
确定注册键操作如何被处理的(步骤1004)规则通过参考规则引擎而被获得。在有些实施例中,将被枚举的虚拟注册键的虚拟键名被用于在规则引擎中定位应用于此请求的规则。在这些实施例中的特别的一些中,在规则引擎中可以存在针对特定虚拟键的多个规则,并且在这些实施例中的一些中,具有与虚拟键名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中规则引擎被提供作为关系数据库。在其他实施例中,规则引擎可以是树结构数据库,hash表,或者平坦文件数据库。在有些实施例中,与此请求中虚拟键句柄相对应的虚拟键名被用为规则引擎中的索引,此索引定位应用于此请求的一个或者多个规则。在有些实施例中,进程标识符被用于在规则引擎中定位应用于此请求的规则(如果存在的话)。与此请求相关联的规则可以忽略此请求,重定向此请求,或者隔离从请求。规则查询可以以一系列的决定的形式发生或者规则查询可以以单一数据库事务的形式发生。
如果规则没有指定动作为“隔离”(步骤1006),但是指定为“忽略”或者指定为“重定向”,使用文字的键的句柄,枚举文字的键的请求被传送给操作系统,并且枚举结果(如果有的话),被存储在工作设计存储中(步骤1012),接着有如随后所述的步骤1030。
在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成。在其他的实施例中,概念性地相似于文件系统过滤器驱动器设备的注册过滤器驱动器设备可以由操作系统提供。在这些实施例中,对文字的注册键的枚举是通过给注册过滤器管理器发出信号,以正常模式处理未被修改的请求,对枚举此键的原始请求进行响应而完成。
如果规则动作在步骤1010是“隔离”,则系统范围被枚举。为了完成这点,候选键被识别为与将被枚举的虚拟键相对应的系统范围的键。候选键被进行枚举,枚举的结果被存储在工作数据存储中(步骤1014)。在有些实施例中,工作数据存储由存储单元组成。在其他实施例中,工作数据存储包括数据库或者文件,或者固态存储单元,或持久的数据存储。
其次,候选键被识别为虚拟键的应用范围内的实例,候选键存在性的范畴被确定(步骤1015)。如果候选键具有“负面的存在性”,也就是,其在此范围内的祖先之一被标记为已删除,则在此范围内,其被已知是被删除的,并且,这个由清空工作数据存储来进行指示(步骤1042)。
在有些实施例中,候选注册键是与指示此候选注册键已经被删除的元数据相关联的。在有些实施例中,与注册键相关联的元数据可以被存储于由此键具有的不同的值,将此键的存在性从注册API的普通应用用途中隐去。在有些实施例中,少量的关于注册键的元数据可以被直接存储在文字的键名中,诸如,通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟名检测由于元数据指示器的存在,造成的文字的键名的可能的变种的方式访问文件的请求,和恢复键自身的名字的请求被钩取或者截取,旨在针对文字的名字作出响应。在其他实施例中,元数据指示器可以被编码为子键名或者注册值名,而不是键名本身。在另一些实施例中,注册键系统可以直接提供用于存储每一个键的一些第三方元数据。在有些实施例中,元数据被存储在数据库或者其他与注册数据库分离的库中。在有些实施例中,分离的子范围可以被用于存储被标记为已删除的键。在子范围内键的存在性指示此键被标识为已删除。
如果在步骤1015中,作为更换,候选键不具有负面的存在性,候选键被进行枚举,并且获得的任意枚举结果被融入到工作数据存储中。特别地,对于此枚举中的每一个子键,此存在性的范畴被确定。具有负面的存在性的子键被从工作数据存储中除去,并且具有正面的存在性的子键,也就是,那些存在并且没有被标识为占位符且没有被标识为已删除的子键,被加入到工作数据存储中,如果其已经存在与工作数据存储中,替代对应的子键(步骤1016)。
在两个例子中的任一个中,候选键被识别为虚拟键的用户范围内的实例,并且候选键的存在性的范畴被确定(步骤1017)。如果候选键具有“负面的存在性”,也就是,其在此范围内的祖先之一被标记为已删除,则在此范围内,其是已知被删除的,并且这通过清空工作数据存储来进行指示(步骤1044)。如果作为更换,候选键不具有负面的存在性,候选键被枚举,并且获得的任意枚举结果被合并到工作数据存储中。特别地,对于枚举中的每一个子键,其存在性的范畴被确定。具有负面的存在性的子键被从工作数据存储中删除,具有正面的存在性的子键,也就是,那些存在并且没有被标记为占位符和没有被标记为已删除的子键,被加入到工作数据存储中,替代那些如果已经出现在工作数据存储中的对应子键(步骤1018),接着有如随后所述的步骤1030。
其次,对于规则的所有三种类型,步骤1030被执行。规则引擎被查询来寻找其过滤器与被请求虚拟键名的直接子键相匹配,但是不与被请求虚拟键名自身相匹配的规则集合(步骤1030)。对于集合中的每一个规则,名字与规则中名字相匹配的虚拟子键的存在性被确定在有些实施例中,这通过检测合适的隔离范围和与虚拟子键相关联的元数据来被确定。在其他实施例中,这个由试图打开此键来被确定。如果打开操作成功,虚拟子键具有正面的存在性。如果打开失败,且指示虚拟子键不存在,虚拟子键具有负面的存在性。
如果子键具有正面的存在性,其被加入到工作数据存储中,替代已经在这里存在的相同名字的任意子键。如果子键具有负面的存在性,则在工作数据存储中与子键相对应的条目(如果存在的话)被删除(步骤1032)。最后,构建的枚举此时被从工作数据存储返回给请求者(步骤1020)。
本领域中的普通技术人员将了解上述的层状的枚举操作能够被微小的改动应用于包括多个个例子范围的单个隔离范围的枚举操作。工作数据存储被创建,后继的子范围被枚举并且结果被融入到工作数据存储中,来形成隔离范围的总和的枚举。
4.2.4注册创建操作
现在参考图11,并且在简要的概览中,描述了在隔离环境中,创建一个键所采用的步骤的一个实施例。一个创建键的请求被接收或者截取(步骤1102)。此请求包括一个键名,其被此隔离环境处理为虚拟键名。一个使用完全的虚拟化打开被请求键的尝试被提出,其使用适用的规则,也就是,使用如在节4.2.1(步骤1104)中所述的,合适的用户和应用隔离范围。如果访问被拒绝(步骤1106),一个访问被拒绝的错误被返回给请求者(步骤1109)。如果访问被允许(步骤1106),并且被请求的键被成功地打开(步骤1110),则被请求的键被返回给请求者(步骤1112)。但是如果访问被允许(步骤1106),但是被请求的键没有被成功地打开(步骤1110),则如果被请求的键的父键也不存在(步骤1114),一个与请求语义相适合的错误被发出给请求者(步骤1116)。如果另一方面,被请求键的父键,使用合适的用户和应用范围,在完全的虚拟化视图中被找到(步骤1114),此时,确定键操作如何被处理的规则被确定(步骤1118)。如果规则动作是“重定向”或“忽略”(步骤1120),虚拟键名依照此规则,被直接映射到文字的键名。特定地,如果规则动作是“隔离”,文字的键名被识别为和虚拟键名完全一样。如果,作为更换,规则动作是“重定向”,文字的键名如在规则中指定的那样,从虚拟键名来确定。此时,创建文字的键的请求被传送给操作系统,并且结果被返回给请求者(步骤1124)。如果在另一方面,规则动作在步骤1120中被确定为是“隔离”,则文字的键名被识别为在用户隔离范围内虚拟键名的实例。如果文字的键已经存在,但是与指示其是一个占位符或者其已被删除的元数据相关联,则相关联的元数据被修改来删除那些指示,并且确认此文件是空的。在这两种情况中的每一个中,打开文字的键的请求被传送给操作系统(步骤1126)。如果文字的键被成功地打开(步骤1128),文字的键被返回给请求者(步骤1130)。如果在另外一个方面,在步骤1128中,被请求的键打开失败,文字的键的每一个祖先的占位符目前不存在于用户隔离范围内(步骤1132),并且使用文字的名字创建文字的键的请求被传送给操作系统,结果被返回给请求者(步骤1134)。
还是参考图11,并且现在更加细致,创建键的请求被接收或者截取(步骤1102)。在有些实施例中,此请求被替代操作系统的函数或者用于创建键函数的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数执行在用户模式中的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数执行在核模式中的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的请求的调度中。对于对每一个文件操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型文件的创建或者打开的调用。
此请求包括一个键名,此键名在隔离环境中被处理为虚拟键名。在有些实施例中,虚拟键名可以被表示为指向父键的句柄和到其后继键的相对路径名的组合。父键句柄是与文字的键名相关联的,文字的键名其自身与虚拟键名相关联。请求者试图使用完全的虚拟化,使用适用的规则,也就是,使用如在节4.2.1(步骤1004)中所述的,合适的用户和应用隔离范围,打开虚拟键。如果在完全虚拟化打开操作中,访问被拒绝(步骤1106),一个访问被拒绝的错误被返回给请求者(步骤1109)。如果访问被允许(步骤1106),并且被请求的虚拟键被成功地打开(步骤1110),则对应的文字的键被返回给请求者(步骤1112)。但是,如果访问被允许(步骤1106),但是虚拟键没有被成功地打开(步骤1110),则虚拟键已经被确定为不存在。如果被请求的虚拟键的虚拟父键也不存在,如在节4.2.1(步骤1114)中所述的流程所确定的那样,一个与请求语义相适合的错误被发出给请求者(步骤1116)。如果另一方面,被请求虚拟键的虚拟父键,使用合适的用户和应用范围,在完全的虚拟化视图中被找到(步骤1114),此时,通过参考规则引擎,确定创建操作如何被处理的规则被定位(步骤1118)。在有些实施例中,规则引擎可以被提供为关系数据库。在其他实施例中,规则引擎可以是树状结构的数据库,hash表,或者平坦文件数据库。在有些实施例中,为此被请求的键所提供的虚拟键名被用于在规则引擎中定位应用此请求的规则。在这些实施例中的特殊的一些中,多个规则可以存在于针对特定键的规则引擎中,并且,在这些实施例中的一些中,具有与虚拟键名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中,进程标识符被用于在规则引擎中定位应用于此请求的(如果存在的话)规则。与此请求相关联的规则可以忽略此请求,重定向此请求,或者隔离从请求。尽管在图11中显示为单一数据库事务或者在文件中的单一查询,规则查询可以通过一系列的规则查询来完成。
如果规则动作是“重定向”或者“忽略”(步骤1120),依照此规则,虚拟键名被直接映射为文字的键名(步骤1124)。如果规则动作是“重定向”(步骤1120),文字的键名由此规则指定的虚拟键名而被确定(步骤1124)。如果规则动作是“忽略”(步骤1120),文字的键名被确定为与虚拟键名相同(步骤1124)。如果“忽略”或者规则动作是“重定向”,使用被确定的文字的键名创建文字的键的请求被传送给操作系统,并且来自操作系统的结果被返回给请求者(步骤1124)。例如,创建虚拟键名为“key_1”的请求可以导致对文字的键名为“Different_key_1”的键的创建。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成(步骤1124)。在其他的实施例中,概念性地相似于文件系统过滤器驱动器设备的注册过滤器驱动器设备可以由操作系统提供。在这些实施例中,对文字的注册键的创建,可以通过给注册过滤器管理器发出信号,使用被确定的文字的键名,重新解析此请求,对创建虚拟键的原始请求的响应来完成。
如果规则动作在步骤1120中被确定为不是“忽略”或者“重定向”而是“隔离”,则文字的键名被识别为和用户隔离范围内虚拟键名完全一样。如果文字的键名已经存在,但是,其是与指示其为占位符或者其被删除的元数据相关联的,则此相关联的元数据被进行修改,删除这些指示,并且确认此键是空的。
在有些实施例中,与注册键相关的元数据可以被存储于由此键具有的不同的值,将此键的存在性从注册API的普通应用用途中隐去。在有些实施例中,少量的关于注册键的元数据可以被直接存储在文字的键名中,诸如,通过给虚拟名添加元数据指示器的后缀,其中元数据指示器是唯一地与特定元数据状态相关联的字符串。元数据指示器可以指示或者编码一个或者多个元数据位。通过虚拟名检测由于元数据指示器的存在,造成的文字的键名的可能的变种的方式访问文件的请求,和恢复键自身的名字的请求被钩取或者截取,旨在针对文字的名字作出响应。在其他实施例中,元数据指示器可以被编码为子键名或者注册值名,而不是键名本身。在另一些实施例中,注册键系统可以直接提供用于存储每一个键的一些第三方元数据。在有些实施例中,元数据被存储在数据库或者其他与注册数据库分离的库中。在有些实施例中,分离的子范围可以被用于存储被标记为已删除的键。在子范围内键的存在性指示此键被标识为已删除。
在这些实施例中特定的一些中,被删除的键的列表或者键系统元素可以被维持并且被参考来最优化对这些删除的键的检查过程。在这些实施例中,如果被删除的键被重新创建,则键名可以被从此被删除的键的列表中除去。在这些实施例中的另一些中,如果此列表超过某大小之后,键名可以从此列表中被删除。
在这两种情况中的任一个中,打开用户范围内的文字的键的请求被传送给操作系统(步骤1126)。在有些实施例中,规则可以指定与虚拟键相对应的文字的键将在范围内被创建的文字的文件,除了用户隔离范围,还有诸如应用隔离范围,系统范围,用户隔离子范围或者应用隔离子范围。
如果文字的键被成功地打开(步骤1128),文字的键被返回给请求者(步骤1130)。如果在另外一个方面,在步骤1128中,被请求的键打开失败,为在当前不存在于用户隔离范围内的,文字的键的每一个祖先创建占位符(步骤1132),并且使用文字的名字创建文字的键的请求被传送给操作系统,结果被返回给请求者(步骤1134)。
此实施例是用于具有API的操作系统或者仅支持每一个调用一个创建层级的设备。延展到每一个调用多个层级的方法对本领域中的技术人员来说是显而易见的。
4.3命名的对象虚拟化操作
系统范围内的资源的另一个类别,其可以使用上述技术被虚拟化,是被命名的对象,其包括信号量,互斥体,变异体,可等的计时器,事件,任务对象,节,命名的管道和邮槽(一种由系统维护的虚拟档案)。这些对象的特点是它们典型地仅在创建它们的进程所持续的时间内存在。用于这些对象的命名空间可以是在整个(全局范围)计算机或者仅仅在单独的用户会话中(会话范围内)是有效的。
现在参考图12,并且在简要的概览中,创建或者打开一个命名的对象的请求被接收或者截取到(步骤1202)。此请求包括一个对象名,其被此隔离环境处理为虚拟名。如何处理此请求的规则被确定(步骤1204)。如果规则指示此请求将被忽略(步骤1206),则文字的对象名被确定为虚拟名(步骤1207),并且创建或者打开此文字的对象的请求被发送给操作系统(步骤1214)。如果被确定的规则指示将不忽略此请求,但是指示作为更换,此请求将被重定向(步骤1208),则文字的对象名被由重定向规则指定的虚拟名而确定(步骤1210),并且创建或者打开此文字的对象的请求被发送给操作系统(步骤1214)。如果此规则不指示此请求并将被重定向(步骤1208),但是作为更换,此请求将被隔离,则文字的对象名被由隔离规则指定的虚拟名而确定(步骤1212),并且创建或者打开此文字的对象的请求被发送给操作系统(步骤1214)。作为对发出的创建或者打开命令响应的,从操作系统返回的文字的对象的句柄被返回给请求创建或者打开此虚拟对象的程序(步骤1216)。
还是参考图12,并且现在更加细致,来自创建或者打开命名的对象的进程的请求被截取(步骤1202)。此命名的对象可以是会话范围内的,或者其可以是在全局范围内的。在有些实施例中,此请求被替代操作系统的函数或者用于创建文件函数的函数所钩取。在另一个实施例中,一个用于钩取的动态链接库被用于截取请求。钩取函数可以被在用户模式或者在核模式中被执行。对于那些钩取函数执行在用户模式中的实施例,当进程被创建时,钩取函数可以被载入到进程的地址空间中。对于那些钩取函数执行在核模式中的实施例,钩取函数可以与操作系统资源相关联,此资源被用于对本地文件的请求的调度中。此创建或者打开命名的对象的请求可以参考系统范围内资源的广泛类型中的任意一种,这些系统范围内的资源被用于进程间的通信和同步,并且其被识别为唯一的标识符,包括信号量,互斥体,变异体,可等的计时器,文件映射对象,事件,任务对象,节,命名的管道和邮槽。对于对每一个文件操作类型提供单独的操作系统函数的实施例,每一个函数可以被分别地钩取。或者,单个的钩取函数可以被提供来截取对多个类型文件的创建或者打开的调用。
被截取的请求包括一个对象名,此对象名在隔离环境中被处理为虚拟名。通过参考规则引擎,如何处理针对此对象的请求的规则被确定(步骤1204)。在有些实施例中,规则引擎可以被提供为关系数据库。在其他的实施例中,规则引擎可以是树状结构的数据库,hash表,或者平坦文件数据库。在有些实施例中,提供给被请求的对象的虚拟名被用于在规则引擎中,定位应用于此请求的规则。在这些实施例中的特别的一些中,针对特别对象的规则引擎中可以存在多个规则,在这些实施例中,具有与虚拟名相匹配的最长前缀的规则,是被应用于此请求的规则。在有些实施例中,进程标识符被用于在规则引擎中定位应用于此请求的规则(如果存在的话)。与此请求相关联的规则可以忽略此请求,重定向此请求,或者隔离此请求。尽管显示在图12中显示为一系列的决定,查询可以以单一的数据库事务的形式发生。
如果规则指示此请求将被忽略(步骤1206),此文字的对象名被确定为虚拟名,并且创建或者打开文字的对象的请求被发送给操作系统(步骤1214)。例如,创建命名的对象名为“Object_1”的请求可以导致对实际地对象名为“Object_1”的创建。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成。
如果由对规则引擎的访问确定的规则将不忽略此请求,但是作为更换,指示其请求将被重定向(步骤1208),文字的对象名由通过重定向规则指定的虚拟名所确定(步骤1210),并且,针对此文字的对象的创建或者打开的请求被发送给操作系统(步骤1214)。例如,创建或者打开命名的对象名为“Object_1”的请求可以导致对实际地对象名为“Different_Object_1”的创建。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成。
如果此规则不指示为此请求将被重定向(步骤1208),但是作为更换,指示此请求将被隔离,则此文字的对象名由隔离规则指定的虚拟名所确定(步骤1212),并且,针对此文字的对象的创建或者打开的命令被发送给操作系统(步骤1214)。例如,创建或者打开命名的对象名为“Object_1”的请求可以导致对实际地对象名为“Isolated_Object_1”的创建。在一个实施例中,这通过调用被钩取函数的原始版本,并且传递形成的文字的名字给此函数作为一个参数来完成。
为隔离一个被请求的系统对象而形成的文字的名可以是基于接收到的虚拟名和范围专用的标识符的。范围专用的标识符可以是与应用隔离范围,用户隔离范围,会话隔离范围,或者三者的某种组合相关联的。范围专用的标识符被用于“损毁”在此请求中接收到的虚拟名。例如,针对命名的对象“Object_1”的请求被针对应用隔离范围是隔离的,此范围的相关联的标识符是“SA1”,文字的名可以是“Isolated_AppScope_SA1_Object_1”。如下的表识别了在会话隔离范围或用户隔离范围,和应用隔离范围内,对象的损坏的名的效果。范围组合所进行的损坏与限制列写在表中。
指定会话标识符 指定用户标识符 指定应用标识符
全局对象 针对所有执行在用户会话的上下文中的被隔离的应用可用的对象 针对所有代表用户执行的被隔离的应用可用的对象 针对所有在应用隔离范围内执行的被隔离的应用可用的对象
会话对象 针对所有执行在用户会话的上下文中的被隔离的应用可用的对象 针对所有代表用户在会话中执行的被隔离的应用可用的对象 针对所有在会话内的应用隔离范围内执行的被隔离的应用可用的对象
对于操作系统是操作系统的微软Windows家族中的一员的实施例,对象范围可以通过切换与此对象相关联的全局/局域名字前缀来进行修改,此对象针对与隔离的应用,具有与将对象名与指定会话的标识符进行混淆的相同效果。但是,切换与全局/局域名字前缀也影响针对与非隔离的应用的对象范围。
从操作系统返回的文字的对象的句柄,作为对在步骤1214发出的指令的响应,来建立或者打开对象,被返回给请求创建或者打开虚拟对象的程序(步骤1216)。
4.4窗口名虚拟化
可以使用上述技术进行虚拟化的,系统范围的资源的其他类,是窗口名或者窗口类名。图像软件应用使用程控的窗口名或者其窗口类作为识别的方式,如果应用程序已经在运行并且用于同步的其他形式。现在参考图13,并且在简要的概览中,关于窗口名或者窗口类的请求被接收或者截取(步骤1302)。此请求可以Win32 API调用的方式或者以Windows消息的方式。这两种类型的请求均被处理。那些包括,或者请求取回,窗口名和/或者窗口类名被隔离环境处理为虚拟名。如果请求是重新取回窗口名或者有句柄识别的针对窗口的窗口类(步骤1304),窗口映射表被参考来确定关于此窗口的句柄和被请求的信息是否已知(步骤1306)。如果是已知的,则来自窗口映射表的被请求的信息被返回给请求者(步骤1308)。如果不是已知的,此请求被传送给操作系统(步骤1310),并且结果返回给请求者(步骤1314)。如果在步骤1314中,此请求提供窗口名或者窗口类,此请求被检测来确定其是否指定有操作系统定一定的窗口的类中的一个(步骤1320)。如果它指定了,此请求被发给操作系统,并且来自操作系统的结果被返回给请求者(步骤1322)。如果此请求不被指定为有操作系统定义的窗口类中的一个,则文字的类名被基于虚拟类名和规则进行确定(步骤1324),并且文字的窗口名基于虚拟窗口名和规则进行确定(步骤1326)。此请求此时使用文字的窗口和文字的类名被传送给操作系统(步骤1328)。如果文字的窗口名或者文字的窗口类名之一在步骤1324和1326中被确定,与对应的虚拟名不相同,则针对此窗口句柄的窗口映射表条目被更新,来记录提供在此请求中的虚拟窗口名或者虚拟类名(步骤1330)。如果来自操作系统的响应包括本地窗口名或者本地类的识别,那些被以提供在请求中的虚拟窗口名或者虚拟类名所替换的(步骤1312)和此结果被返回给请求者(步骤1314)。
还是参考图13,并且更加细致,关于窗口名或者窗口类的请求被接收或者截取(步骤1302)。包括或者请求获取窗口名和/或窗口类名的这些请求被隔离环境处理为虚拟名。
如果请求是为由句柄识别的窗口获取窗口名或者窗口类,则窗口映射表被参考来确定是否此句柄和与此窗口相关的被请求的信息是已知的(步骤1306)。在有些实施例中,除了映射表之外,附加的数据使用由操作系统提供的设备,被存储给每一个窗口和窗口类。
如果是已知的,来自窗口映射表的被请求的信息被返回给请求者(步骤1308)。如果不是,此请求被传送给操作系统(步骤1310),并且结果返回给请求者(步骤1314)。
如果在步骤1304中,此请求提供一个窗口名或者窗口类,此请求被检测来确定其是否指定由操作系统定义的窗口类的一个(步骤1320)。如果是,则此请求被传送给操作系统,并且从操作系统返回的结果被返回给请求者(步骤1322)。
如果此请求不指定由操作系统定义的窗口类中的一个,则文字的类名基于虚拟类名和规则被确定(步骤1324),并且文字的窗口名基于虚拟窗口名和规则被确定(步骤1326)。此请求此时使用文字的窗口和文字的类名,被传送给操作系统(步骤1328)。在有些实施例中,窗口名或者窗口类名可以是原子,而不是字符串文字。典型地,应用将字符串放置在原子表中,并且接收一个16位的整数,称为原子,其能够被用来访问此字符串。
如果文字的窗口名或者文字的窗口类名的任一个在步骤1324和1326中被确定,与对应的虚拟名不相同,则针对此窗口句柄的窗口映射表条目被更新,来记录提供在此请求中的虚拟窗口名或者虚拟类名(步骤1330)。
如果来自操作系统的响应包括本地窗口名或者本地类的识别,那些被以提供在请求中的虚拟窗口名或者虚拟类名所替换的(步骤1312)和此结果被返回给请求者(步骤1314)。
现在参考图13A,文字的窗口名或者窗口类名被如这里所示的方式而确定。规则引擎被参考来确定应用于此请求的规则(步骤1352)。如果规则动作是“忽略”(步骤1354),则文字名与虚拟名一样(步骤1356)。但是,如果规则动作不是“忽略”而是“重定向”,(步骤1358),则文字的名是由重定向规则指定的虚拟名所确定的(步骤1360)。但是,如果规则动作不是“重定向”,而是“隔离”,则文字的名是由使用范围指定的标识符的虚拟名所确定的(步骤1362)。
在有些实施例中,特别的范围指定的标识符被指定在规则中。在其他的实施例中,使用的范围指定的标识符是与应用隔离范围相关联的中的一个,此应用隔离范围与请求的进程相关联。这个允许窗口或者窗口类被与相同的应用隔离范围相关联的其他应用所使用。在诸如操作系统的微软视窗家族中许多的操作系统中,其中,窗口名和类已经在会话中被隔离,这意味着,只有执行在与相同应用隔离范围相关联的相同的会话中的应用才能够使用此窗口名或类。
在微软视窗操作系统家族的一些中,窗口名被用为在标题栏中窗口的标题。令人满意的是处理非客户区域描绘窗口消息,来确保此现实在窗口标题栏中的窗口标题反映虚拟名,而不是针对特定窗口的文字的名。当一个非客户区域描绘消息被截取,与此窗口相关联的虚拟名,如果存在的话,被从映射表获取。如果虚拟名被获取,非客户区域使用虚拟名作为窗口标题被绘制,并且,这指示此请求消息已经被处理。如果没有虚拟名被获取,此请求被指示为没有被处理,将传送此请求给使用窗口的文字的名,绘制标题栏的原始函数。
4.5进程外COM服务器虚拟化
软件组件技术,诸如COM,COBRA,.NET和其他允许软件组件作为离散的单元,被开发,配置,注册,发现,激活,或者实例化并且应用。在最多的组件模型这,组件可以执行在相同计算机中的,调用者的进程或者单独的进程中,或者是完全分离的计算机中,尽管有些组件可以仅支持这些情况的子集合。
一个或者更多的唯一的标识符识标识这些组件。典型地组件基础架构提供服务或者精灵程序代理激活请求。希望使用组件开始的软件进程传送请求给代理程序,来激活由组件标识符指定的组件。代理程序激活被请求组件,如果可能的话,并且返回给被激活的实例一个参考。在这些组件基础架构中的一些中,相同组件多个版本可以不是共存的,因为组件标识符在版本变更时,保持相同。
在微软视窗操作系统家族成员中的一些提供称为COM的组件基础架构。COM组件(“COM服务器”)被称为类标识符(CLSID)的GUID所识别,并且每一个组件提供一个或者多个接口,每一个接口具有其自己唯一的接口标识符(UIID)。COM服务控制管理器(CSCM)是用于进程外激活请求的代理程序,并且它提供允许调用者通过CLSID请求激活COM服务器的接口。尽管随后的描述将以COM服务器和COM客户端的术语进行短语表示,应该被在此领域中的普通技术人员所理解,其应用于COBRA,.NET和其他提供软件组件动态激活的软件基础架构。
当COM组件被安装到计算机上时,它们注册它们的CLSID和因发起COM服务器的新实例而由CSCM所需的信息于注册数据库中熟知的部分中。对于进程外的COM服务器,这个可以包括路径和可执行来运行的命令行参数。相同的COM服务器的多个版本共享相同的CLSID,因此,在每次,仅仅一个版本能够被按照在计算机上。
在某些实施例中,应用通过调用COM API例示COM服务器(例如,CoCreateInstance()或者CoCreateInstanceEx())。此调用的参数指定所要的激活上下文:进程内;在相同的计算机上进程外;在远程计算机上进程外;或者允许COM子系统确定使用这三个情况中的哪个。如果确定一个进程外激活被请求,包括CLSID的此请求被传送给CSCM。CSCM使用注册数据库定位在发起将COM服务器当作可执行的主机所需要的路径和参数。当可执行的指令被发起,则其注册所有的COM服务器的所有的CLSID,其支持使用COM API CoRegisterClassObject()的CSCM。如果被请求的CLSID是被注册的,CSCM返回一个对那个COM服务器的参考给调用者。所有随后在COM客户端和COM服务器之间的交互独立于CSCM而发生。
前述的隔离环境200允许多个具有相同的CLSID的COM服务器的实例被安装在计算机上,每一个在不同的隔离范围(不多于可以是系统范围中的一个)。但是,独自这个将不能够使得COM服务器对于COM客户端可用。
图14描述了虚拟化访问COM服务器所采取的步骤的一个实施例。在简单的概览中,一个新的CLSID,此后称为隔离的CLSID(或者ICLSID)被为每一个进程外COM服务器而创建,此服务器被发起到隔离范围(步骤1402)。通过定义,这是CLSID,并且因此必须在所有其他的CLSID中是唯一的,换句话说,其必须具有GUID的属性。映射表被创建,其将对儿(CLSID,应用隔离范围)映射为ICLSID。一个COM服务器注册条目为描述如何发起COM服务器的ICLSID被创建,具有,启动COM服务器可执行于合适的应用隔离范围内的发起参数(步骤1404)。由COM客户端调用的COM API诸如CoCreateInstance()和CoCreateInstanceEx()被钩取或者截取(步骤1406)。如果确定(a)请求能够由进程内COM服务器或者(b)COM客户端和COM服务器两者不与任意的隔离范围相关联,则此请求不被修改地传送给原始的COMAPI并且,结果被返回给调用者(步骤1408)。用于使用的COM服务器还是的实例被识别(步骤1410)。如果此被选策的COM服务器实例是在应用隔离环境的,其ICLSID被使用以上略述的数据结构所确定。否则,在请求中的CLSID被使用(步骤1412)。原始的CoCreateInstance()和CoCreateInstanceEx()函数和如果在步骤1412中被识别的ICLSID一起,被调用。这个将此求传送给CSCM(步骤1414)。CSCM找到并且通过在注册中查找被请求的CLSID确定发起参数,在正常方式中发起可执行的COM服务器。如果一个ICLSID被请求,此如在步骤1404中描述的ICLSID系统范围注册条目被找到,并且COM服务器被发起在何时的应用隔离范围内(步骤1416)。被发起的COM可执行地与其支持的COM服务器的CLSID一起调用被钩取的CoRegisterClassObject()API,并且这些被翻译为合适的ICLSID,它们被传送给原始的CoRegisterClassObject()API(步骤1418)。当CSCM接收到具有所期望的ICLSID的,来自CoRegisterClassObject()的调用,其返回一个对COM服务器实例的参考给调用者(步骤1420)。
还是参考图14,并且更加细致,为每一个进程外COM服务器创建ICLSID,此服务器是被发起在隔离范围内的(步骤1402)。在有些实施例中,ICLSID在COM服务器的按照过程中别创建。在其他实施例中,ICLSID在安装后立刻被创建。在另一些实施例中,ICLSID在COM服务器被发起在隔离范围之前被创建。在所有的这些实施例中,ICLSID可以通过钩取或者截取创建或者查询在系统注册数据库中的CLSID条目的系统调用而被创建。或者,ICLSID可以通过钩取或者截取COM API调用诸如CoCreateInstance()和CoCreateInstanceEx()创建COM服务器实例的方式被创建。或者,对注册数据库的CLSID指定的部分的改动可以在安装被实施后被发现。
映射表被创建,其将对儿(CLSID,应用隔离范围)映射为ICLSID,和针对COM服务器合适的注册条目一起,此服务器具有描述如何发起COM服务器的ICLSID,具有在合适的应用隔离范围内启动COM服务器可执行的,发起参数(步骤1404)。在很多实施例中,这个表被保存在持久的内存元件中,诸如硬盘驱动器或者固态存储元件。在其他实施例中,此表可以被存储在注册中,在平坦文件中,在数据库或者一个可变的存储元件中。在另一些实施例中,此表可以在注册数据库的COM指定部分的全部中进行分布,例如通过将指定给此目的的新的子键加到由CLSID识别的每一个合适的COM服务器条目。在此表中的条目可以在安装中,或者按照后,通过钩取或者截取在此注册数据库中创建CLSID条目的调用或者观察在安装进行后注册数据库的CLSID指定部分的改变,或者通过钩取或截取诸如创建COM服务器实例的CoCreateInstance()和CoCreateInstanceEx(),而立刻被创建。COM服务器按照到指定的隔离范围可以被持久的记录下。或者将特定的COM服务器和隔离范围映射为ICLSID的映射,可以被动态的创建并且被作为在非持久数据库或者注册数据库中的一个条目被存储。
由COM客户端对COM API的调用,诸如CoCreateInstance()和CoCreateInstanceEx(),被钩取或者截取。如果确定(a)此请求能由进程内COM服务器或者(b)在系统范围内的COM客户端和COM服务器两者(步骤1407)所满足,则此请求不被修改地传送给原始的COM API并且,结果被返回给调用者(步骤1408)。
此请求不能够被进程内的COM服务器所满足,并且COM客户端或者COM服务器中的任一个不位于在系统范围内(步骤1407),则COM服务器使用的合适的实例被识别(步骤1410)。对于COM客户端执行在特定的隔离范围内的实施例,随后那些安装到系统范围内的(可能执行在客户端的应用隔离范围内),随后COM服务器被按照到其他应用隔离范围内,COM服务器被安装到新服务器可以作为COM客户端,执行在相同应用隔离范围内。这个可以通过工作区域和管理设置来进行控制,允许这个为正确执行在此模式中的COM服务器而发生,并且将其阻止在不那样作的COM服务器的之外。对于在其中COM客户端执行在系统范围内的实施例,可以给予系统范围的COM服务器优先选择,其次是跟随在其后的在隔离范围内的COM服务器。COM客户端可以在创建COM服务器实例的调用中指定使用的COM服务器。或者,配置存储可以存储对将被实例化的COM服务器识别的信息。在有些实施例中,指定的COM服务器被另外一个计算机作为主机,其可以是一个单独的,物理机器,或者虚拟机器。上述的与步骤1404相联系的映射表可以被用于来基于规则寻找适用于COM服务器的集合和(如果需要的话)计算偏好。
对于其中在另一个计算机上存在适用的COM服务器的实施例,执行在远程计算机上的服务或者精灵程序能够被查询为ICLSID所用。COM客户端钩取,如果它确定远程的COM服务器是所需的,首先查询服务或者精灵程序来确定所用的CLSID/ICLSID。在有些实施例中,由服务或者精灵程序返回的ICLSID可以基于管理员定义的配置数据,包括在规则引擎中的规则,或者内置硬件编码逻辑,而被选择或者创建。在其他实施例中,此请求可以只得那个在服务器上被使用的隔离范围。在另一些实施例中,被请求的COM服务器可以与服务器的系统范围相关联,在此例子中,与COM服务器相关联的CLSID被返回。在另一些实施例中,被请求的COM服务器可以与服务器的隔离范围中的一个相关联,在此例子中,ICLSID与COM服务器和隔离范围相关联。在有些实施例中,上述的服务或者精灵程序可以被用于支持发起局域的进程外COM服务器。
如果被选择的COM服务器实例是在局域计算机上的应用隔离环境内,其ICLSID被使用在步骤1404中相关描述的数据结构而被确定。如果,作为更换,被选择的COM服务器实例是在局域计算机上的系统范围内,在此请求中的CLSID被使用(步骤1412)。在这些实施例中的一些中,使用ICLSID的作为COM服务器的条目可以被动态的创建。
如果ICLSID被返回,其被传送给在原始的CLSID位置中原始的COM API。例如,被确定的ICLSID可以传送给原始的CoCreateInstance()和CoCreateInstanceEx()函数,其将此请求传送给CSCM(步骤1414)。对于在其中COM服务器是由另外一个计算机作主机的实施例中,CSCM将ICLSID传送给计算机作主机的COM服务器,其中,计算机的CSCM处理COM服务器的发起。
CSCM找到并且通过在注册中查找被请求的CLSID或者ICLSID,确定发起所需的参数,在正常的方式发起可执行的COM服务器。如果,ICLSID被请求,则如在步骤1404中描述的ICLSID的系统范围注册条目被找到,并且COM服务器发起在合适的应用隔离范围内(步骤1416)。
如果发起的COM服务器实例执行在应用隔离范围内(安装到那个范围或者安装到系统范围),COM服务器实例的COM API函数CoRegisterClassObject()被钩取或者截取。每一个被传送给CoRegisterClassObject()的CLSID,使用在步骤1404中定义的映射表,被映射到对应的ICLSID。原始的CoRegisterClassObject()API被使用ICLSID调用(步骤1418)。
当CSCM接收到来自具有期待的ICLSID的CoRegisterClassObject()调用的响应时,其返回COM服务器实例的参考给调用者(步骤1420)。
这个技术在当COM客户端和COM服务器执行在应用隔离范围(包括不同的范围)和系统范围内的任意组合中时,支持COM服务器执行。ICLSID指定服务器的组合(由CLSID识别的)和所需的合适的隔离范围。此客户端仅仅需要正确的ICLSID(或者原始的CLSID,如果此服务器被安装到并且执行在系统范围内)。
4.6虚拟化的文件类型关联(FTA)
文件类型关联是众所周知的用于调用应用程序的执行的图形用户界面技术。为用户呈现表示数据文件的图形图标。用户使用键盘命令或者使用定位设备,诸如鼠标和,在指示用户想要打开的文件的图标上单击或者双击,来选择数据文件。或者,在有些计算环境中,用户在命令行提示符处输入指向文件路径的命令。典型地具有与相关联的文件类型指示的文件被用于,在当打开文件时,确定所使用的应用程序。这个通常时使用将文件类型指示映射为特定应用的表所完成的。在微软的视窗操作系统的家族中的很多成员中,此映射被典型地以包括文件类型指示器和指示将被执行的应用的全路径名的元组中的形式,存储在注册数据库中,并且仅仅一个应用程序可以是与任意的特定文件类型相关联的。
在所述的隔离环境中,应用的多个版本可以被安装到或者执行在单个计算机上。因此,在这些实施例中,文件类型和相关联的应用程序之间的关系不再是一对一的关系,而是作为更换是一对多的关系。相同的问题存在于MIME附件类型中。在这些实施例中,这个问题通过在某文件类型被选中时,替换识别将要被发起的应用程序的路径名的方式进行解决。此路径名被选择工具所替换,选择工具给用户一个发起应用程序的选择。
现在参考图15,并且在简要的概略中,将文件类型关联数据写入到配置存储中的请求被截取(步骤1502)。作出此请求是否更新在配置存储中的文件类型关联信息的判断(步骤1504)。如果不更新,也就是,如果此条目已经存在,则不进行更新(步骤1506)。否则,使用在之前的节4。1。4或者4。2。4中所描述的虚拟化技术创建一个新条目,或者存在的条目被更新(步骤1508)。新的或者被更新的条目(针对合适的隔离范围而被虚拟化),将文件类型映射为选择工具,此选择工具在浏览或者编辑此文件时,允许用户在多个应用程序中进行选择所使用的那个。
还是参考图15,并且更加细致,将文件类型关联数据写入到配置存储中的请求被截取(步骤1502)。在有些实施例中,配置存储是WINDOWS的注册数据库。将文件类型关联数据写入到配置存储中的请求可以被用户模式钩取函数,核模式钩取函数,文件系统过滤器驱动器,或者迷你驱动器所截取。
作出此请求是否更新在配置存储中的文件类型关联信息的判断(步骤1504)。在一个实施例中,这个是由检测此被截取的请求是否意图对配置存储进行修改而完成的。在另一个实施例中,此请求的目的被与包括在此请求中的信息进行比较,来确定此请求是否试图修改配置存储。在配置存储是注册数据库的实施例中,修改政策的请求被截取,如之前在节4。2所描述的那样。
如果判定此请求没有更新配置存储的意图,则不进行更新(步骤1506)。在有些实施例中,判定没有对配置存储进行更新的意图,是因为被截取的请求是读请求。在其他的实施例中,这个判定可以在配置存储中的目标条目和包括在被截取的请求中的信息是相同的或者充分相同时,被作出。
但是,如果在步骤1504中,判定此请求是有更新配置存储的意图的,则在配置存储中创建一个新的条目,或者已经存在的条目被更新(步骤1508)。在有些实施例中,规则确定在哪个隔离范围中,条目被创建或者更新。在有些实施例中,在系统范围或者应用隔离范围内,新的条目被创建或者已经存在的条目被更新。在有些实施例中,在合适的用户隔离范围内,新的条目被创建或者已经存在的条目被更新。如果新的条目被创建,则其不仅识别在被截取的请求中所确定的应用程序,其列出作为当特定类型的文件被访问时,作为应用被使用的选择应用。在有些实施例中,选择工具在应用程序新的版本被安装时或者当另一个处理同样文件类型的应用被安装时,或者当应用注册或者解除注册自身处理那个特定类型文件时,自动地被更新。在有些实施例中,选择工具可以结合到自身合适的应用列表中,任意注册的应用处理维持在其他范围内(诸如系统范围,和如果选择工具在用户范围内执行时,则为应用范围)的,配置存储的部分中的相同文件类型。如果已经存在的条目被更新,并且此存在的条目已经将选择应用列为当特定文件类型的文件被使用时的应用,则有针对那个文件类型的选择所呈现的应用列表可以被更新为包括更新的应用的。如果已经存在的条目被更新,但是其没有列出选择应用,则被更新的条目被用来将选择应用列为当那个特定文件类型的文件被使用时所使用的应用。在这些实施例中,与所相关联的应用相关的信息可以被存储在相关联的配置文件中,或者在有些实施例中,作为注册数据库中的条目进行存储。
选择应用可以呈现给用户与此被选择的文件类型相关联的应用列表。此应用可以还允许用户选择用户将要使用来处理此文件的应用程序。选择应用此时在合适的范围;系统范围;应用隔离范围;或者用户隔离范围内,发起应用程序。在有些实施例中,选择工具维护这与文件类型相关联的默认的应用程序的身份。在这些实施例中,默认的应用可以被不对桌面进行访问的,或者被配置来使用默认句柄,不呈现给用户进行选择的进程所使用。
4.7进程在隔离环境之间的动态运动
本发明的附加特点是提供在不同虚拟范围之间移动正在运行的进程的工具。换句话说,由隔离环境200呈现给应用实例的本地资源的汇总视图可以在应用执行中,被改变为不同的汇总视图。这个允许已经被隔离在特定隔离范围内的进程,在此进程执行中,被“移动”到另一个隔离范围。这个对在每次仅可以执行一个实例的系统服务或者进程来说(诸如,在WINDOWS操作系统中的MSI服务),特别有用。本发明的这个特点可以也被用于允许用户顺序地工作在多个隔离范围内。
现在参考图16,并且在简要的概略中,显示了用于在一个隔离范围和第二个隔离范围之间,或者在系统范围和隔离范围之间,移动进程的进程的实施例。如此描述中使用的那样,术语“目标隔离范围”将被用于指示进程将被移动到的隔离范围,包括系统范围,并且,术语“源隔离范围”将被用于指示被移动的进程来自的隔离范围,包括系统范围。如图16中所示,并且在简要的概略中,用于将进程移动到目标隔离范围的方法包括如下步骤:确信此进程是在安全状态(步骤1602);在规则引擎中,将进程的关联从其源隔离范围改变到目标隔离范围(步骤1604);为任意的过滤器驱动器或者钩取,将进程的关联从其源隔离范围改变到目标隔离范围(步骤1606);并且允许此进程继续执行(步骤1608)。
还是参考图16,并且现在更加细致,当被移动到一个不同的隔离范围时,进程将在“安全”状态中(步骤1602)。在有些实施例中,进程被监控,来确定何时不处理请求。在这些实施例中,在没有请求被此进程进行处理时,进程被认为是针对移动来说,是在“安全”状态。在这些实施例中的一些中,一旦进程被认为是在“安全”状态中,对此进程的新请求将被延迟,直到进程被移动为止。在其他实施例中,诸如与诊断应用相关,用户界面可以被提供来触发在隔离范围内的改变。在这些实施例中,用户界面可以运行将此将被移动的进程置入“安全”状态的代码。在另一些实施例中,管理程序通过延迟针对此进程的所有引入的请求并且等待进程完成任意激活的请求的执行,可以强制此进程进入“安全”状态。
与目标隔离范围相关联的规则,如果它们在规则引擎中不是已经存在的,则它们被载入到规则引擎(步骤1603)。
进程与源隔离范围的关联在规则引擎中被改变(步骤1604)。如上所述,进程能够与任意范围相关联。该关联被规则引擎用在针对虚拟本地资源的每一个请求上,来确定应用于此请求的规则。应用实例能够通过改变在规则引擎中的合适的数据结构,来与目标隔离范围相关联。在有些实施例中,将此进程与新的隔离范围相关联的新的数据库条目被写入。在其他的实施例中,存储用于与此进程相关联的隔离范围的标识符的树状节点被重写,来识别新的隔离范围。在另一些实施例中,操作系统请求能分配给进程附加的存储,来存储与目标隔离范围或者在有些实施例中,规则的标识符相关联的规则。
进程与源隔离范围的关联在当此关联或者规则被存储在规则引擎(诸如,过滤器驱动器,核模式钩取,或者用户模式钩取)之外时,被改变的(步骤1606)。对于在进程和隔离范围规则之间的关联是基于PID而被维持的实施例,在进程PID和规则集合之间的关联被改变。对于PID不是被用于维持进程和适用的隔离规则集合之间的关联的实施例,用户模式钩取函数可以被改为访问与此目标隔离范围相关联的规则集合。对于具有针对隔离范围的规则集合的进程关联被维持在规则引擎中的实施例,可以充分地改变在上述步骤1604的规则引擎中存储的关联。
进程被允许在新的隔离范围内重新继续执行(步骤1610)。对于新的请求被延迟或者禁止被提出的实施例中,那些请求被发给进程,并且新的请求是被许可的。
在一个特别有用的特点中,上述的方法可以被用于对MSI(是由微软出产的安装打包和按照技术,并且是在微软视窗家族的操作系统中的有些中可以得到的)的虚拟化。由此用于安装的技术打包的应用被称为MSI包。具有这样技术支持的操作系统具有称为MSI服务的WINDOWS服务,其在安装MSI包时提供帮助。在系统上,有一个此服务的单独实例。意图安装MSI包的进程在它们的会话中,运行一个MSI进程,使得COM调用MSI服务。
MSI安装能够被虚拟化,来将MSI包安装到一个应用隔离环境中。概念性地,这个能够通过钩取或者截取针与MSI服务的安装会话中MSIAPI的调用而完成。互斥体能够被用于来确信在某时,只有一个安装在执行。当针对MSI API的调用需要启动一个新安装的请求被接收或者截取时,并且此调用进程时与特定的应用隔离范围相关联的,在这个调用被允许处理之前,此MSI访问被置入该隔离范围的上下文中。此安装作为MSI服务继续完成其正常的安装动作,尽管被MSI服务请求的本地资源是依照适用的隔离范围进行虚拟化的。当被检测出,安装进程结束,在MSI服务和此隔离范围之间的关联被删除。尽管上述是关于MSI的,所描述的此技术对于其他安装技术也是适用的。
                          等价物
本发明可以被提供为一个或者多个计算机可读程序,具体化在一个或者多个生产的商品上。生产的商品可以是软盘,硬盘,CD-ROM,闪存卡,PROM,RAM,ROM或者磁带。一般来说,计算机可读程序可以用任意的编程语言来实现,诸如,LISP,PERL,C,C++,PROLOG或者任意字节代码语音,诸如,JAVA。软件程序作为目标代码,可以被存储在一个或者多个生产的商品上。
进行了本发明某些实施例的描述,对于本领域中的技术人员来说,显而易见的是,包括了本发明的概念的其他实施例可以被使用。因此,本发明将不被某种实施例所限制,而是将被随后的权利要求的精神和范围所限制。

Claims (84)

1.一种由操作系统提供的,用于访问资源的方法,此方法包括如下步骤:
(a)由在第一个环境中执行的应用程序接收针对资源的请求;
(b)获取与此资源相关联的第一个标识符;
(c)确定涉及该被请求的资源和在其上发起此资源的发起环境的第二个标识符;
(d)响应于第二个标识符,将对资源的请求重定向到此资源的识别的实例;并且
(e)使用位于在此资源所驻留的环境中的、此资源的实例来对针对此资源的请求作出响应。
2.权利要求1的方法,其中,步骤(a)进一步包括由应用程序使用COM库。
3.权利要求1的方法,其中,步骤(a)包括通过在环境中执行的应用程序,对资源发出请求。
4.权利要求1的方法,其中,步骤(e)进一步包括例示进程外COM服务器。
5.权利要求1的方法,其中,步骤(b)进一步包括截取与此资源相关联的第一个标识符。
6.权利要求1的方法,其中,步骤(b)进一步包括获取第一个标识符作为对被钩取的COM API的响应。
7.权利要求1的方法,其中,步骤(b)进一步包括钩取CoCreateInstance COM API。
8.权利要求1的方法,其中,步骤(b)进一步包括钩取CoCreateInstanceEx COM API。
9.权利要求1的方法,其中,步骤(b)进一步包括钩取CoGetClassObject COM API。
10.权利要求1的方法,其中,步骤(b)进一步包括钩取CoGetInstanceFromFile COM API。
11.权利要求1的方法,其中,步骤(b)进一步包括钩取CoGetInstanceFromIStorage COM API。
12.权利要求1的方法,进一步包括钩取CoRegisterClassObjectCOM API。
13.权利要求1的方法,其中,步骤(c)进一步包括执行确定性的映射算法。
14.权利要求1的方法,其中,步骤(c)进一步包括参考一图。
15.权利要求1的方法,其中,步骤(c)进一步包括参考与环境相关联的图。
16.权利要求1的方法,其中,步骤(c)进一步包括参考与应用隔离环境相关联的图。
17.权利要求1的方法,其中,步骤(c)进一步包括存储在图中的第二个标识符的静止拷贝。
18.权利要求1的方法,其中,步骤(c)进一步包括接收第二个标识符,第二个标识符与此发起环境相关联。
19.权利要求1的方法,其中,步骤(c)进一步包括从一图接收第二个标识符,第二个标识符识别在此资源驻留的环境中,被请求的资源的实例。
20.权利要求1的方法,进一步包括识别此资源驻留的第二环境的步骤。
21.权利要求1的方法,其中,步骤(e)进一步包括执行此资源。
22.权利要求1的方法,其中,步骤(e)进一步包括通过此资源的实例,对与此应用程序相关联的显示区域进行修改。
23.一种由操作系统提供的,用于访问被隔离的资源的系统,包括:
资源;
在环境中执行的应用程序,接收针对此资源的请求;
在与资源相关联的第一个标识符和与此资源相关联的第二个标识符之间的关联;
第一个进程从该关联接收第二个标识符,作为对第一个标识符的响应;
识别此资源实例的第二个进程,和在其中发起此资源的环境;和
第三个进程,将对此资源的请求重定向到此资源的实例,作为对第二个标识符的响应。
24.权利要求23的系统,其中,第一个进程在此环境中执行。
25.权利要求23的系统,其中,第一个进程在此环境外执行。
26.权利要求23的系统,其中,第一个进程截取第一个标识符。
27.权利要求23的系统,其中,第一个进程进一步包括从所述关联接收静态生成的第二个标识符。
28.权利要求23的系统,其中,第一个进程进一步包括从所述关联接收动态生成的第二个标识符。
29.权利要求23的系统,其中,第一个进程进一步包括将第二个标识符传送到第二个进程。
30.权利要求23的系统,其中,第一个进程进一步包括将第二个标识符传送到第三个进程。
31.权利要求23的系统,其中,第二个进程在此环境中执行。
32.权利要求23的系统,其中,第二个进程在此环境外执行。
33.权利要求23的系统,其中,第三个进程在此环境中执行。
34.权利要求23的系统,其中,第三个进程在此环境外执行。
35.权利要求23的系统,其中,此资源进一步包括进程外COM服务器。
36.权利要求23的系统,其中,此资源进一步包括与驻留在此环境中的第二个资源不同版本的COM服务器。
37.权利要求36的系统,其中,第一个标识符与第一个资源和第二个资源相关联。
38.权利要求23的系统,其中,此资源驻留在此环境中。
39.权利要求23的系统,其中,此资源驻留在第二个环境中。
40.权利要求23的系统,其中,此资源驻留在应用隔离环境中。
41.权利要求23的系统,其中,在此资源所驻留在的环境中,此资源进一步包括至少一个注册条目。
42.权利要求23的系统,其中,应用程序在应用隔离环境中执行。
43.权利要求23的系统,其中,应用程序在与应用隔离环境相关联的环境中执行。
44.权利要求23的系统,其中,应用程序在包括对此资源发出请求的环境中执行。
45.权利要求23的系统,其中,应用程序包括对此资源发出请求。
46.权利要求23的系统,其中,所述关联进一步包括将识别至少一个COM服务器和与应用程序相关联的应用隔离环境的类标识符映射为动态生成的类标识符的映射。
47.权利要求23的系统,其中,第一个标识符进一步包括识别至少一个COM服务器。
48.权利要求23的系统,其中,进程进一步包括在应用程序中执行的附加的代码。
49.权利要求23的系统,其中,第一个进程和第二个进程包括相同的进程。
50.权利要求23的系统,其中,第一个进程和第三个进程包括相同的进程。
51.权利要求23的系统,其中,第一个进程和第二个进程,以及第三个进程包括相同的进程。
52.权利要求23的系统,其中,第二个进程和第三个进程包括相同的进程。
53.一种由操作系统提供的,用于访问资源的方法,此方法包括如下步骤:
(a)由在环境中执行的应用程序接收针对资源的请求;
(b)获取与此资源相关联的第一个标识符;
(c)参考注册,作为对在与此资源相关联的第一个标识符和与此资源相关联的第二个标识符之间的关联的响应,此关联与此环境相关联;
(d)识别此资源和在其上发起此资源的环境,作为对参考注册的响应;
(e)将第二个标识符与此资源、此环境和在其上发起此资源的环境相关联;
(f)在注册中存储针对此资源的注册键,注册键包括第二个标识符;
(g)将针对此资源的请求重定向给此资源的识别的实例,响应于第二个标识符;
(h)使用位于此资源所驻留的环境中的此资源的实例,响应针对此资源的请求;
(i)响应于第二个标识符,在识别的环境中发起被请求的资源。
54.权利要求53的方法,其中,步骤(a)包括由在环境中执行的应用程序,发出针对资源的请求。
55.权利要求53的方法,其中,步骤(b)进一步包括作为对钩取的COM API的响应,获取第一个标识符。
56.权利要求53的方法,其中,步骤(b)进一步包括钩取CoCreateInstanceEx COM API。
57.权利要求53的方法,其中,步骤(b)进一步包括钩取CoCreateInstance COM API。
58.权利要求53的方法,其中,步骤(b)进一步包括钩取CoGetClassObject COM API。
59.权利要求53的方法,其中,步骤(b)进一步包括钩取CoGetInstanceFromFile COM API。
60.权利要求53的方法,其中,步骤(b)进一步包括钩取CoGetInstanceFromIStorage COM API。
61.权利要求53的方法,其中,进一步包括钩取CoRegisterClassObject COM API的步骤。
62.权利要求53的方法,其中,步骤(c)进一步包括参考在应用程序所驻留的环境中的注册。
63.权利要求53的方法,其中,步骤(c)进一步包括参考在第二个环境中的第二个注册。
64.权利要求53的方法,其中,步骤(c)进一步包括参考注册,作为对从关联接收第二个标识符失败后的响应。
65.权利要求53的方法,其中,步骤(d)进一步包括识别资源驻留的第二个环境。
66.权利要求53的方法,其中,步骤(e)进一步包括在关联中将第二个标识符与此资源、此环境、在其上发起此资源的环境相关联,以及与将此资源发起到环境中的方法的描述进行关联。
67.权利要求53的方法,其中,步骤(g)进一步包括将第二个标识符传送给第二个进程。
68.权利要求67的方法,其中,步骤(g)进一步包括由第二个进程执行此资源。
69.权利要求53的方法,其中,步骤(g)进一步包括通过应用程序与此资源通信。
70.权利要求53的方法,其中,步骤(g)进一步包括通过此资源,对与此应用程序相关联的显示区域进行修改。
71.一种由操作系统提供的,用于访问资源的系统,包括:
资源;
在环境中执行的应用程序,接收针对此资源的请求;
在与资源相关联的第一个标识符和与此资源相关联的第二个标识符之间的关联,此关联与此环境相关联;
钩取进程
获取与此资源相关联的第一个标识符;
识别此资源和在其中执行此资源的环境;
在关联中存储第二个标识符;
存储针对此资源的注册键;和
第二个进程,响应于第二个标识符,将针对此资源的请求重定向到此资源。
72.权利要求71的系统,其中,此资源进一步包括COM服务器。
73.权利要求71的方法,其中,此资源进一步包括在此资源驻留的环境中的至少一个注册条目。
74.权利要求71的系统,其中,此资源驻留在第二个环境。
75.权利要求71的系统,其中,此应用程序进一步包括在应用隔离环境中执行。
76.权利要求71的系统,其中,此应用程序进一步包括在与应用隔离环境相关联的环境中执行。
77.权利要求71的系统,其中,此应用程序在包括发出针对资源的请求的环境中执行。
78.权利要求71的系统,其中,此关联进一步包括将识别至少一个COM服务器的类标识符和COM客户端驻留其中的环境映射为第二个类标识符。
79.权利要求71的系统,其中,此钩取进程进一步包括参考关联,作为对第一个标识符的响应。
80.权利要求71的系统,其中,此钩取进程进一步包括确定,作为对参考关联的响应,参考环境中的注册。
81.权利要求71的系统,其中,此钩取进程进一步包括确定,作为对参考关联的响应,参考应用隔离环境中的注册。
82.权利要求71的系统,其中,此钩取进程进一步包括确定参考第二个环境中的注册,作为对参考关联的响应。
83.权利要求71的系统,其中,此钩取进程进一步包括识别资源和其驻留的环境,作为对参考此注册的响应。
84.权利要求71的系统,其中,此钩取进程和第二个进程是相同的进程。
CN2005800410556A 2004-09-30 2005-09-23 用于访问资源的方法和系统 Active CN101069157B (zh)

Applications Claiming Priority (25)

Application Number Priority Date Filing Date Title
US10/711,735 US7853947B2 (en) 2004-09-30 2004-09-30 System for virtualizing access to named system objects using rule action associated with request
US10/711,737 2004-09-30
US10/711,732 2004-09-30
US10/711,735 2004-09-30
US10/711,734 US20060069662A1 (en) 2004-09-30 2004-09-30 Method and apparatus for remapping accesses to virtual system resources
US10/711,733 US8117559B2 (en) 2004-09-30 2004-09-30 Method and apparatus for virtualizing window information
US10/711,734 2004-09-30
US10/711,736 2004-09-30
US10/711,732 US7752600B2 (en) 2004-09-30 2004-09-30 Method and apparatus for providing file-type associations to multiple applications
US10/711,736 US8171479B2 (en) 2004-09-30 2004-09-30 Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US10/711,733 2004-09-30
US10/711,737 US7680758B2 (en) 2004-09-30 2004-09-30 Method and apparatus for isolating execution of software applications
US10/956,723 US8042120B2 (en) 2004-09-30 2004-10-01 Method and apparatus for moving processes between isolation environments
US10/956,723 2004-10-01
US11/231,315 US7676813B2 (en) 2004-09-30 2005-09-19 Method and system for accessing resources
US11/231,316 2005-09-19
US11/231,284 2005-09-19
US11/231,317 2005-09-19
US11/231,315 2005-09-19
US11/231,370 2005-09-19
US11/231,284 US8302101B2 (en) 2004-09-30 2005-09-19 Methods and systems for accessing, by application programs, resources provided by an operating system
US11/231,370 US8095940B2 (en) 2005-09-19 2005-09-19 Method and system for locating and accessing resources
US11/231,316 US20060174223A1 (en) 2004-09-30 2005-09-19 Method and environment for associating an application with an isolation environment
US11/231,317 US8132176B2 (en) 2004-09-30 2005-09-19 Method for accessing, by application programs, resources residing inside an application isolation scope
PCT/US2005/034177 WO2006039206A1 (en) 2004-09-30 2005-09-23 A method and system for accessing resources

Publications (2)

Publication Number Publication Date
CN101069157A true CN101069157A (zh) 2007-11-07
CN101069157B CN101069157B (zh) 2013-12-18

Family

ID=36127152

Family Applications (5)

Application Number Title Priority Date Filing Date
CN200810131669.9A Active CN101329636B (zh) 2004-09-30 2005-09-23 虚拟化窗口信息的方法和设备
CN2005800410151A Active CN101073058B (zh) 2004-09-30 2005-09-23 用于隔离对软件应用程序的执行的方法
CN2005800410221A Active CN101069156B (zh) 2004-09-30 2005-09-23 用于在隔离环境之间移动进程的方法和设备
CN2005800410556A Active CN101069157B (zh) 2004-09-30 2005-09-23 用于访问资源的方法和系统
CNB200580040872XA Active CN100520721C (zh) 2004-09-30 2005-09-23 虚拟化窗口信息的方法和设备

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN200810131669.9A Active CN101329636B (zh) 2004-09-30 2005-09-23 虚拟化窗口信息的方法和设备
CN2005800410151A Active CN101073058B (zh) 2004-09-30 2005-09-23 用于隔离对软件应用程序的执行的方法
CN2005800410221A Active CN101069156B (zh) 2004-09-30 2005-09-23 用于在隔离环境之间移动进程的方法和设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB200580040872XA Active CN100520721C (zh) 2004-09-30 2005-09-23 虚拟化窗口信息的方法和设备

Country Status (2)

Country Link
US (7) US7680758B2 (zh)
CN (5) CN101329636B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101742029B (zh) * 2008-11-13 2014-08-06 富士施乐株式会社 信息处理器和信息处理方法
CN105589715A (zh) * 2014-11-10 2016-05-18 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
CN107431687A (zh) * 2015-03-19 2017-12-01 国际商业机器公司 多租户环境中的进程间通信
CN107438081A (zh) * 2011-10-28 2017-12-05 谷歌公司 客户端设备的策略执行
CN109074269A (zh) * 2016-07-08 2018-12-21 惠普发展公司,有限责任合伙企业 确定设备磨损率
CN109582458A (zh) * 2017-09-28 2019-04-05 北京国双科技有限公司 资源信息加载方法、装置、存储介质及处理器
CN109783230A (zh) * 2018-12-17 2019-05-21 平安普惠企业管理有限公司 基于信号量的流量控制方法、装置、计算机设备和存储介质
CN109934327A (zh) * 2019-02-18 2019-06-25 星汉智能科技股份有限公司 一种智能卡的计时方法及系统
CN113806107A (zh) * 2021-08-25 2021-12-17 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质

Families Citing this family (203)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
US8843903B1 (en) * 2003-06-11 2014-09-23 Symantec Corporation Process tracking application layered system
US8112767B1 (en) * 2002-06-12 2012-02-07 Symantec Corporation Systems, apparatus, and methods for layered execution
US7945897B1 (en) 2002-06-12 2011-05-17 Symantec Corporation Method and system for running an application in a clean operating environment using a layered computing system
US7970789B1 (en) * 2003-06-11 2011-06-28 Symantec Corporation Sublayered application layered system
US8010961B1 (en) * 2003-06-11 2011-08-30 Symantec Corporation Data layer prioritization in an application layered system
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US20050015340A1 (en) * 2003-06-27 2005-01-20 Oracle International Corporation Method and apparatus for supporting service enablers via service request handholding
US8321498B2 (en) * 2005-03-01 2012-11-27 Oracle International Corporation Policy interface description framework
US8073810B2 (en) * 2007-10-29 2011-12-06 Oracle International Corporation Shared view of customers across business support systems (BSS) and a service delivery platform (SDP)
US8458703B2 (en) * 2008-06-26 2013-06-04 Oracle International Corporation Application requesting management function based on metadata for managing enabler or dependency
US9038082B2 (en) 2004-05-28 2015-05-19 Oracle International Corporation Resource abstraction via enabler and metadata
US9565297B2 (en) 2004-05-28 2017-02-07 Oracle International Corporation True convergence with end to end identity management
US9245236B2 (en) 2006-02-16 2016-01-26 Oracle International Corporation Factorization of concerns to build a SDP (service delivery platform)
US8966498B2 (en) * 2008-01-24 2015-02-24 Oracle International Corporation Integrating operational and business support systems with a service delivery platform
US7690033B2 (en) * 2004-09-28 2010-03-30 Exobox Technologies Corp. Electronic computer system secured from unauthorized access to and manipulation of data
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US20060069662A1 (en) * 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US7958148B2 (en) * 2004-11-17 2011-06-07 Iron Mountain Incorporated Systems and methods for filtering file system input and output
US20060116912A1 (en) * 2004-12-01 2006-06-01 Oracle International Corporation Managing account-holder information using policies
US8020141B2 (en) * 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8082468B1 (en) 2008-12-15 2011-12-20 Open Invention Networks, Llc Method and system for providing coordinated checkpointing to a group of independent computer applications
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US7685638B1 (en) * 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
AU2007243254A1 (en) * 2006-04-26 2007-11-08 Exobox Technologies Corp. Secure user environment software
US20070256068A1 (en) * 2006-05-01 2007-11-01 Microsoft Corporation Product updating with custom actions
US8914493B2 (en) 2008-03-10 2014-12-16 Oracle International Corporation Presence-based event driven architecture
US8032898B2 (en) * 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US8280908B2 (en) * 2006-06-30 2012-10-02 Microsoft Corporation Merging file system directories
US20080016077A1 (en) * 2006-07-11 2008-01-17 International Business Machines Corporation A system for ensuring that only one computer application maintains edit or delete access to a file at all times
US20080040404A1 (en) * 2006-08-11 2008-02-14 Microsoft Corporation Host computer I/O filter re-directing potentially conflicting I/O commands from instantiations of legacy application
US20080127352A1 (en) * 2006-08-18 2008-05-29 Min Wang System and method for protecting a registry of a computer
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
AU2007309183A1 (en) * 2006-10-20 2008-05-02 Citrix Systems,Inc. Methods and systems for accessing remote user files associated with local resources
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8918427B1 (en) * 2006-12-29 2014-12-23 Symantec Operating Corporation Virtualization of file input/output operations
CN101211389B (zh) * 2006-12-31 2010-04-07 联想(北京)有限公司 一种硬件安全单元以及其服务请求的处理方法和系统
US8640124B2 (en) * 2007-01-15 2014-01-28 Microsoft Corporation Multi-installer product advertising
US8640121B2 (en) * 2007-01-15 2014-01-28 Microsoft Corporation Facilitating multi-installer product installations
US8146084B1 (en) 2007-02-21 2012-03-27 Adobe Systems Incorporated Loading applications in non-designated isolation environments
US8640215B2 (en) * 2007-03-23 2014-01-28 Microsoft Corporation Secure isolation of application pools
US8214503B2 (en) 2007-03-23 2012-07-03 Oracle International Corporation Factoring out dialog control and call control
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
WO2008135692A1 (fr) * 2007-03-30 2008-11-13 France Telecom Gestion d'acces a des ressources d'un systeme d'exploitation
US8185888B2 (en) * 2007-06-05 2012-05-22 Microsoft Corporation Software execution with minimal impact deployment
US20090019120A1 (en) * 2007-07-13 2009-01-15 International Business Machines Corporation Metadata-enhanced instant-messaging applications
EP2224338A3 (en) 2007-09-12 2011-03-16 Citrix Systems, Inc. Methods and systems for generating desktop environments providing integrated access to remote and local resources
JP4983521B2 (ja) * 2007-10-04 2012-07-25 富士通株式会社 ソフトウェア更新検証装置、方法及びプログラム
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
AU2008311849A1 (en) * 2007-10-20 2009-04-23 Citrix Systems, Inc. Systems and methods for folder redirection
US8539097B2 (en) * 2007-11-14 2013-09-17 Oracle International Corporation Intelligent message processing
US8161171B2 (en) 2007-11-20 2012-04-17 Oracle International Corporation Session initiation protocol-based internet protocol television
FR2925269B1 (fr) * 2007-12-19 2010-01-15 Promiles Sac a dos permutable en position frontale
US8954541B2 (en) * 2007-12-29 2015-02-10 Amx Llc Method, computer-readable medium, and system for discovery and registration of controlled devices associated with self-describing modules
US20090183182A1 (en) * 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
US9654515B2 (en) * 2008-01-23 2017-05-16 Oracle International Corporation Service oriented architecture-based SCIM platform
US8589338B2 (en) 2008-01-24 2013-11-19 Oracle International Corporation Service-oriented architecture (SOA) management of data repository
US8468543B2 (en) * 2008-01-25 2013-06-18 Fasoo.Com.Co.Ltd. System and method for preventing DRM client crash using process separate execution
US8401022B2 (en) * 2008-02-08 2013-03-19 Oracle International Corporation Pragmatic approaches to IMS
US20090222491A1 (en) * 2008-02-28 2009-09-03 Michael Larkin Systems and Methods for Layered Resource Management
US8806499B2 (en) * 2008-05-15 2014-08-12 Novell, Inc. Mechanism to build dynamic locations to reduce brittleness in a team environment
US8607344B1 (en) * 2008-07-24 2013-12-10 Mcafee, Inc. System, method, and computer program product for initiating a security action at an intermediate layer coupled between a library and an application
US8090848B2 (en) * 2008-08-21 2012-01-03 Oracle International Corporation In-vehicle multimedia real-time communications
US8230442B2 (en) * 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US9122520B2 (en) * 2008-09-17 2015-09-01 Oracle International Corporation Generic wait service: pausing a BPEL process
WO2010048492A2 (en) * 2008-10-24 2010-04-29 Citrix Systems, Inc. Methods and systems for providing a modifiable machine base image with a personalized desktop environment in a combined computing environment
WO2010050927A1 (en) 2008-10-28 2010-05-06 Hewlett-Packard Development Company, L.P. File type association in a remote computing session
US8667512B2 (en) * 2008-10-29 2014-03-04 Qualcomm Incorporated Flexible hierarchical settings registry for operating systems
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
KR101437122B1 (ko) * 2008-12-03 2014-09-02 삼성전자 주식회사 Os 가상화를 이용하여 서비스를 제공하는 장치 및 방법
US8365206B1 (en) 2008-12-05 2013-01-29 Symantec Corporation Methods and systems for handling component-object-model communications
US9354977B1 (en) * 2008-12-15 2016-05-31 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US8281317B1 (en) 2008-12-15 2012-10-02 Open Invention Network Llc Method and computer readable medium for providing checkpointing to windows application groups
US8745442B1 (en) * 2011-04-28 2014-06-03 Open Invention Network, Llc System and method for hybrid kernel- and user-space checkpointing
US8880473B1 (en) 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US10019327B1 (en) 2008-12-15 2018-07-10 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
US9256496B1 (en) 2008-12-15 2016-02-09 Open Invention Network, Llc System and method for hybrid kernel—and user-space incremental and full checkpointing
US8904004B2 (en) * 2009-04-10 2014-12-02 Open Invention Network, Llc System and method for maintaining mappings between application resources inside and outside isolated environments
US8341631B2 (en) 2009-04-10 2012-12-25 Open Invention Network Llc System and method for application isolation
US8464256B1 (en) * 2009-04-10 2013-06-11 Open Invention Network, Llc System and method for hierarchical interception with isolated environments
KR101489466B1 (ko) 2008-12-17 2015-02-03 삼성전자 주식회사 프로세스 마이그레이션을 관리하는 장치 및 방법
US8527734B2 (en) * 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) * 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8843880B2 (en) * 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US20100191923A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data Processing In A Computing Environment
US9170864B2 (en) * 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
KR100985074B1 (ko) * 2009-02-05 2010-10-04 주식회사 안철수연구소 선별적 가상화를 이용한 악성 코드 사전 차단 장치, 방법 및 그 방법을 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US11538078B1 (en) 2009-04-10 2022-12-27 International Business Machines Corporation System and method for usage billing of hosted applications
US9058599B1 (en) 2009-04-10 2015-06-16 Open Invention Network, Llc System and method for usage billing of hosted applications
US10419504B1 (en) 2009-04-10 2019-09-17 Open Invention Network Llc System and method for streaming application isolation
US8555360B1 (en) * 2009-04-10 2013-10-08 Open Invention Network Llc System and method for on-line and off-line streaming application isolation
US9197417B2 (en) * 2009-04-24 2015-11-24 Microsoft Technology Licensing, Llc Hosted application sandbox model
US8090797B2 (en) * 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8879547B2 (en) * 2009-06-02 2014-11-04 Oracle International Corporation Telephony application services
US8826269B2 (en) * 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US8387047B1 (en) * 2009-08-03 2013-02-26 Symantec Corporation Method of virtualizing file extensions in a computer system by determining an association between applications in virtual environment and a file extension
US8566391B2 (en) 2009-08-13 2013-10-22 Hitachi, Ltd. System and method for evaluating application suitability in execution environment
US8881140B1 (en) 2009-09-04 2014-11-04 Symantec Corporation Systems and methods for virtualizing software associated with external computer hardware devices
US9407959B2 (en) 2009-09-21 2016-08-02 Adobe Systems Incorporated Monitoring behavior with respect to a software program
US8583830B2 (en) * 2009-11-19 2013-11-12 Oracle International Corporation Inter-working with a walled garden floor-controlled system
US8533773B2 (en) * 2009-11-20 2013-09-10 Oracle International Corporation Methods and systems for implementing service level consolidated user information management
US20110125909A1 (en) * 2009-11-20 2011-05-26 Oracle International Corporation In-Session Continuation of a Streaming Media Session
US20110125913A1 (en) * 2009-11-20 2011-05-26 Oracle International Corporation Interface for Communication Session Continuation
US9269060B2 (en) * 2009-11-20 2016-02-23 Oracle International Corporation Methods and systems for generating metadata describing dependencies for composable elements
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation
US9509790B2 (en) * 2009-12-16 2016-11-29 Oracle International Corporation Global presence
US9503407B2 (en) * 2009-12-16 2016-11-22 Oracle International Corporation Message forwarding
KR101235330B1 (ko) * 2009-12-21 2013-02-19 한국전자통신연구원 임베디드 소프트웨어 개발 도구 통합 관리 장치 및 방법
US9417905B2 (en) * 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
DE102010011654A1 (de) * 2010-03-17 2011-09-22 Siemens Aktiengesellschaft System und Verfahren zum kontrollierten Ausführen einer Programmdatei auf einem Rechner
US8578132B2 (en) * 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US20110289424A1 (en) * 2010-05-21 2011-11-24 Microsoft Corporation Secure application of custom resources in multi-tier systems
US8539020B2 (en) * 2010-06-14 2013-09-17 Microsoft Corporation Sessions to host processes with special requirements
US8539561B2 (en) * 2010-08-24 2013-09-17 International Business Machines Corporation Systems and methods to control device endpoint behavior using personae and policies
US8473575B2 (en) 2010-08-26 2013-06-25 Ford Global Technologies, Llc Methods and apparatus for remote activation of an application
US8732797B2 (en) 2010-08-31 2014-05-20 Microsoft Corporation Host usability and security via an isolated environment
US20120089875A1 (en) * 2010-10-07 2012-04-12 Microsoft Corporation Multi-user test framework
US8756696B1 (en) 2010-10-30 2014-06-17 Sra International, Inc. System and method for providing a virtualized secure data containment service with a networked environment
US8793708B2 (en) * 2010-12-08 2014-07-29 Microsoft Corporation Creation and termination of component scopes
US9104514B2 (en) * 2011-01-11 2015-08-11 International Business Machines Corporation Automated deployment of applications with tenant-isolation requirements
US10162726B2 (en) * 2011-01-18 2018-12-25 Accenture Global Services Limited Managing computing resources
US11625307B1 (en) 2011-04-28 2023-04-11 International Business Machines Corporation System and method for hybrid kernel- and user-space incremental and full checkpointing
US11307941B1 (en) 2011-04-28 2022-04-19 Open Invention Network Llc System and method for hybrid kernel- and user-space incremental and full checkpointing
JP5787606B2 (ja) * 2011-05-02 2015-09-30 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
US8898207B2 (en) 2011-08-17 2014-11-25 International Business Machines Corporation Specifying options in filenames and multiplexing the options onto file access operations of a file system
CN102968593B (zh) * 2011-08-31 2016-08-03 国际商业机器公司 用于多租户环境下定位应用程序的隔离点的方法和系统
US8898672B2 (en) 2011-09-14 2014-11-25 Alcatel Lucent Method and apparatus for providing isolated virtual space
GB2495079A (en) * 2011-09-23 2013-04-03 Hybrid Logic Ltd Live migration of applications and file systems in a distributed system
US8392576B1 (en) * 2011-09-26 2013-03-05 Google Inc. Browser based redirection of broken links
US8504692B1 (en) 2011-09-26 2013-08-06 Google Inc. Browser based redirection of broken links
US9009143B2 (en) * 2011-10-03 2015-04-14 Microsoft Corporation Use of off-page content to enhance captions with additional relevant information
US9300624B2 (en) * 2011-12-30 2016-03-29 Bmc Software, Inc. Registry synchronizer and integrity monitor
US9015682B1 (en) * 2012-03-28 2015-04-21 Google Inc. Computer code transformations to create synthetic global scopes
KR101212497B1 (ko) * 2012-05-02 2012-12-14 주식회사 팀스톤 컴퓨팅 장치에서 수행되는 자원 모니터링 방법 및 컴퓨팅 장치
US9733953B2 (en) 2012-06-22 2017-08-15 Microsoft Technology Licensing, Llc API redirection for limited capability operating systems
DK2680138T3 (da) * 2012-06-28 2019-05-13 Res Software Dev B V Dynamisk regelforvaltning for kernemodus-filterdrivere
US9405556B2 (en) 2012-06-28 2016-08-02 Microsoft Technology Licensing, Llc Dynamic addition and removal of operating system components
US9178886B2 (en) * 2012-08-29 2015-11-03 Red Hat Israel, Ltd. Flattening permission trees in a virtualization environment
US20140195672A1 (en) * 2013-01-09 2014-07-10 Microsoft Corporation Automated failure handling through isolation
US9117079B1 (en) * 2013-02-19 2015-08-25 Trend Micro Inc. Multiple application versions in a single virtual machine
WO2014130735A1 (en) * 2013-02-20 2014-08-28 Brigham Young University System and methods for multi-user cax editing data consistency
US9323514B2 (en) 2013-05-30 2016-04-26 Microsoft Technology Licensing, Llc Resource package indexing
US20140357357A1 (en) 2013-05-30 2014-12-04 Microsoft Corporation Game bundle package
US9766870B2 (en) 2013-05-30 2017-09-19 Microsoft Technology Licensing, Llc Bundle package generation
CN103257882A (zh) * 2013-06-03 2013-08-21 贝壳网际(北京)安全技术有限公司 基于浏览器的插件加载方法、浏览器装置及移动终端
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
US9953189B2 (en) * 2013-07-30 2018-04-24 FSLogix, Inc. Managing configurations of computing terminals
US9361335B2 (en) 2013-10-11 2016-06-07 Vmware, Inc. Methods and apparatus to manage virtual machines
US9117081B2 (en) 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
JP6106901B2 (ja) * 2013-12-31 2017-04-05 ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス
US9202046B2 (en) 2014-03-03 2015-12-01 Bitdefender IPR Management Ltd. Systems and methods for executing arbitrary applications in secure environments
EP3120238B1 (en) * 2014-03-19 2020-10-28 Intel Corporation Access isolation for multi-operating system devices
US9529628B2 (en) * 2014-03-21 2016-12-27 Vmware, Inc. Binary editing of applications executed by virtual machines
US11275861B2 (en) * 2014-07-25 2022-03-15 Fisher-Rosemount Systems, Inc. Process control software security architecture based on least privileges
CN104199920B (zh) * 2014-08-30 2017-10-20 深圳市云来网络科技有限公司 网页式应用的显示适配方法及装置
US9411628B2 (en) * 2014-11-13 2016-08-09 Microsoft Technology Licensing, Llc Virtual machine cluster backup in a multi-node environment
US9600682B2 (en) * 2015-06-08 2017-03-21 Accenture Global Services Limited Mapping process changes
US10089108B1 (en) * 2015-06-17 2018-10-02 Amazon Technologies, Inc. Archival format for incremental deployments and version control
US10223393B1 (en) 2015-06-25 2019-03-05 Amazon Technologies, Inc. Efficient processing of source code objects using probabilistic data structures
US10025922B2 (en) 2015-08-05 2018-07-17 Crowdstrike, Inc. User-mode component injection and atomic hooking
US10331881B2 (en) 2015-08-05 2019-06-25 Crowdstrike, Inc. User-mode component injection techniques
CN106487749B (zh) 2015-08-26 2021-02-19 阿里巴巴集团控股有限公司 密钥生成方法及装置
US10324734B2 (en) 2016-01-15 2019-06-18 Google Llc Application containers
US9817648B2 (en) 2016-01-15 2017-11-14 Google Inc. Application containers with dynamic sub-package loading
EP3223185B1 (en) * 2016-03-22 2019-10-09 Crowdstrike, Inc. System and method dynamic code patching techniques from user-mode process address space
US10127018B2 (en) 2016-03-30 2018-11-13 Qualcomm Incorporated Dynamic addition of code in shared libraries
US10621333B2 (en) * 2016-08-08 2020-04-14 International Business Machines Corporation Install-time security analysis of mobile applications
US10452275B2 (en) 2017-01-13 2019-10-22 Red Hat, Inc. Categorizing computing process output data streams for flash storage devices
US10452838B2 (en) * 2017-07-27 2019-10-22 Symantec Corporation Providing joint access to an isolated computer object by both an isolated computer application and a non-isolated computer application
JP6855348B2 (ja) * 2017-07-31 2021-04-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびダウンロード処理方法
CN107885995A (zh) * 2017-10-09 2018-04-06 阿里巴巴集团控股有限公司 小程序的安全扫描方法、装置以及电子设备
GB2570924B (en) * 2018-02-12 2021-06-16 Avecto Ltd Managing registry access on a computer device
CN109086403B (zh) * 2018-08-01 2022-03-15 徐工集团工程机械有限公司 一种面向分类用户的三维电子随机文件动态创建方法
CN110879677A (zh) * 2018-09-06 2020-03-13 武汉斗鱼网络科技有限公司 一种窗口界面消息的管理方法以及相关设备
US11392467B2 (en) 2019-04-17 2022-07-19 Microsoft Technology Licensing, Llc Failover between decentralized identity stores
US11190512B2 (en) 2019-04-17 2021-11-30 Microsoft Technology Licensing, Llc Integrity attestation of attestation component
US11429743B2 (en) 2019-04-29 2022-08-30 Microsoft Technology Licensing, Llc Localization of DID-related claims and data
US11381567B2 (en) 2019-04-29 2022-07-05 Microsoft Technology Licensing, Llc Execution of an application within a scope of user-granted permission
US11411959B2 (en) * 2019-05-03 2022-08-09 Microsoft Technology Licensing, Llc Execution of application in a container within a scope of user-granted permission
US11222137B2 (en) 2019-05-03 2022-01-11 Microsoft Technology Licensing, Llc Storing and executing an application in a user's personal storage with user granted permission
US11003771B2 (en) 2019-05-03 2021-05-11 Microsoft Technology Licensing, Llc Self-help for DID claims
CN111556503A (zh) * 2020-03-30 2020-08-18 沈阳通用软件有限公司 一种基于Windows操作系统的个人WIFI热点管理方法
JP7391802B2 (ja) * 2020-09-11 2023-12-05 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム
CN112487331A (zh) * 2020-11-26 2021-03-12 北京有竹居网络技术有限公司 页面生成方法和装置、存储介质和电子设备
US20220309041A1 (en) * 2021-03-23 2022-09-29 Microsoft Technology Licensing, Llc Flexible virtualization of application data for specified system locations
CN113867992B (zh) * 2021-12-03 2022-03-25 连连(杭州)信息技术有限公司 调用链资源隔离方法、装置、存储介质和电子设备
CN114020444B (zh) * 2022-01-05 2022-05-10 阿里云计算有限公司 一种企业数字中台中资源服务应用的调用系统和方法
CN114679495B (zh) * 2022-02-08 2024-01-05 阿里云计算有限公司 一种资源服务操作请求的调度编排方法和调度执行方法

Family Cites Families (353)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1581441A (en) * 1976-01-29 1980-12-17 Dobson Park Ind Fluid powered impact tools
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
US4779189A (en) 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
US5737622A (en) * 1986-04-14 1998-04-07 National Instruments Corporation Method and apparatus for more efficient function synchronization in a data flow program
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5067072A (en) 1987-11-06 1991-11-19 Visystems, Inc. Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies
US5201049A (en) * 1988-09-29 1993-04-06 International Business Machines Corporation System for executing applications program concurrently/serially on different virtual machines
US5057996A (en) 1989-06-29 1991-10-15 Digital Equipment Corporation Waitable object creation system and method in an object based computer operating system
US5187790A (en) 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
US5129084A (en) 1989-06-29 1992-07-07 Digital Equipment Corporation Object container transfer system and method in an object based computer operating system
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
CA2041992A1 (en) 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5249290A (en) 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
JP2654283B2 (ja) 1991-09-30 1997-09-17 株式会社東芝 アイコン表示方法
EP0546682A3 (en) 1991-12-12 1993-12-08 Ibm Parent class shadowing
JP2521016B2 (ja) * 1991-12-31 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチメディア・デ―タ処理システム
DE69324840T2 (de) 1992-03-06 1999-09-09 Microsoft Corp Verfahren zum Speichern von Programmen
US5504677A (en) * 1992-10-15 1996-04-02 Pollin; Robert E. Automated payment system
US5600789A (en) 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
US5384911A (en) * 1992-12-23 1995-01-24 International Business Machines Corporation Method of transferring programs from action oriented GUI paradigm to object oriented GUI paradigm
US5632002A (en) 1992-12-28 1997-05-20 Kabushiki Kaisha Toshiba Speech recognition interface system suitable for window systems and speech mail systems
US5437025A (en) 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
US6212577B1 (en) * 1993-03-03 2001-04-03 Apple Computer, Inc. Method and apparatus for improved interaction with an application program according to data types and actions performed by the application program
US5794207A (en) 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
JP2576762B2 (ja) 1993-06-30 1997-01-29 日本電気株式会社 リング網のノード間情報収集方式
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
US5553242A (en) 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5515508A (en) 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5819034A (en) 1994-04-28 1998-10-06 Thomson Consumer Electronics, Inc. Apparatus for transmitting and receiving executable applications as for a multimedia system
CA2145921A1 (en) 1994-05-10 1995-11-11 Vijay Pochampalli Kumar Method and apparatus for executing a distributed algorithm or service on a simple network management protocol based computer network
US5596745A (en) * 1994-05-16 1997-01-21 International Business Machines Corporation System and procedure for concurrent database access by multiple user applications through shared connection processes
US5557765A (en) * 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for data recovery
US5557346A (en) 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for key escrow encryption
US5732266A (en) 1994-09-02 1998-03-24 Compaq Computer Corporation Storage medium storing application programs and application initialization files and automatic launching of computer applications stored on the storage medium
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
JP3484779B2 (ja) * 1994-10-12 2004-01-06 富士ゼロックス株式会社 名前サービス方式及び名前サービス方法
EP0718784B1 (en) 1994-12-20 2003-08-27 Sun Microsystems, Inc. Method and system for the retrieval of personalized information
AU4469896A (en) * 1994-12-23 1996-07-19 Southwestern Bell Technology Resources, Inc. Flexible network platform and call processing system
US5557748A (en) 1995-02-03 1996-09-17 Intel Corporation Dynamic network configuration
US6272632B1 (en) 1995-02-21 2001-08-07 Network Associates, Inc. System and method for controlling access to a user secret using a key recovery field
AU5386796A (en) 1995-04-11 1996-10-30 Kinetech, Inc. Identifying data in a data processing system
US5734865A (en) * 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US6047312A (en) * 1995-07-07 2000-04-04 Novell, Inc. System for replicating and associating file types with application programs among plurality of partitions in a server
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US5856826A (en) * 1995-10-06 1999-01-05 Apple Computer, Inc. Method and apparatus for organizing window groups and windows in a table
US6684259B1 (en) * 1995-10-11 2004-01-27 Citrix Systems, Inc. Method for providing user global object name space in a multi-user operating system
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US5729734A (en) * 1995-11-03 1998-03-17 Apple Computer, Inc. File privilege administration apparatus and methods
US6088515A (en) 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
US5706437A (en) * 1995-12-29 1998-01-06 Mci Communications Corporation System and method for accessing a service on a services network
US5764915A (en) 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5938733A (en) 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5838910A (en) 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US5761431A (en) 1996-04-12 1998-06-02 Peak Audio, Inc. Order persistent timer for controlling events at multiple processing stations
US5765192A (en) 1996-05-01 1998-06-09 Sun Microsystems, Inc. Method and computer program product to reuse directory search handles
JP3258236B2 (ja) * 1996-05-28 2002-02-18 株式会社日立製作所 マルチメディア情報転送システム
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6272556B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US5828840A (en) 1996-08-06 1998-10-27 Verifone, Inc. Server for starting client application on client if client is network terminal and initiating client application on server if client is non network terminal
US5784057A (en) 1996-08-14 1998-07-21 International Business Machines Corporation Dynamically modifying a graphical user interface window title
US5979757A (en) * 1996-09-05 1999-11-09 Symbol Technologies, Inc. Method and system for presenting item information using a portable data terminal
US5884046A (en) * 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US5835908A (en) 1996-11-19 1998-11-10 Microsoft Corporation Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers
JP3466863B2 (ja) 1996-12-19 2003-11-17 キヤノン株式会社 走査光学装置及びそれを用いた画像記録装置
US5983268A (en) 1997-01-14 1999-11-09 Netmind Technologies, Inc. Spreadsheet user-interface for an internet-document change-detection tool
US6026440A (en) * 1997-01-27 2000-02-15 International Business Machines Corporation Web server account manager plug-in for monitoring resources
US5915085A (en) * 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US5930801A (en) 1997-03-07 1999-07-27 Xerox Corporation Shared-data environment in which each file has independent security properties
US6144377A (en) 1997-03-11 2000-11-07 Microsoft Corporation Providing access to user interface elements of legacy application programs
JP2001502821A (ja) 1997-03-14 2001-02-27 ドメニコス,スティーヴン サーバに結合されているメモリ装置に格納されたアプリケーションプログラムを実行するシステムおよび方法
US6144992A (en) 1997-05-09 2000-11-07 Altiris, Inc. Method and system for client/server and peer-to-peer disk imaging
US6023721A (en) * 1997-05-14 2000-02-08 Citrix Systems, Inc. Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US6292827B1 (en) * 1997-06-20 2001-09-18 Shore Technologies (1999) Inc. Information transfer systems and method with dynamic distribution of data, control and management of information
US6158007A (en) 1997-09-17 2000-12-05 Jahanshah Moreh Security system for event based middleware
US6714979B1 (en) * 1997-09-26 2004-03-30 Worldcom, Inc. Data warehousing infrastructure for web based reporting tool
US5848410A (en) 1997-10-08 1998-12-08 Hewlett Packard Company System and method for selective and continuous index generation
US7076784B1 (en) * 1997-10-28 2006-07-11 Microsoft Corporation Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US5860068A (en) * 1997-12-04 1999-01-12 Petabyte Corporation Method and system for custom manufacture and delivery of a data product
US6339595B1 (en) * 1997-12-23 2002-01-15 Cisco Technology, Inc. Peer-model support for virtual private networks with potentially overlapping addresses
JP3937548B2 (ja) 1997-12-29 2007-06-27 カシオ計算機株式会社 データアクセス制御装置およびそのプログラム記録媒体
US6233585B1 (en) * 1998-03-12 2001-05-15 Crossworlds Software, Inc. Isolation levels and compensating transactions in an information system
US6073076A (en) 1998-03-27 2000-06-06 Navigation Technologies Corporation Memory management for navigation system
US6484174B1 (en) 1998-04-20 2002-11-19 Sun Microsystems, Inc. Method and apparatus for session management and user authentication
US6108712A (en) 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
US6772350B1 (en) 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US6275942B1 (en) 1998-05-20 2001-08-14 Network Associates, Inc. System, method and computer program product for automatic response to computer system misuse using active response modules
US6282602B1 (en) 1998-06-30 2001-08-28 Emc Corporation Method and apparatus for manipulating logical objects in a data storage system
US6182142B1 (en) 1998-07-10 2001-01-30 Encommerce, Inc. Distributed access management of information resources
US20010037400A1 (en) * 1998-07-22 2001-11-01 Uri Raz Method and system for decreasing the user-perceived system response time in web-based systems
US20020138640A1 (en) * 1998-07-22 2002-09-26 Uri Raz Apparatus and method for improving the delivery of software applications and associated data in web-based systems
US20010044850A1 (en) * 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
US7197570B2 (en) 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US6311221B1 (en) 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6574618B2 (en) 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6157953A (en) 1998-07-28 2000-12-05 Sun Microsystems, Inc. Authentication and access control in a management console program for managing services in a computer network
US6389084B1 (en) 1998-08-07 2002-05-14 Lucent Technologies Inc. Apparatus and method for equalizing a signal independent of the impact of doppler frequency
US6321219B1 (en) 1998-08-14 2001-11-20 Microsoft Corporation Dynamic symbolic links for computer file systems
US6757705B1 (en) 1998-08-14 2004-06-29 Microsoft Corporation Method and system for client-side caching
US6606663B1 (en) 1998-09-29 2003-08-12 Openwave Systems Inc. Method and apparatus for caching credentials in proxy servers for wireless user agents
US6327705B1 (en) 1998-10-08 2001-12-04 Microsoft Corporation Method for creating and maintaining user data
US6262726B1 (en) 1998-10-09 2001-07-17 Dell U.S.A., L.P. Factory installing desktop components for an active desktop
US6230184B1 (en) * 1998-10-19 2001-05-08 Sun Microsystems, Inc. Method and apparatus for automatically optimizing execution of a computer program
WO2000026750A1 (en) * 1998-11-05 2000-05-11 NEUVIS, Inc Method for controlling access to information
US7017188B1 (en) * 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
EP1131934B1 (en) 1998-11-16 2016-12-21 Microsoft Technology Licensing, LLC A method for executing an application without being installed
US6763370B1 (en) * 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US6374402B1 (en) * 1998-11-16 2002-04-16 Into Networks, Inc. Method and apparatus for installation abstraction in a secure content delivery system
US7225264B2 (en) * 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6487665B1 (en) 1998-11-30 2002-11-26 Microsoft Corporation Object security boundaries
US6604106B1 (en) 1998-12-10 2003-08-05 International Business Machines Corporation Compression and delivery of web server content
US6550012B1 (en) * 1998-12-11 2003-04-15 Network Associates, Inc. Active firewall system and methodology
US6510466B1 (en) * 1998-12-14 2003-01-21 International Business Machines Corporation Methods, systems and computer program products for centralized management of application programs on a network
US6343280B2 (en) 1998-12-15 2002-01-29 Jonathan Clark Distributed execution software license server
US6564327B1 (en) 1998-12-23 2003-05-13 Worldcom, Inc. Method of and system for controlling internet access
US6928469B1 (en) * 1998-12-29 2005-08-09 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US6208864B1 (en) 1998-12-30 2001-03-27 Telcordia Technologies, Inc. Establishing calls and processing on-going calls in fixes and cellular networks
US6490601B1 (en) 1999-01-15 2002-12-03 Infospace, Inc. Server for enabling the automatic insertion of data into electronic forms on a user computer
JP2000215181A (ja) * 1999-01-21 2000-08-04 Fujitsu Ltd ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置
WO2000043919A1 (en) 1999-01-26 2000-07-27 Appstream Inc. Link presentation and data transfer
US6438600B1 (en) 1999-01-29 2002-08-20 International Business Machines Corporation Securely sharing log-in credentials among trusted browser-based applications
KR20000057127A (ko) 1999-02-03 2000-09-15 송동호 소프트웨어 임대 시스템을 위한 분산컴퓨팅 환경에서의프로그램 수행시스템 및 그 방법
EP1037147A1 (en) 1999-03-15 2000-09-20 BRITISH TELECOMMUNICATIONS public limited company Resource scheduling
US9141717B2 (en) * 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
AU4236100A (en) 1999-04-12 2000-11-14 Softwarewow.Com, Inc. Method and system for serving software applications
US7200632B1 (en) * 1999-04-12 2007-04-03 Softricity, Inc. Method and system for serving software applications to client computers
US7370071B2 (en) * 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US6938096B1 (en) * 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
JP4276698B2 (ja) 1999-04-20 2009-06-10 富士通株式会社 データ通信システムおよび記録媒体
US6519643B1 (en) 1999-04-29 2003-02-11 Attachmate Corporation Method and system for a session allocation manager (“SAM”)
US6385766B1 (en) 1999-05-20 2002-05-07 Dell Usa L.P. Method and apparatus for windows-based installation for installing software on build-to-order computer systems
US6966060B1 (en) 1999-07-02 2005-11-15 Microsoft Corporation Method and system for remote client installation
US6691232B1 (en) * 1999-08-05 2004-02-10 Sun Microsystems, Inc. Security architecture with environment sensitive credential sufficiency evaluation
US6385768B1 (en) 1999-09-30 2002-05-07 Unisys Corp. System and method for incorporating changes as a part of a software release
KR20010109271A (ko) * 1999-10-01 2001-12-08 추후제출 데이터보안 제공을 위한 시스템과 방법
WO2001026267A1 (en) * 1999-10-05 2001-04-12 Ejasent Inc. Virtual port multiplexing
US6763379B1 (en) 1999-10-14 2004-07-13 Ideaflood, Inc. System, apparatus and method for presenting and displaying content on a wide area network
US6351776B1 (en) * 1999-11-04 2002-02-26 Xdrive, Inc. Shared internet storage resource, user interface system, and method
IL132916A (en) 1999-11-14 2004-02-08 Mcafee Inc Method and system for intercepting an application program interface
US6766457B1 (en) 1999-12-07 2004-07-20 Unisys Corporation Method for controlling access to a multiplicity of objects using a customizable object-oriented access control hook
US6826624B1 (en) 1999-12-09 2004-11-30 International Business Machines Corporation Method and apparatus for network resource access request redirection
US6854009B1 (en) * 1999-12-22 2005-02-08 Tacit Networks, Inc. Networked computer system
US7213247B1 (en) 2000-01-10 2007-05-01 Wind River Systems, Inc. Protection domains for a computer operating system
US6597366B1 (en) 2000-01-14 2003-07-22 International Business Machines Corporation Transparent general purpose object isolation for multi-tier distributed object environments
US7765542B2 (en) * 2000-01-23 2010-07-27 Symantec Corporation Method and system for describing and extracting application information
US6195650B1 (en) 2000-02-02 2001-02-27 Hewlett-Packard Company Method and apparatus for virtualizing file access operations and other I/O operations
US20010047386A1 (en) * 2000-02-17 2001-11-29 Domenikos George C. Systems and methods for supporting on-line delivery of communication services
US6567974B1 (en) * 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
US6557168B1 (en) * 2000-02-25 2003-04-29 Sun Microsystems, Inc. System and method for minimizing inter-application interference among static synchronized methods
US20020065864A1 (en) 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020174227A1 (en) 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US20020059274A1 (en) 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20020049608A1 (en) * 2000-03-03 2002-04-25 Hartsell Neal D. Systems and methods for providing differentiated business services in information management environments
US20020108059A1 (en) 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
US20020107903A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US20020107990A1 (en) 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US20020095400A1 (en) 2000-03-03 2002-07-18 Johnson Scott C Systems and methods for managing differentiated service in information management environments
US20030236861A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
US20020105972A1 (en) 2000-03-03 2002-08-08 Richter Roger K. Interprocess communications within a network node using switch fabric
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20020107989A1 (en) 2000-03-03 2002-08-08 Johnson Scott C. Network endpoint system with accelerated data path
US20020116452A1 (en) 2000-03-03 2002-08-22 Surgient Networks, Inc. Network connected computing system including storage system
US20020049841A1 (en) * 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
US20030236919A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network connected computing system
US20030236837A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Content delivery system providing accelerate content delivery
AU2001243502A1 (en) * 2000-03-09 2001-09-17 Exent Technologies, Inc. Registry emulation
US6779179B1 (en) * 2000-03-20 2004-08-17 Exent Technologies, Inc. Registry emulation
US20020080170A1 (en) * 2000-03-13 2002-06-27 Goldberg Elisha Y. Information management system
US6976037B1 (en) * 2000-03-27 2005-12-13 Microsoft Corporation Method and systems for DLL/COM redirection
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US6553377B1 (en) * 2000-03-31 2003-04-22 Network Associates, Inc. System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
US6981041B2 (en) 2000-04-13 2005-12-27 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, an integrated virtual office environment, remotely accessible via a network-connected web browser, with remote network monitoring and management capabilities
US7287259B2 (en) 2000-04-24 2007-10-23 Microsoft Corporation Isolating assembly versions for binding to application programs
AU2001264989A1 (en) 2000-05-25 2001-12-03 Exent Technologies, Inc. Disk caching
US20050091511A1 (en) 2000-05-25 2005-04-28 Itay Nave Useability features in on-line delivery of applications
US6990513B2 (en) 2000-06-22 2006-01-24 Microsoft Corporation Distributed computing services platform
WO2002007364A2 (en) 2000-07-17 2002-01-24 Eplication Networks Ltd. BANDWIDTH SAVINGS AND QoS IMPROVEMENT FOR WWW SITES BY CATCHING STATIC AND DYNAMIC CONTENT ON A DISTRIBUTED NETWORK OF CACHES
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US7065637B1 (en) 2000-08-24 2006-06-20 Veritas Operating Corporating System for configuration of dynamic computing environments using a visual interface
US7127705B2 (en) 2000-09-06 2006-10-24 Oracle International Corporation Developing applications online
AU2001290796A1 (en) 2000-09-11 2002-03-26 Into Networks, Inc. Systems and methods for delivering content over a computer network
AU2001289010A1 (en) 2000-09-12 2002-03-26 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity ina computing environment
US7958185B2 (en) * 2000-09-18 2011-06-07 Bentley Systems, Inc. Spatial data enabled engineering, construction, and operations computer-aided design (CAD) project system, method and computer program product
US6757894B2 (en) * 2000-09-26 2004-06-29 Appstream, Inc. Preprocessed applications suitable for network streaming applications and method for producing same
US20020087717A1 (en) * 2000-09-26 2002-07-04 Itzik Artzi Network streaming of multi-application program code
US7089553B1 (en) 2000-10-12 2006-08-08 International Business Machines Corporation Method, system, computer program product, and article of manufacture for downloading a remote computer program according to a stored configuration
US8831995B2 (en) * 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US6901586B1 (en) * 2000-11-06 2005-05-31 Sun Microsystems, Inc. Safe language static variables initialization in a multitasking system
US20020087883A1 (en) * 2000-11-06 2002-07-04 Curt Wohlgemuth Anti-piracy system for remotely served computer applications
US6918113B2 (en) * 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6959320B2 (en) * 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US6851114B1 (en) * 2000-11-06 2005-02-01 Sun Microsystems, Inc. Method for improving the performance of safe language multitasking
US20020083183A1 (en) * 2000-11-06 2002-06-27 Sanjay Pujare Conventionally coded application conversion system for streamed delivery and execution
US20020107962A1 (en) 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US20020107971A1 (en) 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
US20020065919A1 (en) 2000-11-30 2002-05-30 Taylor Ian Lance Peer-to-peer caching network for user data
US7133923B2 (en) 2000-12-11 2006-11-07 Acme Packet, Inc. System and method for assisting in controlling real-time transport protocol flow through multiple networks via screening
US6889222B1 (en) 2000-12-26 2005-05-03 Aspect Communications Corporation Method and an apparatus for providing personalized service
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US7562110B2 (en) 2001-01-11 2009-07-14 F5 Networks, Inc. File switch and switched file system
US7206819B2 (en) * 2001-01-18 2007-04-17 Sun Microsystems, Inc. Method and apparatus for providing virtual namespaces for active computing environments
JP2002229838A (ja) 2001-02-02 2002-08-16 Matsushita Graphic Communication Systems Inc ネットワークスキャナ・ファイル送受信システムおよびそのユーザ端末装置並びにファイル送受信方法
US7092987B2 (en) 2001-02-13 2006-08-15 Educational Testing Service Remote computer capabilities querying and certification
US7461144B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with enhanced security
US7099948B2 (en) 2001-02-16 2006-08-29 Swsoft Holdings, Ltd. Virtual computing environment
JP2004530191A (ja) 2001-02-22 2004-09-30 アクセンチュア グローバル サービスィズ ゲーエムベーハー ウェブ・サービスで構成された、インタネット・ホスティング・ビジネス・アプリケーションの開発システム
US7110936B2 (en) 2001-02-23 2006-09-19 Complementsoft Llc System and method for generating and maintaining software code
US7191439B2 (en) 2001-02-28 2007-03-13 Palmsource, Inc. Verification of software application attributes for optimal compatibility with a software system
US6928462B2 (en) 2001-03-06 2005-08-09 Hewlett-Packard Development Company, L.P. System and method for distributed processing of non-processable elements of a document to be rendered on a client
US8019835B2 (en) 2001-04-20 2011-09-13 Hewlett-Packard Development Company, L.P. Automated provisioning of computing networks using a network database data model
US6928464B2 (en) 2001-04-30 2005-08-09 Microsoft Corporation Systems and methods for unified remote control access
US7305658B1 (en) 2001-05-07 2007-12-04 Microsoft Corporation Method and system for application partitions
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US7287649B2 (en) 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US7640153B2 (en) 2001-06-04 2009-12-29 Hewlett-Packard Development Company, L.P. Networked client-server architecture for transparently transforming and executing applications
KR100676697B1 (ko) 2001-06-13 2007-01-31 삼성전자주식회사 컴퓨터용 소프트웨어의 언어표시방법 및언어표시시스템과, 언어표시방법과 언어표시시스템이저장된 기록매체
US7343297B2 (en) 2001-06-15 2008-03-11 Microsoft Corporation System and related methods for managing and enforcing software licenses
WO2002103521A1 (en) 2001-06-19 2002-12-27 Cable & Wireless Internet Services, Inc. Real-time streaming media measurement system and method
US7027051B2 (en) * 2001-06-29 2006-04-11 International Business Machines Corporation Graphical user interface for visualization of sampled data compared to entitled or reference levels
US7962950B2 (en) * 2001-06-29 2011-06-14 Hewlett-Packard Development Company, L.P. System and method for file system mandatory access control
US20040128346A1 (en) * 2001-07-16 2004-07-01 Shmuel Melamed Bandwidth savings and qos improvement for www sites by catching static and dynamic content on a distributed network of caches
US7536546B2 (en) * 2001-08-28 2009-05-19 Acme Packet, Inc. System and method for providing encryption for rerouting of real time multi-media flows
EP1563389A4 (en) 2001-08-01 2008-06-25 Actona Technologies Ltd VIRTUAL DATA DISTRIBUTION NETWORK
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US7117243B2 (en) 2001-10-02 2006-10-03 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
US7330872B2 (en) * 2001-10-02 2008-02-12 Citrix Systems, Inc. Method for distributed program execution with web-based file-type association
US6952714B2 (en) * 2001-10-02 2005-10-04 Citrix Systems, Inc. Method for distributed program execution with server-based file type association
AU2002332001B2 (en) 2001-10-02 2006-11-30 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
US6907428B2 (en) * 2001-11-02 2005-06-14 Cognos Incorporated User interface for a multi-dimensional data store
US7624391B2 (en) 2001-11-05 2009-11-24 Hewlett-Packard Development Company, L.P. Device-based model for software driver delivery and upgrade
RU2001132215A (ru) * 2001-11-29 2003-07-20 Самсунг Электроникс, Лтд. (Kr) Способ и система сетевого сканирования изображения
US7051340B2 (en) * 2001-11-29 2006-05-23 Hewlett-Packard Development Company, L.P. System and method for isolating applications from each other
US7373406B2 (en) 2001-12-12 2008-05-13 Valve Corporation Method and system for effectively communicating file properties and directory structures in a distributed file system
US20030115458A1 (en) * 2001-12-19 2003-06-19 Dongho Song Invisable file technology for recovering or protecting a computer file system
US20040039594A1 (en) * 2002-01-09 2004-02-26 Innerpresence Networks, Inc. Systems and methods for dynamically generating licenses in a rights management system
GB2384874B (en) 2002-01-31 2005-12-21 Hewlett Packard Co Apparatus for setting access requirements
AU2003202356A1 (en) * 2002-02-07 2003-09-02 Thinkdynamics Inc. Method and system for managing resources in a data center
US20030167463A1 (en) 2002-03-01 2003-09-04 Microsft Corporation Custom application-compatibility systems and layers
US20030172138A1 (en) 2002-03-11 2003-09-11 Mccormack Jonathan I. System and method for managing two or more electronic devices
US7577722B1 (en) 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
AU2003241292A1 (en) * 2002-04-11 2003-10-27 Linuxcare, Inc. Managing multiple virtual machines
US7191469B2 (en) 2002-05-13 2007-03-13 Green Border Technologies Methods and systems for providing a secure application environment using derived user accounts
AU2003239385A1 (en) * 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US20040204073A1 (en) 2002-05-15 2004-10-14 Motorola, Inc. Network technology augmented user device framework
US7139798B2 (en) 2002-05-17 2006-11-21 Groove Networks, Inc. Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system
US7620956B2 (en) * 2003-06-11 2009-11-17 Symantec Corporation Portable memory storage devices with application layers
US7549164B2 (en) * 2003-06-11 2009-06-16 Symantec Corporation Intrustion protection system utilizing layers and triggers
US7496931B2 (en) * 2003-12-30 2009-02-24 Symantec Corporation Portable memory storage devices containing public context application layers
WO2003107183A1 (en) 2002-06-12 2003-12-24 Fslogic Inc. Systems and methods for the creation of software packages using layered systems
US7512977B2 (en) * 2003-06-11 2009-03-31 Symantec Corporation Intrustion protection system utilizing layers
US7165260B2 (en) * 2002-06-12 2007-01-16 Fsl, L.L.C. Layered computing systems and methods for insecure environments
US7367044B2 (en) 2002-06-14 2008-04-29 Clink Systems, Ltd. System and method for network operation
US7454458B2 (en) 2002-06-24 2008-11-18 Ntt Docomo, Inc. Method and system for application load balancing
EP1388812A1 (en) 2002-07-04 2004-02-11 Ronald E. Dr. Kates Method for training a learning-capable system
US6919642B2 (en) 2002-07-05 2005-07-19 Industrial Technology Research Institute Method for bonding IC chips to substrates incorporating dummy bumps and non-conductive adhesive and structures formed
US7171469B2 (en) 2002-09-16 2007-01-30 Network Appliance, Inc. Apparatus and method for storing data in a proxy cache in a network
US7523071B2 (en) * 2002-09-16 2009-04-21 Yahoo! Inc. On-line software rental
US7051053B2 (en) * 2002-09-30 2006-05-23 Dinesh Sinha Method of lazily replicating files and monitoring log in backup file system
US6850943B2 (en) * 2002-10-18 2005-02-01 Check Point Software Technologies, Inc. Security system and methodology for providing indirect access control
US7624397B1 (en) 2002-10-22 2009-11-24 Adobe Systems Incorporated Universal component system for application servers
US7085755B2 (en) 2002-11-07 2006-08-01 Thomson Global Resources Ag Electronic document repository management and access system
US7203941B2 (en) * 2002-11-14 2007-04-10 Microsoft Corporation Associating a native resource with an application
US7475241B2 (en) 2002-11-22 2009-01-06 Cisco Technology, Inc. Methods and apparatus for dynamic session key generation and rekeying in mobile IP
WO2004051964A2 (en) 2002-12-03 2004-06-17 Funk Software, Inc. Tunneled authentication protocol for preventing man-in-the-middle attacks
US7409405B1 (en) 2002-12-06 2008-08-05 Adobe Systems Incorporated File dispatcher for multiple application targets
US6798755B2 (en) 2002-12-31 2004-09-28 Motorola, Inc. Apparatus and method for controlling and managing individual directed sessions in a communications system
US7937551B2 (en) 2003-01-21 2011-05-03 Dell Products L.P. Storage systems having differentiated storage pools
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
CN100356326C (zh) * 2003-03-21 2007-12-19 清华大学 基于操作栈记录的恢复的Java线程迁移的方法
WO2004090672A2 (en) 2003-04-02 2004-10-21 Network Clarity, Inc. Methods and systems for controlling network infrastructure devices
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US7735057B2 (en) * 2003-05-16 2010-06-08 Symantec Corporation Method and apparatus for packaging and streaming installation software
JP2004362144A (ja) 2003-06-03 2004-12-24 Hitachi Ltd 運用管理方法及び実施装置並びに処理プログラム
US7437734B2 (en) * 2003-08-12 2008-10-14 Hewlett-Packard Development Company, L.P. Propagating web transaction context into common object model (COM) business logic components
WO2005024567A2 (en) 2003-08-18 2005-03-17 Spearman Anthony C Network communication security system, monitoring system and methods
WO2005024665A1 (en) 2003-08-21 2005-03-17 Microsoft Corporation Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
EP1646954A4 (en) 2003-08-21 2008-06-11 Microsoft Corp SYSTEMS AND METHOD FOR INTERFACING APPLICATION PROGRAMS WITH A POST-BASED MEMORY PLATFORM
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
WO2005024550A2 (en) 2003-08-21 2005-03-17 Microsoft Corporation System and method for implementation of a digital image schema in a hardware/software interface
CA2533088C (en) 2003-08-21 2014-04-29 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7203696B2 (en) * 2003-08-29 2007-04-10 Microsoft Corporation Dynamic registry partitioning
US20080222160A1 (en) * 2003-09-15 2008-09-11 Macdonald Craig Method and system for providing a program for execution without requiring installation
US20050065937A1 (en) * 2003-09-22 2005-03-24 International Business Machines Corporation Virtual resources method, system, and service
US20070067366A1 (en) * 2003-10-08 2007-03-22 Landis John A Scalable partition memory mapping system
US7594018B2 (en) * 2003-10-10 2009-09-22 Citrix Systems, Inc. Methods and apparatus for providing access to persistent application sessions
WO2005043360A1 (en) * 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20050091535A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US7533370B2 (en) 2003-10-28 2009-05-12 Exent Technologies, Ltd. Security features in on-line and off-line delivery of applications
US7865529B2 (en) * 2003-11-18 2011-01-04 Intelligent Model, Limited Batch processing apparatus
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US7293267B1 (en) * 2003-12-22 2007-11-06 Sun Microsystems Inc System and method for performing speculative initialization of application models for a cloned runtime system process
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US8818950B2 (en) * 2004-01-22 2014-08-26 Symantec Corporation Method and apparatus for localized protected imaging of a file system
US7555772B2 (en) 2004-01-26 2009-06-30 Juniper Networks, Inc. Wireless firewall with tear down messaging
US7194451B2 (en) 2004-02-26 2007-03-20 Microsoft Corporation Database monitoring system
US20050193396A1 (en) 2004-02-27 2005-09-01 Stafford-Fraser James Q. Computer network architecture and method of providing display data
US7720054B2 (en) 2004-03-02 2010-05-18 Cisco Technology, Inc. Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol
US7496847B2 (en) 2004-04-29 2009-02-24 International Business Machines Corporation Displaying a computer resource through a preferred browser
US7707583B2 (en) * 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
US9998802B2 (en) 2004-06-07 2018-06-12 Sling Media LLC Systems and methods for creating variable length clips from a media stream
US8972977B2 (en) * 2004-06-30 2015-03-03 Microsoft Technology Licensing, Llc Systems and methods for providing seamless software compatibility using virtual machines
US7426661B2 (en) * 2004-07-20 2008-09-16 Softricity, Inc. Method and system for minimizing loss in a computer application
US20060020937A1 (en) * 2004-07-21 2006-01-26 Softricity, Inc. System and method for extraction and creation of application meta-information within a software application repository
KR20070034113A (ko) 2004-07-21 2007-03-27 코닌클리케 필립스 일렉트로닉스 엔.브이. 정보매체와, 이 정보매체를 판독하는 시스템 및 장치
US7424719B2 (en) * 2004-08-02 2008-09-09 Hewlett-Packard Development Company, L.P. Application with multiple embedded drivers
EP1784725A1 (en) * 2004-08-03 2007-05-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
US7647586B2 (en) * 2004-08-13 2010-01-12 Sun Microsystems, Inc. System and method for providing exceptional flow control in protected code through watchpoints
US7428754B2 (en) * 2004-08-17 2008-09-23 The Mitre Corporation System for secure computing using defense-in-depth architecture
US8578371B2 (en) * 2004-08-31 2013-11-05 International Business Machines Corporation Software distribution method and system with automatic prerequisite installation
US9124653B2 (en) * 2004-09-03 2015-09-01 Symantec Corporation Method and apparatus for allowing sharing of streamable applications
US7797699B2 (en) * 2004-09-23 2010-09-14 Intel Corporation Method and apparatus for scheduling virtual machine access to shared resources
US7752600B2 (en) 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US7853947B2 (en) 2004-09-30 2010-12-14 Citrix Systems, Inc. System for virtualizing access to named system objects using rule action associated with request
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US20060069662A1 (en) * 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
WO2006039206A1 (en) 2004-09-30 2006-04-13 Citrix Systems, Inc. A method and system for accessing resources
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US20060089992A1 (en) * 2004-10-26 2006-04-27 Blaho Bruce E Remote computing systems and methods for supporting multiple sessions
GB2419697A (en) 2004-10-29 2006-05-03 Hewlett Packard Development Co Virtual overlay infrastructures each having an infrastructure controller
US20060136389A1 (en) 2004-12-22 2006-06-22 Cover Clay H System and method for invocation of streaming application
US20060149845A1 (en) 2004-12-30 2006-07-06 Xinnia Technology, Llc Managed quality of service for users and applications over shared networks
US20060184935A1 (en) 2005-02-11 2006-08-17 Timothy Abels System and method using virtual machines for decoupling software from users and services
US7774830B2 (en) 2005-03-14 2010-08-10 Microsoft Corporation Access control policy engine controlling access to resource based on any of multiple received types of security tokens
US7725893B2 (en) 2005-04-28 2010-05-25 Sap Aktiengesellschaft Platform independent replication
US8193745B2 (en) 2005-05-13 2012-06-05 Schlumberger Technology Corporation Filtering and boosting a signal from a drive circuit
US8375386B2 (en) * 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
US7950008B2 (en) * 2005-07-06 2011-05-24 International Business Machines Corporation Software installation in multiple operating systems
US7779034B2 (en) 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7496576B2 (en) * 2006-03-30 2009-02-24 Microsoft Corporation Isolated access to named resources
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US7941508B2 (en) * 2006-09-29 2011-05-10 Hewlett-Packard Development Company, L.P. Associating multiple devices with remote computers
US8752045B2 (en) 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US9015703B2 (en) 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US7830882B2 (en) * 2006-11-17 2010-11-09 Intel Corporation Switch scaling for virtualized network interface controllers
US8336046B2 (en) 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US20100100892A1 (en) 2008-10-16 2010-04-22 International Business Machines Corporation Managing hosted virtualized operating system environments
US8352937B2 (en) * 2009-08-03 2013-01-08 Symantec Corporation Streaming an application install package into a virtual environment

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101742029B (zh) * 2008-11-13 2014-08-06 富士施乐株式会社 信息处理器和信息处理方法
CN107438081B (zh) * 2011-10-28 2021-08-06 谷歌有限责任公司 客户端设备的策略执行
CN107438081A (zh) * 2011-10-28 2017-12-05 谷歌公司 客户端设备的策略执行
CN105589715B (zh) * 2014-11-10 2019-11-05 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
CN105589715A (zh) * 2014-11-10 2016-05-18 日本电气株式会社 信息处理设备、库加载方法和计算机可读介质
CN107431687B (zh) * 2015-03-19 2020-11-24 国际商业机器公司 多租户环境中的进程间通信
CN107431687A (zh) * 2015-03-19 2017-12-01 国际商业机器公司 多租户环境中的进程间通信
US11494341B2 (en) 2015-03-19 2022-11-08 International Business Machines Corporation Inter-process communication in a multi-tenant environment
CN109074269A (zh) * 2016-07-08 2018-12-21 惠普发展公司,有限责任合伙企业 确定设备磨损率
US11429283B2 (en) 2016-07-08 2022-08-30 Hewlett-Packard Development Company, L.P. Determining a device wear-rate
CN109582458A (zh) * 2017-09-28 2019-04-05 北京国双科技有限公司 资源信息加载方法、装置、存储介质及处理器
CN109783230A (zh) * 2018-12-17 2019-05-21 平安普惠企业管理有限公司 基于信号量的流量控制方法、装置、计算机设备和存储介质
CN109934327A (zh) * 2019-02-18 2019-06-25 星汉智能科技股份有限公司 一种智能卡的计时方法及系统
CN113806107A (zh) * 2021-08-25 2021-12-17 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质
CN113806107B (zh) * 2021-08-25 2024-02-13 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US8132176B2 (en) 2012-03-06
US20060085789A1 (en) 2006-04-20
CN101073058A (zh) 2007-11-14
CN101069157B (zh) 2013-12-18
CN101065727A (zh) 2007-10-31
CN101069156A (zh) 2007-11-07
CN101073058B (zh) 2012-02-29
US20070094667A1 (en) 2007-04-26
US8302101B2 (en) 2012-10-30
CN101329636A (zh) 2008-12-24
US7676813B2 (en) 2010-03-09
US8352964B2 (en) 2013-01-08
CN101069156B (zh) 2013-08-21
US20060265714A1 (en) 2006-11-23
US8042120B2 (en) 2011-10-18
US20070067255A1 (en) 2007-03-22
US7680758B2 (en) 2010-03-16
US20060075381A1 (en) 2006-04-06
CN100520721C (zh) 2009-07-29
US20060174223A1 (en) 2006-08-03
CN101329636B (zh) 2014-01-29
US20110173618A1 (en) 2011-07-14

Similar Documents

Publication Publication Date Title
CN101069157A (zh) 用于访问资源的方法和系统
CN1313924C (zh) 用于便携运行的操作系统的系统和方法
CN1266598C (zh) 用于应用程序执行的动态java类的加载
CN1275152C (zh) 制造和更新可插入的便携式操作系统模块的系统和方法
CN1740970A (zh) 无缝地比较对象的系统和方法
CN1869923A (zh) 系统数据接口及相关体系结构
CN1146786C (zh) 用于自动修改数据库存取方法的方法
CN1922576A (zh) 操作系统
CN1809815A (zh) 管理锁定和事务
CN1846204A (zh) 用于提供数据驱动命令行输出的机制
CN101052949A (zh) 操作系统
CN1534449A (zh) 网络外围设备的外围设备驱动程序维护方法
CN1359489A (zh) 用于构筑建模工具的装置和方法
CN1826593A (zh) 通过网络以事务形式办理文件操作的方法与系统
CN1959631A (zh) 一种基于itron的应用软件自主装配技术
CN1495602A (zh) 成像装置、信息处理装置、程序执行方法及程序生成方法
CN1613240A (zh) 基于网络的软件扩展
CN1524216A (zh) 软件构件插件程序结构的系统和方法
CN1677365A (zh) 通过属性控制的测试实例继承
CN1690993A (zh) 信息处理装置、信息处理方法及随其使用的程序和记录介质
CN1568458A (zh) 无需修改现有代码即可增加新软件特征的方法
CN1735889A (zh) 分析部分未解析的输入的机制
CN1098501C (zh) 用于sql关系数据库的仿真器及方法
CN1297890C (zh) 集中管理自含式桌面的系统和方法
CN1059981A (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