CN102460382A - 标注虚拟应用进程 - Google Patents

标注虚拟应用进程 Download PDF

Info

Publication number
CN102460382A
CN102460382A CN201080027468XA CN201080027468A CN102460382A CN 102460382 A CN102460382 A CN 102460382A CN 201080027468X A CN201080027468X A CN 201080027468XA CN 201080027468 A CN201080027468 A CN 201080027468A CN 102460382 A CN102460382 A CN 102460382A
Authority
CN
China
Prior art keywords
virtual
request
application
token
resource
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
CN201080027468XA
Other languages
English (en)
Other versions
CN102460382B (zh
Inventor
李晖
J·M·希恩
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102460382A publication Critical patent/CN102460382A/zh
Application granted granted Critical
Publication of CN102460382B publication Critical patent/CN102460382B/zh
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/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/45558Hypervisor-specific management and integration aspects
    • 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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

这里描述了虚拟化系统,该系统便于虚拟化应用和主操作系统间的通信以允许应用正确地存取应用所引用的资源。当操作系统创建虚拟化的应用进程时,虚拟化系统用一个标识符来标注与该进程相关联的数据结构,所述标识符标识了和该进程相关联的虚拟化应用环境。当操作系统组件代表始发的虚拟进程作出请求时,虚拟化驱动程序检验与该线程相关联的数据结构以确定助手进程正在代表虚拟化应用进程进行工作。在发现线程正在进行虚拟进程工作之际,虚拟化驱动程序将助手进程的线程定向到虚拟应用的资源,允许助手进程以正确数据完成请求的工作。

Description

标注虚拟应用进程
背景技术
在计算机科学中,虚拟机是执行类似真实物理硬件的程序的机器(计算机)的软件实现。系统虚拟机(有时称为硬件虚拟机)允许在不同的虚拟机之间共享底层物理机器资源,每个虚拟机运行其自己的操作系统。执行一个或多个虚拟机的软件层被称为虚拟机监控程序或系统管理程序。系统管理程序可以在裸硬件(类型1或虚拟本机)上运行,或者在操作系统顶部(类型2或主存的虚拟机)运行。系统虚拟机的一些优点有:多个操作系统环境可以在同一台计算机上共存,彼此强有力的隔离;虚拟机可以提供和真实机器的体系结构有些不同的指令集体系结构;且管理员可以通过在一个物理计算机系统上运行多个虚拟机来巩固未充分利用的服务器。在服务器巩固中经常使用多个虚拟机,其中每个虚拟机运行其自身的操作系统(称为客操作系统),在单独机器上运行以避免干扰所使用的不同的服务改为在同一物理机器的分开的虚拟机中运行。
运行多个操作系统允许在几个单任务的操作系统间对单个计算机进行时间共享。该技术包括用于在客操作系统和内存虚拟化间共享CPU资源以共享主机上的内存的CPU资源。客操作系统不需要全部相同,因此可能在同一台计算机上运行不同的操作系统(例如微软WindowsTM和Linux、或较低版本的操作系统以便支持尚未被导至最新操作系统版本的软件。)虚拟机支持不同的客操作系统的用途有时也用在嵌入式系统中。一种用途是在和像Linux或WindowTM这样的高级操作系统同时支持实时操作系统。虚拟机的另一种用途是执行在“沙箱”中未信任的操作系统。虚拟机也可以提供用于操作系统开发的其它优点,包括改进的调试存取和较快的重新启动。
应用虚拟化是在应用层提供虚拟环境的技术。例如,主操作系统可以本机地运行一些应用,而同时提供运行其它应用(即,虚拟化的应用)的虚拟环境。和其中以允许运行操作系统的方式来对整个机器进行虚拟化的上述机器层的虚拟化不同,应用虚拟化提供了足以运行单个应用或多个应用的虚拟环境。这可以允许操作系统,例如,运行内在地彼此冲突的应用。应用虚拟化在主操作系统中本机运行的应用和在虚拟环境中运行的应用之间对用户模糊区别。例如,两类应用可以并排出现在操作系统外壳所提供的任务栏或菜单中。
尽管虚拟化的应用对用户来说看上去和本机应用类似,但是虚拟化的应用所预期或要求的资源可能未安装在主操作系统上。例如,文件、注册表项、配置设置和其它资源可能不可用,或者被存储在和虚拟环境向应用呈现的位置所不同的位置中。在一些情况下,虚拟化的应用包括含有虚拟化应用所期望的资源的包或存档格式的其它对象。可能难以确保应用能找到未本地安装的资源,因此应用会正确地运行并且保持不察觉虚拟化环境。资源请求的类可以起源于在虚拟应用的进程内被调用的操作系统代码。这些请求可以被编组并且被提供给在虚拟环境之外的助手进程。该助手进程可以代表一个或多个虚拟进程向主操作系统作出请求。助手进程为了要正确地完成其工作,它可能需要存取虚拟环境所设立的位置中的资源。
概述
这里描述了虚拟化系统,该系统便于虚拟化应用和主操作系统间的通信以允许应用正确地存取应用所引用的资源。当操作系统为虚拟化应用创建进程时,虚拟化系统用一个标识符来标注与该进程相关联的数据结构,所述标识符标识了和该进程相关联的虚拟应用环境。当操作系统组件通过助手进程代表虚拟进程作出请求时,接收请求的虚拟化驱动程序检验与该进程相关联的数据结构以确定助手进程是否正在代表虚拟化的应用进程进行工作。在发现助手进程的线程正在代表虚拟进程进行工作之际,虚拟化驱动程序将助手进程的线程的请求指向到虚拟应用的资源,允许助手进程完成以正确数据请求的工作。因此,虚拟化系统便于对使用虚拟应用环境内包含的资源(即,虚拟化资源)的应用进行应用虚拟化。
提供本发明内容以便以简化形式介绍在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
图1是示出在一个实施例中的虚拟化系统的各组件的框图。
图2是示出在一个实施例中与在主计算机上运行的进程相关联的数据的数据结构图。
图3是示出一个实施例中、系统用虚拟化信息来标注进程令牌的处理的流程图。
图4是示出了一个实施例中、虚拟化系统响应于存取资源的请求的处理的流程图。
具体实施方式
这里描述了虚拟化系统,该系统便于虚拟化应用和主操作系统间的通信以允许应用正确地存取应用所引用的资源。在一些实施例中,虚拟化系统标注虚拟进程以标识该进程,使得主操作系统能正确地将任何助手进程请求指向到虚拟化的资源。当操作系统创建虚拟化的应用进程(例如,响应于用户从操作系统外壳调用应用)时,虚拟化系统用一个标识符来标注与该进程相关联的数据结构(例如令牌),该标识符标识了与该进程相关联的虚拟应用环境。当操作系统组件(例如助手进程)代表始发的虚拟进程作出请求时,虚拟化驱动程序检验与正在执行的线程相关联的数据结构以确定助手进程的线程正在代表虚拟化应用进程进行工作。在发现线程正在进行虚拟进程工作之际,虚拟化驱动程序将助手进程的线程定向到虚拟应用的资源,允许助手进程完成以正确数据请求的工作。在一些实施例中,虚拟化系统在进程数据结构中选择了由操作系统自动复制到模仿进程和子进程的字段,使得当助手进程代表虚拟化的应用进程进行工作时,助手进程的线程会用标识始发虚拟应用环境的标识符来标记。因此,虚拟化系统便于对使用虚拟化资源的应用进行应用虚拟化。
操作系统具有控制对像文件这样的资源的存取的安全性原理。例如,当使用Microsoft WindowsTM NTTM时,令牌是每个进程所具有的安全性原理。当线程模仿除线程的进程的用户以外的用户时,线程也可以具有令牌。尤其是,令牌包括多个安全性标识符(SID),安全性标识符标识了发起进程的用户以及用户所属的组。安全性子系统使用SID以及存取控制列表(ACL)来确定用户是否有对特定资源(例如文件或注册表项)的存取权利,存取控制列表描述了可以存取资源的用户。例如,在缺省情况下,运行Microsoft WindowsTMExplorerTM的非管理员用户的令牌不具有附在该令牌上的正确SID以允许用户对内核操作系统文件c:\windows\system32\ntoskrnl.exe进行写操作。UNIX具有类似的概念,称为组标识(groupid)。
应用虚拟化的一方面包括修改到操作系统的进程请求以便欺骗应用/进程认为该进程是本地安装的,但实际上其数据和状态位于分开的存储中。例如,虚拟化应用可以包括存储应用的数据的包或指定的目录。在一些实施例中,虚拟化系统包括内核模式驱动程序,该内核模式驱动程序拦截诸如文件或注册表开口的名字空间资源请求、并且修改请求以引用正确的位置(例如,在应用的分开的存储中)。例如,一种类型的修改可以是将开口从路径“c:\windows\winsxs\filedir1”重定向至“Q:\app\vfs\windows\winsxs\filedir1”。通过将包含应用的数据的文件夹置于本地机器上,这样做使应用能在不改变本地系统的同时找到其数据。
特定请求未以清除格式进入内核。这些请求使用本地过程调用(LPC)来将请求传送至助手操作系统进程。这个的一个例子是Microsoft WindowsTMSide-By-Side(SxS)。通过使用SxS,始发进程打开来自并排汇编件高速缓存的汇编件的特定版本以便加载和执行该汇编件的代码,该汇编件可能包含许多版本。一般而言,应用的进程中的动态链接库(DLL)(例如,kernel32.dll中的LoadLibrary)会使用LPC来调用到操作系统助手进程(例如,csrss.exe)中。被编组到助手进程中的数据部分是始发进程的令牌。在助手进程的线程中执行的并排代码使用令牌来模仿用户进程,并且打开助手进程的自身处理的适当目录。使用模仿确保了在代表应用作用时,助手进程的线程不具有除应用自身以外的进一步的安全性特权,使得系统保持安全。
在一些实施例中,助手进程文件请求然后进入重定向过滤驱动程序。通常,重定向过滤驱动程序不能确定请求始发自哪个进程,因为它不能确认请求的始发进程。考虑用户具有不止一个虚拟应用在运行的例子。在该情况下,一个虚拟应用可能在其虚拟名字空间中具有文件夹“c:\windows\winsxs\filedir1”,但另一个虚拟应用可能没有文件夹。第一应用应当能看到文件夹,但是第二应用应当不能。
这里描述的虚拟化系统通过添加附加数据来处理令牌(即,标注令牌)来解决该问题,该附加数据包括允许其它虚拟化组件识别和定位正确的虚拟应用环境和数据的标识符。通过能定位正确的虚拟应用环境,其它虚拟化组件可以使用正确的应用存储位置来满足资源请求(即,即使在请求中使用了不同的路径,组件也知道在哪里获得所请求的项)。这允许应用以及操作系统助手进程来找到资源以正确地运行虚拟化应用。
图1是示出在一个实施例中的虚拟化系统的各组件的框图。系统100包括应用虚拟化环境110、检测进程创建组件120、令牌标注组件130、接收资源请求组件140、存取标注的令牌组件150和重定向资源请求组件160。这些组件中的每一个都在此处进一步详细讨论。
应用虚拟化环境110提供了虚拟应用和主操作系统之间的间接级别。间接可能很难使应用近乎本机地运行,诸如当应用被设计成在主操作系统上运行(但可能在不同于常用位置的位置处存储资源)时。或者或另外,间接可以提供API,并且满足为其它操作系统或操作系统版本设计的应用所预期的其它约束条件。因此,应用虚拟化环境110向虚拟应用提供这样的环境,其中使用主操作系统的可用资源来为该环境设计应用。环境可以允许例如主操作系统来隔离易受病毒攻击或者具有软件缺陷的应用。
当主操作系统创建新进程时,检测进程创建组件120注册通知并且接收通知。许多应用通过调用操作系统所提供的API以及与初始进程线程相关联的数据来执行,所述操作系统设立一环境。这种API一般调用到内核模式中,以允许操作系统设立跟踪与新进程相关联的状态和其它信息的数据结构。操作系统可以提供钩住该进程的各个阶段的API,使得所感兴趣的组件可以在操作系统创建新进程时接收通知。检测进程创建组件120注册该通知,并且在创建新进程时被调用。组件120标识与新进程相关联的令牌,如果进程与虚拟化应用相关联,则组件120调用令牌标注组件130来将附加信息添加至虚拟进程的令牌。
令牌标注组件130向与虚拟进程相关联的令牌添加一个或多个数据字段,这些数据字段将进程标识为虚拟进程并且将该进程与特定的虚拟环境相关联。其它组件可以使用该信息作为进程执行,以便对存取虚拟环境中存储的数据的请求作出正确的响应。例如,系统100可以基于进程令牌、从虚拟环境而不是从与主操作系统相关联的注册表或文件存储来存取注册表项或文件。
接收资源请求组件140从一个或多个应用接收对主操作系统所管理的资源进行存取的请求。资源可以包括文件、注册表项等等。接收资源请求组件140可以包括用于接收或拦截来自应用的资源请求的用户或内核模式组件。组件140也可以从与主操作系统相关联的其它应用(例如,助手进程)接收请求,所述其它应用代表包括虚拟应用在内的多个应用进行操作。接收资源请求组件140调用存取标注的令牌组件150来确定进程属于虚拟应用或者代表虚拟应用而操作,并且确定关于该应用的其它信息。例如,操作系统助手进程(例如csrss.exe)的线程可以模仿调用它来执行一个或多个资源请求的应用虚拟进程。
存取标注的令牌组件150存取虚拟进程的令牌,并且读取与虚拟化系统100相关联的字段。例如,字段可以对应于令牌标注组件130所添加的字段。字段可以包括可用于标识始发虚拟进程所属的虚拟环境的信息。
重定向资源请求组件160接收从进程令牌存取的信息,并且将来自物理路径的资源请求重定向至虚拟路径。例如,虚拟应用可以尝试使用典型的操作系统路径c:\windows\system32\foo.dll来存取文件,重定向资源请求组件可以将路径改变到存储应用的另一位置,诸如Q:\apps\vfs\system\foo.dll。操作系统提供了用于存取资源的API和其它设备,诸如通过开式文件,但是虚拟化的应用可以包括要求操作系统在请求中嵌入的位置以外的位置存取资源。此外,虚拟化的应用可以包括附加步骤,诸如从打包格式解压缩虚拟化的应用数据、或者将虚拟化的应用数据从远程位置下载到本地主计算机。
在一些实施例中,虚拟化系统的组件可以在操作系统驱动程序内实现。例如,标注驱动程序可以包括检测进程创建组件120和令牌标注组件130。举另一个例子,重定向驱动程序可以包括接收资源请求组件140、存取标注的令牌组件150和重定向资源请求组件160。由于操作系统内的变化以及出于性能及其他原因,虚拟化系统可以用许多不同的方式实现,具有与上述类似功能的组件。
其上实现虚拟化系统的计算设备可包括中央处理单元、存储器、输入设备(例如,键盘和定点设备)、输出设备(例如,显示设备)和存储设备(例如,盘驱动器或其他非易失性存储介质)。存储器和存储设备是可以用实现或启用该系统的计算机可执行指令(例如,软件)来编码的计算机可读存储介质。此外,数据结构和消息结构可被存储或经由诸如通信链路上的信号等数据传送介质发送。可以使用各种通信链路,诸如因特网、局域网、广域网、点对点拨号连接、蜂窝电话网络等。
该系统的实施例可以在各种操作环境中实现,这些操作环境包括个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、数码照相机、网络PC、小型计算机、大型计算机、包括任何上述系统或设备中任一种的分布式计算环境等。计算机系统可以是蜂窝电话、个人数字助理、智能电话、个人计算机、可编程消费电子设备、数码相机等。
该系统可以在由一个或多个计算机或其他设备执行的诸如程序模块等计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图2是示出在一个实施例中与在主计算机上运行的进程相关联的数据的数据结构图。典型的操作系统为操作系统管理的每个进程创建进程数据210。进程数据210包括存储关于进程的状态及其他信息的信息,诸如包含安全性信息的令牌220。操作系统可以在进程存续期内的各个时刻存取令牌220,以便于存取资源并且保持主计算机的安全性。进程通常大量产生其它进程,令牌220包含一个复制部分230,始发进程所创建的子进程继承该复制部分。
此外,操作系统通常允许进程内的线程来模仿一个特定用户或其它线程,使得线程继承被模仿实体的安全性和其它特征。模仿可以复制和子进程的继承关系类似的复制部分230。复制部分230包括安全性信息240,诸如与令牌相关联的ACL和SID,安全性信息定义了令牌持有者的身份以及令牌持有者被允许存取的资源。虚拟化系统标注进程令牌以便将附加的虚拟化信息250包括在令牌的复制部分230内。虚拟化信息250指定了有助于在主计算机的主操作系统上正确地标识虚拟环境的信息。由于虚拟化信息250在复制部分230内,因此信息250对于子进程以及模仿始发进程的进程或线程来说是可用的。
图3是示出一个实施例中、虚拟化系统用虚拟化信息来标注进程令牌的处理的流程图。每个进程具有一个令牌,当进程创建线程或另一进程时,该新的线程或进程继承该令牌。在框310开始,虚拟化系统注册操作系统提供的回叫,该回叫响应于操作系统创建进程来发布。例如,虚拟化系统可以调用操作系统所提供的API,虚拟化系统可以通过该API来注册供操作系统调用的回叫功能。继续到框320,虚拟化系统等待操作系统向虚拟化系统通知:进程已被创建。
继续到框330中,虚拟化系统接收进程创建通知。例如,操作系统可以调用虚拟化系统所注册的通知回叫功能,并且向新进程提供句柄、进程标识符(PID)或其他信息。继续到框340,虚拟化系统标识新进程的应用环境。虚拟化系统确定该进程是否是虚拟化的应用进程。例如,编组服务或仅仅应用的映像位置可以向虚拟化系统通知:进程是虚拟化的应用进程。继续到框350,虚拟化系统创建定制SID、标识符或其他形式的标注。例如,令牌可以包括一列SID或与该进程相关联的其他安全性信息,虚拟化系统可以创建定制SID,而不是用户将进程标识为特定虚拟环境内的虚拟化应用进程。
继续到框360中,虚拟化系统将标注存储在进程令牌中。例如,系统可以将定制SID添加至与进程令牌相关联的SID列表。由于操作系统在进程创建新线程或进程时自动地复制进程令牌的复制部分,位于其中的信息会转发至虚拟化应用进程的孩子进程或模仿者。在框360之后,这些步骤结束。
在虚拟进程运行时,进程可以执行不透明-LPC请求。虚拟进程打包数据以传送至助手进程,包括进程或线程的令牌,并且将数据发送至助手进程。助手进程可以是具有对系统上大多数资源的存取的受信任操作系统进程。为了防止用户进程的资源请求损害系统,助手进程在存取资源之前模仿始发进程令牌。模仿产生了新的有效线程令牌,该新的有效线程令牌包括和从传入的始发进程令牌复制的标识符相同的定制SID或其他形式的标识符。
图4是示出了一个实施例中、虚拟化系统响应于存取资源的请求的处理的流程图。在框410开始,虚拟化系统接收资源存取请求。例如,应用可以调用操作系统所提供的文件开式API,并且指定到应用请求打开的文件的路径。操作系统可以将控制从API传送至内核模式,其中操作系统内核和过滤驱动程序接收该请求。例如,操作系统可以包括一重定向驱动程序,该重定向驱动程序被设计成修改来自虚拟化应用的请求中的路径,以指向正确的虚拟化资源存储位置。
继续框420,虚拟化系统从请求自其接收到的进程提取令牌。例如,操作系统可以提供用于存取令牌的数据字段的API,或者数据字段可以被存储在令牌内的虚拟化系统能直接定位和存取的公知数据结构中。继续到框430,虚拟化系统确定令牌的所提取的数据字段是否表明虚拟进程。例如,系统可以查找参照图3的步骤创建的定制SID或其他形式的标注信息。继续到判决框440,如果虚拟化系统确定进程是虚拟进程,则系统继续到框450,否则,系统完成,并且允许操作系统以正常方式响应于资源请求。
继续到框450,虚拟化系统标识与虚拟进程相关联的虚拟应用环境。例如,系统可以查询标注驱动程序以确定从进程令牌提取的定制SID与哪个虚拟进程相关联。继续到框460,虚拟化系统将请求重定向至所标识的虚拟应用环境。例如,重定向驱动程序可以从标注驱动程序接收标识虚拟应用环境的信息。重定向驱动程序修改接收到的请求以指向与虚拟应用相关联的资源。例如,重定向驱动程序可以用与虚拟应用相关联的文件路径来修改接收到的请求中所包含的文件路径。
继续到框470中,操作系统通过提供对所请求的资源的存取来响应于重定向的资源请求。例如,操作系统可以打开所标识的文件并且响应于请求来提供文件数据。应用就像数据还在应用正常存储它的位置处那样进行操作,虚拟化系统修改请求以指向到数据被实际存储的位置。由于虚拟化系统所执行的令牌标注,因此无论资源请求是来自应用、代表应用操作的助手进程、还是其他源,应用虚拟化都能正确地进行。在框470之后,这些步骤结束。
在一些实施例中,虚拟化系统以打包文件格式来存储应用数据。打包文件可以是能存储多个其他文件和数据类型的任何文件格式。例如,常见的现有打包文件格式包括ZIP、CAB、RAR、SFT及其他类似的格式。除了允许以一个存档格式来存储多个文件以外,打包文件通常包括用于减小文件尺寸和其他特征(例如加密)的压缩。虚拟化应用的打包文件可以包括由虚拟应用所使用的注册表单元、文件、数据库和其他类型的数据。操作系统可以安装像目录、卷、盘驱动器和其他资源这样的打包文件,使得虚拟应用可以用文件和其他资源操纵的常见操作系统API来引用打包文件内存储的项。在一些实施例中,虚拟化系统可以包括在虚拟引用的可执行文件中的虚拟应用数据,使得应用可以作为具有自提取数据的单个EXE文件而被分布。尽管这里描述了几个例子,但是虚拟化系统不限于任何存储应用数据的特定方式,可以使用除上述以外的存储机制。
在一些实施例中,虚拟化系统提供内核模式组件来修改操作系统行为。应用虚拟化处的过去尝试通常包括用户模式的挂钩和拦截技术,该技术在检测虚拟应用可能尝试的所有动作时的成功性受到限制。虚拟化系统可以包括这里进一步描述的内核模式驱动程序,它使系统能通过虚拟进程或代表虚拟进程更全面地检测动作,并且更有效地修改这些动作。例如,检测到这里所述的标注令牌的内核模式重定向驱动程序可以更容易地检测到资源请求与特定虚拟环境相关联(甚至在虚拟进程以外的进程作出时),并且可以修改资源请求中的路径以便在虚拟资源的正确位置指向这些虚拟资源。内核模式操作提供了跨进程的活动的检测,并且通常比包括多次用户到内核模式转换的用户模式修改更有效。
从前面的描述中可以看出,可以理解,此处描述的虚拟化系统的特定实施例只是为了说明,但是,在不偏离本发明的精神和范围的情况下,可以进行各种修改。例如,虚拟进程可以包括通常在计算机系统上运行的任何类型的应用。许多情况下,应用不察觉到它正在以虚拟化的方式运行。管理员可以有虚拟地运行应用的许多原因,包括安全性隔离、清晰的数据分割、允许复杂的应用在像USB驱动这样的有限空间内运行,等等。因此,本发明只受所附权利要求限制。

Claims (15)

1.一种用于代表虚拟化的应用进程来处理资源请求的计算机实现的方法,所述方法包括:
从正在执行的进程接收(410)资源存取请求;
从正在执行的进程提取(420)进程信息;
确定(430)所提取的进程信息是否表明正在执行的进程与虚拟应用进程相关联;以及
响应于(440)确定正在执行的进程与虚拟应用进程相关联,
标识(450)虚拟应用进程在其中操作的虚拟应用环境;
将接收到的请求重定向(460)到所标识的虚拟应用环境;以及
通过提供对所请求的资源的存取来响应于(470)被重定向的资源请求,
其中,前面的各步骤由至少一个处理器来执行。
2.如权利要求1所述的方法,其特征在于,所述正在执行的进程代表虚拟化的应用进程来操作。
3.如权利要求1所述的方法,其特征在于,所述正在执行的进程模仿虚拟化的应用进程并且复制来自与虚拟化的应用进程相关联的令牌的信息。
4.如权利要求1所述的方法,其特征在于,接收到的请求指定路径,重定向请求包括:修改所指定的路径以便引用一个位置,其中与虚拟化的应用进程相关联的所请求的资源被存储在该位置。
5.如权利要求1所述的方法,其特征在于,接收资源存取请求包括调用内核模式重定向驱动程序,所述内核模式重定向驱动程序被配置成确定请求是否源自于虚拟应用进程,如果是,则修改来自虚拟化应用的请求中的路径以便指向正确的资源存储位置。
6.如权利要求1所述的方法,其特征在于,所述进程信息包括含有与正在执行的进程相关的安全性信息在内的令牌。
7.如权利要求1所述的方法,其特征在于,确定所提取的进程信息是否表明虚拟进程包括:标识存储在进程信息内的一种形式的标注。
8.如权利要求1所述的方法,其特征在于,标识与虚拟进程相关联的虚拟应用环境包括:查询标注驱动程序以确定与提取自正在执行的进程的进程信息相关联的虚拟进程。
9.如权利要求1所述的方法,其特征在于,自其接收到请求的正在执行的进程是代表单独的虚拟进程而操作的助手进程。
10.如权利要求1所述的方法,其特征在于,将接收到的请求重定向至所标识的虚拟应用环境包括:调用重定向驱动程序以修改接收到的请求以指向与虚拟应用相关联的资源。
11.如权利要求1所述的方法,其特征在于,响应于被重定向的资源请求包括:打开所标识的文件并且响应于请求而提供文件数据。
12.一种用于在主操作系统内执行虚拟应用的计算机系统,所述计算机系统包括:
至少一个处理器和存储器,所述存储器包括其上存储的软件指令,所述软件指令在由至少一个处理器执行时使所述至少一个处理器实现各组件,所述组件包括:
应用虚拟化环境110,其被配置成虚拟应用和主操作系统之间的至少一些间接;
检测进程创建组件120,其被配置成注册通知并且响应于主操作系统创建新进程而接收通知;
令牌标注组件130,其被配置成向与虚拟进程相关联的令牌添加一个或多个数据字段,这些数据字段将进程标识为虚拟进程并且将该进程与特定的虚拟环境相关联;
接收资源请求组件140,其被配置成从一个或多个应用接收对主操作系统所管理的资源进行存取的请求;
存取标注的令牌组件150,其被配置成存取执行环境的令牌并且读取令牌标注组件所添加的字段以标识虚拟化信息;以及
重定向资源请求组件160,其被配置成接收从令牌存取的虚拟化信息,并且将资源请求从指定的位置重定向至虚拟位置。
13.如权利要求12所述的系统,其特征在于,所述检测进程创建组件还被配置成标识与新进程相关联的令牌,如果进程与虚拟应用环境相关联,则调用令牌标注组件来向虚拟进程令牌添加附加信息。
14.如权利要求12所述的系统,其特征在于,所述令牌标注组件还被配置成向令牌的由主操作系统自动复制到虚拟进程的相关进程的一部分添加一个或多个字段。
15.如权利要求12所述的系统,其特征在于,所述接收资源请求组件还被配置成从代表另一应用操作的一个或多个助手应用接收存取主操作系统所管理的资源的请求。
CN201080027468.XA 2009-06-15 2010-06-10 标注虚拟应用进程 Active CN102460382B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/484,267 US8826269B2 (en) 2009-06-15 2009-06-15 Annotating virtual application processes
US12/484,267 2009-06-15
PCT/US2010/038223 WO2010147847A2 (en) 2009-06-15 2010-06-10 Annotating virtual application processes

Publications (2)

Publication Number Publication Date
CN102460382A true CN102460382A (zh) 2012-05-16
CN102460382B CN102460382B (zh) 2014-05-07

Family

ID=43307551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080027468.XA Active CN102460382B (zh) 2009-06-15 2010-06-10 标注虚拟应用进程

Country Status (5)

Country Link
US (1) US8826269B2 (zh)
EP (1) EP2443553B1 (zh)
CN (1) CN102460382B (zh)
CA (1) CA2761563C (zh)
WO (1) WO2010147847A2 (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9100246B1 (en) * 2008-06-19 2015-08-04 Symantec Corporation Distributed application virtualization
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US9491915B2 (en) 2009-08-03 2016-11-15 University Of Wyoming Vertical hydroponic plant production apparatus
US10638677B2 (en) 2009-08-03 2020-05-05 University Of Wyoming Vertical hydroponic plant production apparatus
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US8782106B2 (en) 2010-07-02 2014-07-15 Code Systems Corporation Method and system for managing execution of virtual applications
US20120072509A1 (en) * 2010-09-03 2012-03-22 Booth Lloyd George Method and system for integrating applications within a work process
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US9116728B2 (en) * 2010-12-21 2015-08-25 Microsoft Technology Licensing, Llc Providing a persona-based application experience
US20120246634A1 (en) * 2011-03-23 2012-09-27 Dell Products L.P. Portable virtual applications
US9176721B2 (en) * 2011-04-21 2015-11-03 Hewlett-Packard Development Company, L.P. Installing an application into a virtualized environment
US9449030B2 (en) * 2011-06-30 2016-09-20 International Business Machines Corporation Method for native program to inherit same transaction content when invoked by primary program running in separate environment
US9118686B2 (en) 2011-09-06 2015-08-25 Microsoft Technology Licensing, Llc Per process networking capabilities
US8990561B2 (en) 2011-09-09 2015-03-24 Microsoft Technology Licensing, Llc Pervasive package identifiers
US9773102B2 (en) 2011-09-09 2017-09-26 Microsoft Technology Licensing, Llc Selective file access for applications
US9800688B2 (en) 2011-09-12 2017-10-24 Microsoft Technology Licensing, Llc Platform-enabled proximity service
US8782651B2 (en) * 2011-09-26 2014-07-15 International Business Machines Corporation Dynamically redirecting a file descriptor of an executing process by another process by optionally suspending the executing process
US9129124B2 (en) * 2012-04-12 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamic provisioning of virtual systems
US9350596B2 (en) * 2012-05-18 2016-05-24 Appzero Corp On-demand tethered greedy virtual application appliance
US9092235B2 (en) * 2012-05-25 2015-07-28 Microsoft Technology Licensing, Llc Virtualizing integrated calls to provide access to resources in a virtual namespace
US10356204B2 (en) 2012-12-13 2019-07-16 Microsoft Technology Licensing, Llc Application based hardware identifiers
US9858247B2 (en) 2013-05-20 2018-01-02 Microsoft Technology Licensing, Llc Runtime resolution of content references
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
CN104298563B (zh) * 2014-10-13 2018-08-21 中国外汇交易中心 一种用于管理进程的方法及系统
CN104657195B (zh) * 2015-01-05 2018-03-06 华为技术有限公司 一种资源绑定方法和装置
US9465734B1 (en) * 2015-04-08 2016-10-11 Apple Inc. Coalition based memory management
US20180082053A1 (en) * 2016-09-21 2018-03-22 Telefonaktiebolaget Lm Ericsson (Publ) Application token through associated container
US10915655B2 (en) * 2017-04-27 2021-02-09 Dell Products L.P. Browser drag and drop file upload encryption enforcement
US10917390B2 (en) * 2017-04-28 2021-02-09 Dell Products L.P. Browser drag and drop file upload encryption enforcement
US10897462B2 (en) * 2017-05-16 2021-01-19 Citrix Systems, Inc. Systems and methods for encoding additional authentication data into an active directory security identifier
CN110888771A (zh) * 2018-12-26 2020-03-17 北京安天网络安全技术有限公司 对进程进行监视分析的方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076326A1 (en) * 2002-11-18 2005-04-07 Mcmillan John Virtual OS computing environment
US20060075381A1 (en) * 2004-09-30 2006-04-06 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
CN1761944A (zh) * 2003-03-21 2006-04-19 英特尔公司 用于虚拟机的动态服务注册中心
CN101231731A (zh) * 2007-01-25 2008-07-30 运软网络科技(上海)有限公司 一种应用虚拟化在公网上的通用商务方法及其迷你服务器

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275857B1 (en) 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US6279111B1 (en) 1998-06-12 2001-08-21 Microsoft Corporation Security model using restricted tokens
US6505300B2 (en) 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US20050091535A1 (en) 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US7454748B2 (en) * 2004-07-27 2008-11-18 Nokia Corporation System and method for specifying virtual machines
US7765544B2 (en) * 2004-12-17 2010-07-27 Intel Corporation Method, apparatus and system for improving security in a virtual machine host
US7802294B2 (en) * 2005-01-28 2010-09-21 Microsoft Corporation Controlling computer applications' access to data
US20060193467A1 (en) * 2005-02-16 2006-08-31 Joseph Levin Access control in a computer system
US20070074192A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Computing platform having transparent access to resources of a host platform
US8245270B2 (en) * 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US7788665B2 (en) 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
US9405521B2 (en) * 2006-06-29 2016-08-02 Microsoft Technology Licensing, Llc Mapping of virtualized setup-free applications for a computing system
US7793307B2 (en) 2007-04-06 2010-09-07 Network Appliance, Inc. Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US8046768B2 (en) 2007-07-31 2011-10-25 Hewlett-Packard Development Company, L.P. Apparatus and method for detecting resource consumption and preventing workload starvation
US8505084B2 (en) * 2009-04-06 2013-08-06 Microsoft Corporation Data access programming model for occasionally connected applications
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8752152B2 (en) * 2009-12-14 2014-06-10 Microsoft Corporation Federated authentication for mailbox replication

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076326A1 (en) * 2002-11-18 2005-04-07 Mcmillan John Virtual OS computing environment
CN1761944A (zh) * 2003-03-21 2006-04-19 英特尔公司 用于虚拟机的动态服务注册中心
US20060075381A1 (en) * 2004-09-30 2006-04-06 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
CN101231731A (zh) * 2007-01-25 2008-07-30 运软网络科技(上海)有限公司 一种应用虚拟化在公网上的通用商务方法及其迷你服务器

Also Published As

Publication number Publication date
US8826269B2 (en) 2014-09-02
CA2761563C (en) 2017-04-04
EP2443553A4 (en) 2012-12-19
WO2010147847A2 (en) 2010-12-23
CA2761563A1 (en) 2010-12-23
EP2443553A2 (en) 2012-04-25
US20100318997A1 (en) 2010-12-16
WO2010147847A3 (en) 2011-02-24
EP2443553B1 (en) 2019-09-04
CN102460382B (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
CN102460382B (zh) 标注虚拟应用进程
CN101329636B (zh) 虚拟化窗口信息的方法和设备
CN102754073B (zh) 用于虚拟化的扩展点声明性注册的方法和系统
US20070156913A1 (en) Method for enabling extension points through plug-ins
US20110061045A1 (en) Operating Systems in a Layerd Virtual Workspace
US20110061046A1 (en) Installing Software Applications in a Layered Virtual Workspace
US20130275973A1 (en) Virtualisation system
US20060271395A1 (en) Distributed object identity in a virtual machine cluster
CN104885092A (zh) 用于操作系统的安全系统和方法
US8752057B1 (en) Techniques for synchronizing processing of at least two code threads
KR20070049166A (ko) 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템
AU2008312367A1 (en) A method and system for communicating between isolation environments
US8893272B2 (en) Method and device for recombining runtime instruction
WO2012007637A1 (en) Method and apparatus for processing biometric information using distributed computation
CN101297280A (zh) 隔离扩展和设备驱动程序的配置
US9652223B2 (en) Method and apparatus for executing integrated application program
JP6380958B2 (ja) 仮想システムの受動的監視のための方法、システム、コンピュータ・プログラム、およびアプリケーション展開方法
US8239862B2 (en) Apparatus, method, and computer program product for processing information
CN113296891A (zh) 基于平台的多场景知识图谱处理方法及装置
US20050055564A1 (en) Object model document for obfuscating object model therein
Simić et al. On container usability in large-scale edge distributed system
US20120151467A1 (en) Providing com access to an isolated system
EP2917830A1 (en) Dynamic model-based management tooling
WO2007021775A2 (en) A method for providing extensible software components within a distributed synchronization system
Vasilakis et al. The web as a distributed computing platform

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150428

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.