首页> 中国专利> 用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的方法和系统

用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的方法和系统

摘要

用于在组合的计算环境中修改具有个性化桌面环境的机器基本映像的方法和系统,包括执行与基盘相关联的操作系统;由过滤驱动器拦截来自多个资源的至少一个的指令来修改在文件系统和注册表的至少一个中所存储的设置,所述多个资源在隔离环境内部执行,在增量盘上存储经修改的设置的副本;重启操作系统,使用在增量盘上所存储的经修改的设置的副本替换在文件系统和注册表的至少一个中所存储的设置;以及重启包含经修改的设置的至少一个操作系统进程。

著录项

  • 公开/公告号CN102197374A

    专利类型发明专利

  • 公开/公告日2011-09-21

    原文格式PDF

  • 申请/专利权人 思杰系统有限公司;

    申请/专利号CN200980141951.8

  • 申请日2009-10-23

  • 分类号G06F9/445(20060101);H04L12/24(20060101);

  • 代理机构11280 北京泛华伟业知识产权代理有限公司;

  • 代理人王勇

  • 地址 美国佛罗里达州

  • 入库时间 2023-12-18 03:17:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-04-02

    授权

    授权

  • 2011-11-23

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20091023

    实质审查的生效

  • 2011-09-21

    公开

    公开

说明书

相关申请

本申请要求2008年10月24日提交的美国临时专利申请NO.61/108,166的优先权,其内容通过引用包含于此。

技术领域

本发明涉及用于提供对用户文件的访问的方法和系统。尤其地,本发明涉及用于在组合计算环境中给可修改的虚拟机基本映像提供个性化桌面环境的方法和系统。

背景技术

在新兴的虚拟桌面架构(VDI)空间中,个人计算机桌面(包括其应用、文件和数据)与物理机器相分开。典型地,用户使用先进的终端(被称为桌面设备)连接到远程或“虚拟化”桌面。特别地,桌面设备是允许用户通过诸如Citrix ICA、Microsoft RDP、VNC或X11的网络显示协议访问由远程计算机提供的资源的机器。而且,桌面设备可执行本地操作系统来处理基本的功能,诸如接收用户输入和提供由远程计算机提供的资源所产生的输出数据。远程桌面被存储在远程中央服务器上而不是本地个人计算机(例如桌面设备)的硬盘驱动器上。因此,远程桌面可执行诸如Windows XP或Window Vista的单用户操作系统,或者可执行诸如Windows Server 2003或2008的多用户操作系统,多用户操作系统允许到不同虚拟桌面的多个独立连接,这些独立连接的不同用户能够具有不同级别的授权权限。

因此,桌面设备远程地提供对呈现桌面模式的计算环境的访问。即,当用户从桌面设备工作时,桌面所使用的所有程序、应用、进程和数据被集中地保存和运行,这允许用户在能够显示桌面的任何设备上远程地访问他们的桌面,这些设备诸如,例如,PC、笔记本、智能电话或瘦客户机。

尽管桌面设备通常被称为“哑终端”(dumb),但它们通常是高可配置的并且执行大部分的本地处理,诸如,例如本地屏幕和键盘的管理、本地所连接的设备的管理和特定键和/或键组合的处理。然而,既然VDI提供桌面设备仅仅是远程桌面的延伸的直觉,那么对用户而言对本地设备和虚拟桌面都进行配置通常是不方便的且令人困惑的。

此外,新式计算环境的管理员在向用户提供对资源的访问时面临很多挑战。一个这样的挑战出现在当管理员使用给管理员提供从单个共享基本映像(base image)向物理机或虚拟机提供多个桌面的能力的产品时。这类型的产品通常简化管理体验,因为管理员只需要维护被部署到众多用户的少量的映像。然而,通常地,被部署到用户的映像是暂时的-当运行该映像的机器关闭或重启时,在映像的使用期内所作的任何改变会被丢失。如果用户要在这些传统环境中安装个性化应用,诸如,例如,iTunes或Skype,在机器重启时该应用将会丢失,那么用户将不得不在每次登录机器或给机器加电时重新安装任何个性化应用。因而,在这样的安排下,终端用户的体验是次优的,因为用户的环境不是稳定的。而且,提供给用户的机器不提供正常机器的功能。因此,终端用户和管理员的体验在这样的安排下是冲突的-管理员有经简化的映像管理,但是以用户不能维持他们所定制的环境为代价的。

尝试分开用户定制与基本机器映像的解决方案通常试图在磁盘块级来执行这样的工作。例如,来自VMWare的链接克隆(linked clone)在磁盘块级操作,提供固定的基本映像并创建存储用户所作的磁盘块的改变的增量盘映像。尽管在磁盘块级操作允许映像的快速部署,但一旦链接克隆被制成,仅能对增量盘进行修改。但如果是基盘发生变化,将与增量盘上的文件分配相冲突,因而有损维护共享映像的好处。然而,操作在磁盘块级的实施例通常不提供改变基盘映像的功能,因为,在这些实施例中,这样的变化将会与增量盘上文件分配相冲突。因而,改善的终端用户体验通常发生在以牺牲管理员体验为代价的情况下,特别是有关易于管理和维护。

相应地,需要一种系统和方法,即提供制备服务器所提供的经简化的映像管理的管理益处,同时给用户提供相当于或超过由共享基本映像所提供的体验。

发明内容

本发明描述了用于通过远程机器所产生的用户接口控制与桌面设备的属性相关联的配置数据的系统和方法。另外,本发明所描述的方法和系统从机器的使用期间用户所作的变化中分离基本机器映像到单独的磁盘。然后,系统给本地用户提供磁盘的统一视图,将基本数据和用户数据组合在一起。

在一个实施例中,用于修改具有个性化桌面环境的机器基本映像(machine base image)的方法包括:执行由服务器部署的基盘所提供的操作系统,所述基盘具有机器基本映像;由过滤驱动器捕获来自多个资源的至少一个的指令来修改在文件系统和注册表的至少一个中所存储的设置,所述多个资源在隔离环境中执行;由过滤驱动器重定向经修改的设置的副本到用户增量盘,所述经修改的设置被保存在用户增量盘中;以及由过滤驱动器合并和存储机器基本映像和用户增量盘以便创建统一的环境,其中所述经修改的设置对用户增量盘是持续的。该方法还包括重启与机器基本映像相关联的至少一个操作系统,其中统一的环境被还原,以及由过滤驱动器记录在文件系统和注册表的至少一个中所存储的设置的每次修改,其中,所述过滤驱动器周期性地向用户增量盘报告所述修改。

在又一个实施例中,用于在组合的环境中修改具有个性化桌面环境的机器基本映像的方法包括:执行与基盘相关联的操作系统;由过滤驱动器拦截来自多个资源的至少一个的指令来修改在文件系统和注册表的一个中所存储的设置,所述多个资源在隔离环境中执行;在增量盘存储经修改的设置的副本;重启操作系统;用增量盘所存储的经修改的设置的副本替换在文件系统和注册表的至少一个中所存储的设置;以及重启至少一个包含经修改的设置的操作系统进程。该方法还包括将所存储的经修改的设置的副本与用户数据合并以便创建个性化桌面环境,以及由过滤驱动器记录在文件系统和注册表的至少一个中所存储的设置的每次修改,其中所述过滤驱动器周期性地向增量盘报告所述修改。在一个实施例中,文件系统或注册表中所存储的设置的修改被保存在增量盘中。在又一个实施例中,当所述设置与只读请求相关联时,文件系统或注册表中所存储的该设置的修改被放弃。另外,增量盘包括对基盘内容的任何修改。而且,过滤驱动器包括用于记录发生的任何注册表操作的注册表过滤驱动器。在一个实施例中,过滤驱动器包括用于向基盘和增量盘的至少一个发送所述修改的可执行文件系统过滤驱动器。在又一个实施例中,过滤驱动器包括用于记录对注册表的任何修改的注册表过滤驱动器。

在又一个实施例中,在组合的计算环境中具有个性化桌面环境可修改的机器基本映像包括:具有多个作业文件的基盘,所述基盘由服务器部署;至少一个用户增量盘,所述增量盘具有由用户指定的且在隔离环境中操作的多个应用,所述多个应用相应于对与基盘相关联的文件和注册表的至少一个所作的改变;和过滤驱动器,所述过滤驱动器用于将所述基盘和所述至少一个用户增量盘合并到一个统一的磁盘,所述统一的磁盘具有多个作业文件和多个应用,其中,所述过滤驱动器在至少一个用户增量盘中记录和保存多个作业文件和多个应用。经修改的机器基本映像还包括与基盘相关联的可执行的基本机器映像,其中对基本机器映像的修改不会传播到所述至少一个用户增量盘,和在隔离环境中执行的与用户增量盘相关联的多个资源。在一个实施例中,过滤驱动器被连接到多个资源,所述过滤驱动器捕获来自多个资源的指令以修改在文件系统和注册表的至少一个中所存储的设置;以及用户增量盘存储经修改的设置的副本。在一个具体实施例中,经修改的设置被存储在增量盘中,且对增量盘是持续的。在又一个实施例中,机器基本映像还包括注册表过滤驱动器,用于记录用户对注册表的修改,所述注册表过滤器保存所述修改到用户增量盘。在又一个实施例中,机器基本映像还包括用于隔离和记录每次修改的文件系统驱动器,和被连接到所述文件系统过滤驱动器的文件系统隔离驱动器,所述文件系统隔离驱动器用于记录对多个应用所作的修改。

其他方面,通过下面结合附图的以示例的方式来说明本发明的系统和方法的详细描述,本发明所公开的用于给可修改的机器基本映像提供个性化桌面环境的系统和方法的特征和优点将更充分地清晰可见。

附图说明

图1A是描述包括与远程机器通信的本地机器的网络环境的实施例的框图;

图1B和1C是描述可用于此处描述的方法和系统有关的计算设备的实施例的框图;

图2说明描述在其上提供基本机器磁盘和用户增量盘的执行机器的一个实施例的框图;

图3A是根据本发明的一个实施例,说明用于在组合的计算环境中给可修改机器基盘提供个性化桌面环境的系统的框图;

图3B是图3A的详细的框图;

图4是根据本发明的一个实施例,描述用于在组合的计算环境中给可修改机器基盘提供个性化桌面环境的方法的流程图;

图5是根据本发明,描述用于使用在远程机器上所存储的选项同步与桌面设备的显示相关联的配置数据的系统的一个实施例的示例框图;

图6是根据本发明,说明用于通过远程机器所产生的用户接口控制与桌面设备的属性相关联的配置数据的方法的一个实施例的示例流程图。

具体实施方式

现参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或者多个网络104与一个或者多个服务器106a-106n(总的还称为服务器106或者远程机器106)通信的一个或者多个客户机102a-102n(总的还称为本地机器102、客户机102、客户节点102、客户机器102、客户计算机102、客户设备102、端点102或端点节点102)。在一些实施例中,客户机102既有作为客户节点寻求访问服务器所提供资源的能力,也有作为服务器向其他客户机102a-102n提供对其寄载的资源的访问的能力。

虽然图1A示出了在客户机102和服务器106之间的网络104和网络104’,客户机102和服务器106可以位于相同的网络104上。网络104和/或104′可为局域网(LAN)例如公司内网,城域网(MAN),或者广域网(WAN)例如因特网或万维网。在一些实施例中,在客户机102和服务器106之间可以有多个网络104。在这些实施例的一个中,网络104’(未示出)可为专用网并且网络104可为公网。在这些实施例的另一个中,网络104’可为专用网并且网络104’可为公网。仍在另一个实施例中,网络104和104’可都为专用网。

网络104和/或104’可以是任何类型和/或形式的网络,并且可包括任意下述网络:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在一些实施例中,网络104可以包括无线链路,诸如红外信道或者卫星频带。网络104和/或104’的拓扑可为总线型、星型或环型网络拓扑。网络104和/或104’以及网络拓扑可以是对于本领域普通技术人员所熟知的、可以支持此处描述的操作的任何这样的网络或网络拓扑。网络可包括利用用于移动设备间通信的任一或一些协议的移动电话网络,这些协议包括:AMPS、TDMA、CDMA、GSM、GPRS或UMTS。在一些实施例中,不同类型的数据可以通过不同协议传输。在其他实施例中,同一类型的数据可通过不同协议传输。

在一些实施例中,系统可包括多个逻辑分组的服务器106。在这些实施例的一个中,服务器的逻辑分组可以被称为服务器群38。在其中一些实施例中,服务器106可为地理上分散的。在其他实施例中,群38可以作为单个实体被管理。仍在其他实施例中,服务器群38包括多个服务器群38。每个服务器群38内的服务器106可能是异构的---一个或多个服务器106可根据一种类型的操作系统平台(例如,由Washington,Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其它服务器106可根据另一类型的操作系统平台(例如,Unix或Linux)操作。

每个服务器群38的服务器106不必与同一服务器群38中的另一个服务器106在物理上接近。因此,逻辑上分组为服务器群38的服务器106组可以是使用广域网(WAN)或城域网(MAN)连接来互联的。例如,群38可包括物理上位于不同大陆或大陆、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106使用局域网(LAN)连接或一些直连形式进行连接,则可增加群38中的服务器106间的数据传送速度。

服务器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器,或防火墙。在一些实施例中,服务器106提供远程认证拨入用户服务,并且可被称为RADIUS服务器。在其他实施例中,服务器106可以有作为应用服务器或者作为主应用服务器工作的能力。仍在其他实施例中,服务器106是刀片服务器。仍在其他实施例中,服务器106执行向用户或客户计算机102提供对计算环境访问的虚拟机。

在一个实施例中,服务器106可包括活动目录。服务器106可以是应用加速设备。对于其中服务器106是应用加速设备的实施例,服务器106可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,服务器106包括诸如由位于CA,San Jose的Citrix应用网络组、位于CA,Mountain View,的Silver Peak Systems公司、位于CA,San Francisco的Riverbed Technology公司、位于WA,Seattle的F5Networks公司或位于CA,Sunnyvale的Juniper Networks公司制造的设备线中的一个的设备。

在一些实施例中,服务器106代表客户机102的用户执行应用。在其他实施例中,服务器106执行虚拟机,该虚拟机提供执行会话,在该执行会话中应用代表用户或客户机102来执行。在这些实施例的一个中,该执行会话是所寄载的桌面会话。在这些实施例的又一个中,该执行会话提供对计算环境的访问,该计算环境包括如下的一个或多个:应用、多个应用、桌面应用、和在其中执行一个或多个应用的桌面会话。

在一些实施例中,客户机102与服务器106通信。在一个实施例中,客户机102可与群38中的服务器106之一直接通信。在另一个实施例中,客户机102执行程序邻近应用(a program neighborhood application)以与群38内的服务器106通信。在另一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群38中的服务器106通信。例如通过网络104,客户机102可以请求执行群38中的服务器106a-106n所寄载的各种应用,并接收应用执行结果的输出进行显示。在一些实施例中,只有主节点提供这样的功能,即识别和提供与服务器106b相关的地址信息所需的功能,所述服务器106b寄载所请求的应用。

在一个实施例中,服务器106提供网web服务器的功能。在另一个实施例中,服务器106a接收来自客户机102的请求,将该请求转发到第二服务器106b,并用服务器106b对该请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得对客户机102可用的应用的列举,和与服务器106’相关联的地址信息,的所述服务器106’寄载该应用的列举所识别的应用。在又一个实施例中,服务器106使用web接口提供对客户机102的请求的响应。在一个实施例中,客户机102直接与服务器106通信以访问所识别的应用。在另一个实施例中,客户机102接收诸如显示数据的输出数据,该输出数据由服务器106上所识别的应用的执行而产生。

在一些实施例中,服务器106或服务器群38可运行一个或多个应用,例如提供瘦客户机计算的应用或远程显示表示应用。在一个实施例中,服务器106或服务器群38作为一个应用来执行Citrix Systems公司的CITRIX ACCESS SUITE的任一部分(例如METAFRAM或CITRIX PRESENTATION SERVER),和/或微软公司开发的MICROSOFT WINDOWS终端服务中的任意一个。在又一个实施例中,该应用是由位于Florida,Fort Lauderdale的Citrix Systems公司开发的ICA客户机。仍在又一个实施例中,服务器106可以运行应用,该应用,例如,可以是提供诸如由位于Washington,Redmond的微软公司制造的MICROSOFT EXCHANGE的电子邮件服务的应用服务器、web或Internet 服务器,或桌面共享服务器,或协同服务器。仍在又一个实施例中,任一应用可以包括任一类型的所寄载的服务或产品,例如位于California,Santa Barbara的Citrix Online Division公司提供的GOTOMEETING,位于California,Santa Clara的WebEx公司提供的WEBEX,或者位于Washington,Redmond的微软公司提供的Microsoft Office LIVE MEETING。

客户机102可以执行、操作或者以其它方式提供应用,应用可为任何类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或者Java程序、或者可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或者基于远程的应用。在一个实施例中,服务器106可以使用任意瘦-客户端或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在其它实施例中,应用包括和VoIP通信相关的任何类型的软件,例如软IP电话。在进一步的实施例中,应用包括涉及到实时数据通信的任一应用,例如用于流式传输视频和/或音频的应用。

客户机102和服务器106可以布署为和/或执行在任意类型和形式的计算设备上,诸如能够在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络设备或者设备。

图1B和1C描述了可用于实施客户机102、服务器106的实施例的计算设备100的框图。如图1B和1C所示,每个计算设备100包括中央处理单元110和主存储器单元112。如图1B所示,计算设备100可包括存储设备114、安装设备116、网络接口140、I/O控制器120、显示设备122a-n、键盘124和诸如鼠标的定位设备126。存储设备114可包括但不限于操作系统、软件和客户机代理128。如图1C所示,每个计算设备100也可包括其它可选择的部件,例如存储器端口13O、桥132、一个或多个输入/输出设备134a-134n(总的使用标号134表示),以及与中央处理单元110通信的高速缓存存储器136。

中央处理单元110是响应并处理从主存储器单元112取出的指令的任意逻辑电路。在许多实施例中,中央处理单元110由微处理器单元提供,例如:由California,Mountain View的Intel公司制造的微处理器单元;由IIIinois,Schaumburg的Motorola公司制造的微处理器单元;由Califirnia,Santa Clara的Transmeta公司制造的微处理器单元;由New York,White Plains的International Business Machines公司制造的RS/6000处理器;或者由California,Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算设备100可以基于这些处理器中的任意一种,或者能够按照这里所说明的那样运行的任意其它处理器。

主存储器单元112可以是能够存储数据并允许微处理器110直接访问任意存储位置的一个或多个存储器芯片,例如静态随机访问存储器(SRAM)、Burst(脉冲串)SRAM或SynchBurst SRAM(BSRAM)、动态随机访问存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、脉冲串扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据传输率SDRAM(DDR SDRAM)、增强SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器112可以基于上述存储芯片的任意一种,或者能够像这里所说明的那样运行的任意其它可用存储芯片。在图1B中所示的实施例中处理器110通过系统总线138(在下面进行更详细的描述)与主存储器112进行通信。图1C描述了在其中处理器通过存储器端口130直接与主存储器单元112通信的计算设备100的实施例。例如,在图1C中主存储器112可以是DRDRAM。

图1C描述在其中主处理器110通过有时被称为背侧总线的次级总线直接与高速缓存存储器136通信的实施例。其他实施例中,主处理器110使用系统总线138与高速缓冲存储器136通信。高速缓冲存储器136通常有比主存储器112更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1C中所示的实施例中处理器110通过本地系统总线138与多个I/O设备130进行通信。可以使用各种不同的总线将中央处理单元110连接到任意I/O设备130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O设备是视频显示器122的实施例,处理器110可以使用加速图形接口(AGP)与显示器122通信。图1C描述了在其中主处理器通过HYPERTRANSPORT,RAPIDIO,或INFINIBAND通信技术直接与I/O设备134b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器110使用本地互相总线与I/O设备134a通信同时直接与I/O设备134b通信。

各式各样的I/O设备134a-134n可以存在于计算设备100中。输入设备包括键盘、鼠标、触控板、轨迹球、话筒和绘图板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1B所示,I/O设备可以由I/O控制器120控制。I/O控制器可以控制一个或多个I/O设备,例如键盘124和定位设备126(如鼠标或光笔)。此外,I/O设备还可以为计算设备100提供存储和/或安装介质116。仍在其它实施例中,计算设备100可以提供USB连接(未示出)以接收手持USB存储设备,例如由位于Los Alamitos,California的Twintech Industry公司生产的设备的USB闪存驱动器线。

再次参考图1B,计算设备100可以支持任意适当的安装设备116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装像任意客户机代理120或其部分的软件和程序的任意其它设备。计算设备100还可以包括存储设备,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理128的任意程序的应用软件程序。或者,可以使用安装设备116的任意一种作为存储设备。此外,操作系统和软件可从例如可引导CD的可引导介质运行,诸如KNOPPIX,一种用于GNU/Linux的可引导CD,该可引导CD可自knoppix.net作为GNU/Linux分发获得。

此外,计算设备100可以包括网络接口140以通过多种连接,包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的一些组合,来与网络104对接。使用多种通信协议(例如TCP/IP、IPX、SPX、NetVIOS、Ehernet、ARCNET、SONET、SIDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11aIEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)也可建立连接。在一个实施例中,计算设备100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或Citrix Systems公司制造的Gitrix网关协议的隧道协议来与其他计算设备100’通信。网络接口140可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100连接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它设备。

在一些实施例中,计算设备100可以包括多个显示设备122a-122n或与其相连,这些显示设备各自可以是相同或不同的类型和/或形式。因而,任意一种I/O设备134a-134n和/或I/O控制器120可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算设备100连接和使用多个显示设备122a-122n。例如,计算设备100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备122a-122n对接、通信、连接或以其他方式使用显示设备122a-122n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示设备122a-122n对接。在其它实施例中,计算设备100可以包括多个视频适配器,每个视频适配器与显示设备122a-122n中的一个或多个连接。在一些实施例中,计算设备100的操作系统的任一部分都可以被配置用于使用多个显示器122a-122n。在其它实施例中,显示设备122a-122n中的一个或多个可以由一个或多个其它计算设备提供,诸如(例如通过网络)与计算设备100连接的计算设备100a和100b。这些实施例可以包括被设计和构造的任一类型的软件,以使用另一个计算机的显示设备作为计算设备100的第二显示设备122a。本领域的普通技术人员会认识和意识到可以将计算设备100配置成拥有多个显示设备122a-122n的各种方式和实施例。

在进一步的实施例中,I/O设备134可以是系统总线138和外部通信总线(如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线)之间的桥。

图1B和1C中所描述的类型的计算设备100典型地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算设备100可执行任一操作系统,诸如任一版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;由苹果计算机出品的MAC OS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算设备的操作系统,或者能够在计算设备上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括,但不限于:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2040、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE和WINDOWS XP,和WINDOWS VISTA,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果计算机出品的MacOS;由位于Armonk,New York的国际商业机器公司出品的OS/2;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。

计算机系统100可以是任意工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话或其他便携电信通信设备、媒体播放设备、游戏系统、移动计算设备,或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的任意其它类型和/或形式的计算、电信或者媒体设备。例如,计算机系统100可包括由位于California,Cupertino的苹果计算机公司出品的IPOD系列设备、由位于日本东京的索尼公司出品的PLAYSTATION2、PLAYSTATION3或PERSONAL PLAYSTATION PORTABLE(PSP)设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDO DS、NINTENDO GAMEBOY、NINTENDO GAMEBOY ADVANCED或NINTENDO REVOLUTION设备,或者由位于Washington Remond的微软公司出品的XBOX或XBOX 360设备。

在一些实施例中,计算设备100可以有不同的处理器、操作系统以及与该设备一致的输入设备。例如,在一个实施例中,计算设备100是由Palm公司出品的Treo180、270、600、650、680、700p、700w/wx、750、755p、800w、Centra、或Pro智能电话。在这些实施例的一些中,TERO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。

在其他实施例中,计算设备100是移动设备,例如,JAVA使能蜂窝电话(JAVA-enabled cellular telephone)或个人数据助理(PDA),诸如i55sr,i58sr,i85s,i88s,i90c,i95cl,i335,i365,i570,i576,i580,i615,i760,i836,i850,i870,i880,i920,i930,ic502,ic602,ic902,i776或iml100,以上这些均由位于Illinois,Schaumburg的摩托罗拉公司制造;由位于日本东京的Kyocera公司制造的6035或7135;或者由位于韩国Seoul的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算设备100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的索尼爱立信移动通信AB公司制造的移动设备。

仍在其他实施例中,计算设备100是黑莓(Blackberry)手持或智能电话,诸如由Research In Motion有限公司制造的设备,包括黑莓7100系列、7700系列、黑莓7520、黑莓PERAL 8100、8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve8900和黑莓Pearl Flip。仍在其他实施例中,计算设备100是支持Microsft Windows Mobile Software的智能电话、PocketPC、PocketPC电话,或其它手持移动设备。此外,计算设备100可以是任意工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述的操作的其它形式的计算或者电信设备。

在一些实施例中,设备100是数字音频播放器。在这些实施例的一个中,计算设备100是诸如由位于California Cupertino的苹果计算机公司制造的Apple IPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE系列设备的数字音频播放器。在这些实施例的又一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储设备来工作。在其他实施例中,计算设备100是诸如由位于NJ,Ridgefield Park的Sanmsung Electronics America公司制造的DigitalAudioPlayer SelectMP3播放器,或由位于IL.Schaumburg的Motorola公司制造的Motorola m500或m25Digital Audio Players的数字音频播放器。仍在其他实施例中,计算设备100是便携媒体播放器,诸如Zen Vision W、Zen Vision系列、Zen Portable Media Center设备或由CreativeTechnologies有限公司制造的MP3播放器的Digital MP3系列。仍在其他实施例中,计算设备100是支持以下文件格式的媒体播放器或数字音频播放器,这些文件格式包括,但不限于MP3、WAV、M4A/AAC、WMA Protected AAC、AIFF、Audible音频书、Apple Lossless音频文件格式和.mov、.m4v和.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式。

在一些实施例中,计算设备100包括设备的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算设备100是组合数字音频播放器和移动电话的Motorola RAZR或Motorola ROKR系列。在这些实施例的又一个中,计算设备100是由位于California,Cupertino的苹果计算机公司制造的iPhone智能电话。

在一个实施例中,服务器106包括策略引擎,所述策略引擎用于控制和管理对资源的访问、对访问资源的执行方法的选择以及资源的传送。在又一个实施例中,服务器106与策略引擎通信。在一些实施例中,策略引擎识别用户或者客户机102可以访问的一个或者多个资源。在其他实施例中,策略引擎确定资源应该如何被传送到用户或者客户机102,例如执行的方法。仍在其他实施例中,响应于由策略引擎所做的确定,服务器106提供多个传送技术,从中选择执行的方法,例如基于服务器的计算、应用流式传输或本地地递送应用给客户机102以用于本地执行。仍在其他实施例中,策略引擎响应于关于本地机器是否能访问以及如何访问资源的确定,提供对客户机102可利用的多个资源的列举。策略引擎可在做出该确定之前收集关于客户机102的信息。

对于在其中资源是计算环境的实施例,策略可允许在客户机102上安装计算环境。在这些实施例的又一个中,策略可使客户机102能够访问在服务器106上的虚拟机中执行的计算环境的副本。仍在这些实施例的又一个中,策略可使客户机102能够访问在客户机102上的虚拟机中执行的计算环境的副本。在一些实施例中,服务器106识别这样一个执行机器,在该执行机器上配备用于提供对所请求的计算环境的访问的虚拟机。在这些实施例的一个中,执行机器是客户机102。在这些实施例的又一个中,执行机器是服务器106。仍在这些实施例的又一个中,执行机器是第二服务器106b。在这些实施例的又一个中,其中执行机器是服务器106,执行机器可向客户机102提供输出数据,所述输出数据由计算环境的执行所产生并根据表示层协议传输到客户机102。

在一些实施例中,服务器106可选择提供对所请求资源访问的方法,该方法要求资源在执行机器上的隔离环境内执行。隔离环境可由能提供文件系统虚拟化、注册表系统虚拟化和命名对象(named object)虚拟化的核心系统组成。隔离环境可以用注册表过滤驱动器来重定向资源请求以用于注册表和命名对象的虚拟化,用文件系统过滤器来重定向资源请求以用于文件系统虚拟化。

在一些实施例中,用户隔离环境为每个访问执行机器的用户提供隔离范围。在其他实施例中,用户隔离环境给一组用户提供隔离范围,该用户组可由组织内的角色定义或可由管理员预先确定。在其他实施例中,用户隔离环境可以用于多用户计算机中,所述多用户计算机支持不同用户的应用程序的并发执行。在其他实施例中,用户隔离环境也可被用在单用户计算机中。在其他实施例中,虚拟机在执行机器的隔离环境内执行。在进一步的实施例中,虚拟机在执行机器的隔离环境之外执行并且执行机器所提供的所有其他资源在隔离环境内执行。

图2-6描述了将基本机器映像与在机器的使用期间用户所做的任何变化分开的系统和方法,同时向用户提供磁盘(具有基本映像和用户数据)的统一视图。尤其是,本发明的系统和方法将硬盘分成基本部分和用户增量盘部分,所述基本部分包含供应服务器所部署的基本映像,所述用户增量部分包含用户环境。从而,本发明所描述的系统在文件级从基本系统分离用户增量信息。这与现有技术(例如VMware的链接克隆)所描述的系统有相当大的不同,现有技术所描述的系统操作在磁盘块级。通过在文件级操作,此处所描述的本发明允许合并来自基本映像和用户增量盘的文件以便给用户提供统一的视图。因此,本发明允许独立地更新基本映像,其中可使用对基本映像的任何改变而不必将这些变化传播到用户增量盘。

在本发明的方法和系统的一个具体实施例中,系统被描述为用于根据对远程桌面所做的任何改变来自动配置桌面设备。尤其是,系统被描述为用于通过远程桌面所产生的用户接口来控制与桌面设备的属性相关联的配置数据。更甚至,提供用于显示在远程桌面上执行的资源所产生的用户接口的桌面设备。用户交互组件在桌面设备上执行。这个用户交互组件接收所拦截的用户通过用户接口修改桌面设备的属性的请求。接着,它重定向所拦截的修改到在桌面设备上执行的操作系统。然后,在桌面设备上执行的操作系统应用所拦截的修改。

参考图2,示例框图描述用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的系统200。系统200包括在执行机器204上执行的存储元件202。存储元件202被分为基盘206和用户增量盘208,其中在文件级将用户增量数据与基盘数据相分离。通过在文件级操作,系统200允许合并来自基盘206和用户增量盘208的文件以便给用户提供统一的视图。另外,在文件级操作允许管理员独立于用户增量盘208来更新基盘206。从而,管理员可实现对基盘206的改变而不必将该变化传播到用户增量盘206。

在一个实施例中,基盘206存储虚拟机映像,其中虚拟机映像被存储在存储区域网(SAN)或,可替代地,存储在网络附属存储(NAS)中。与SAN通信的文件服务器使虚拟机映像就像位于NAS上一样可以被访问。执行机器204可检索用于执行的虚拟机映像。或者,执行机器204可检索存储虚拟机映像的基盘206。在一个具体实施例中,执行机器204可检索附加的配置和数据文件,所述附加的配置和数据文件包含与用户相关联的用户定制计算环境。在又一个实施例中,用户增量盘208存储附加的配置和数据文件并且被执行机器204所检索。

在又一个实施例中,基盘206是执行机器204上的物理盘。或者,基盘206提供对操作系统的访问。特别地,基盘206是具有系统盘映像的文件,其中尤其包含由管理员建立的操作系统、应用、数据和设置。根据本发明,管理员可独立于多个多个用户增量盘来更新和增加基盘206的内容。物理机器(诸如,例如,执行机器204)或虚拟机(诸如,例如,由执行机器204提供的虚拟机)可挂载系统盘映像,以及加载和执行其上的操作系统。

用户增量盘208包含对用户所访问的资源所请求的基盘206的内容的任何改变。根据本发明公开的一个实施例,此处所描述的方法和系统执行写时复制(copy-on-write)策略,使得如果识别到修改基盘206上的文件的请求,该文件首先被复制到增量盘208,在增量盘208上进行修改。如果用户所访问的资源创建新的文件或改变基盘206所提供的注册表,这些变化也被保存到用户增量盘208。另外,当用户安装新的应用、驱动程序或其他资源(诸如资源304(图3A)),这些变化被捕获为文件和注册表变化,并且也被存储到用户增量盘208。

用户增量盘208可包括对基盘206所提供的操作系统的定制。或者,用户增量盘208包括允许用户定制应用的应用配置文件,或者可包括临时存储的Internet文件。在一个具体实施例中,用户增量盘208识别与用户相关联的个人文件夹所存储的项目,这些文件夹包括但不限于存储cookies、Internet上最喜欢的网站的URLs、具有桌面可见的快捷方式的资源、具有经由特定菜单(诸如开始菜单或最近所访问应用的菜单)可访问的快捷方式的资源的文件夹、存储模板的文件夹或“我的文档”文件夹。在又一个实施例中,用户增量盘208包括在与执行机器204所提供的资源交互期间用户所产生的数据文件。

在一个具体实施例中,系统200支持多个用户增量盘208的使用,其中系统200在特定增量盘中存储多个先前的用户增量盘208,或一特定增量盘的检查点或时间戳。每次用户关闭机器,用户增量盘208的副本将被存储。因此,用户被允许“回到从前”(go back in time)来使用处于过去的多个会话中的状态中的机器(例如,过去的5次重启)。另外,给用户提供其他的功能(例如,取消用户想要取消任何改变的能力)。

如上所述,用户增量盘208存储与用户相关联的多个设置。在一个实施例中,用户增量盘208存储与用户相关联的注册表键。在又一个实施例中,用户增量盘208包括配置文件(例如与用户相关联的用于应用处理的数据文件)。在又一个实施例中,用户增量盘208包括可执行文件,例如用户增量盘208可存储用户所安装的应用程序。在这个具体实施例中,用户增量盘208可包括与所安装的应用程序相关联的注册表设置(诸如,例如,桌面设置、资源配置、应用设置或安全配置文件)。

从而,也可以设想与一个用户或一组用户相关联的用户简档。当用户指定选项(preference)时,例如通过重设缺省字体来识别用于在本地机器的操作系统初始化时执行的进程,或改变诸如主题、延伸或背景图的图形显示元素来指定选项,用户简档中的设置被更新以便反映该选项。而且,当用户指定选项时,产生用户简档中的设置。例如,资源可产生注册表键,数据文件或配置文件以存储用户指定的选项的标识。从而,这些选项和设置给用户提供从会话到会话的、定制的、用户指定的环境。

用户增量盘208可包括用于共同定义与用户相关联的个性化环境的多个设置和文件。用户增量盘208也可包括包含用户选项和配置设置的集合,所述配置设置包含,但不限于,屏幕颜色,应用指定的配置选项,与网络连接相关联的选项,与打印机连接相关联的选项,输入/输出设备设置以及窗口大小和位置选项。而且,在又一个实施例中,用户增量盘208可包括MICROSOFT WINDOWS用户简档。

在一个实施例中,用户增量盘208包括为用户和计算机存储设置的注册表数据库。注册表数据库的各部分可被存放在被称为蜂巢文件(hive file)的多个文件中。在又一个实施例中,用户增量盘208包括存储在文件系统中的多个简档夹。简档夹存储数据和配置文件、用户指定的快捷方式的标识,桌面图片、文档和其他用户指定的数据。

用户增量盘208包括特定于执行机器204上的操作系统的文件和注册表键。在一个具体实施例中,用户增量盘208包括用于执行WINDOWS操作系统的本地机器的用户的简档。在又一个具体实施例中,用户增量盘208包括用于执行MAC OS操作系统的本地机器的用户的配置设置、应用和数据文件。在又一个实施例中,用户增量盘208包括用于执行UNIX或LINUX操作系统的本地机器的用户的配置设置、应用和数据文件。在又一个实施例中,用户增量盘208包括在一个环境中所产生的简档,其可以被访问或应用到在第二个环境中执行的资源。在这个具体实施例中,简档可产生于执行WINDOWS XPSP1操作系统的本地机器上并且被在WINDOWS XP SP3操作系统上执行的应用所访问。在其他实施例中,用户增量盘208包括特定于通过执行机器204访问的虚拟机所提供的操作系统的文件和注册表键。

参考图3A和3B,并首先参考图3A,用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的系统300包括隔离环境302、至少一个资源304和注册表过滤驱动器306。所述至少一个资源304可以是程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对执行机器204的用户可利用的其他资源。在一个具体实施例中,可执行资源(未示出)被执行以便给用户提供对所请求资源304的访问。例如,用户可以请求访问执行机器204上的文件以及在执行机器204上执行的能够处理所请求的文件的可执行资源。在又一个实施例中,用户可以请求访问单个资源304并且接收对多个应用、桌面或计算环境的访问。在一些实施例中,系统300可以通过流传输资源的方法与提供对资源的访问的服务器通信。

如图3A所示,执行机器204在隔离环境302内执行至少一个资源304。在一个实施例中,请求访问所述至少一个资源304的用户与执行机器204直接交互,执行机器204可以是客户机102a(图1A)。在又一个实施例中,请求访问至少一个资源304的用户与客户机102a交互,客户机102a接收由执行机器204上至少一个资源304的执行所产生的输出数据。在又一个实施例中,在执行机器204上执行的所有资源在隔离环境302之内执行。在又一个实施例中,由基本机器磁盘206的执行所产生的虚拟机在隔离环境310之外执行而所有其他资源在隔离环境302之内执行。

在一个实施例中,隔离环境302包括高速缓存存储器元件(未示出)。在又一个实施例中,隔离环境302可以访问高速缓存存储器元件。在又一个实施例中,隔离环境302存储经修改的设置的副本,所述经修改的设置的副本反映对执行机器204上的文件系统或注册表的用户定制。

执行机器204上的代理(未示出)在执行机器204上创建隔离环境302。该代理使用隔离环境应用编程接口来创建隔离环境302。另外,该代理在隔离环境302中存储多个应用文件。该代理也可通过提供对隔离环境内的文件、应用和其他资源的访问来修改由在隔离环境302之外执行的虚拟机所提供的操作系统。

继续参考图3A,注册表过滤驱动器306被采用以捕获在会话期间对在执行机器204上执行的操作系统所包含的注册表所作的每次改变。注册表过滤驱动器306重定向在会话期间对在执行机器204上执行的操作系统所包含的注册表所作的任何改变。系统300还包括存储组件(未示出),该存储组件允许这些改变留存并且当用户在随后的会话中重新连接到该机器时使这些改变可被使用。应注意,在一些实施例中,不使用注册表过滤驱动器306,因为注册表组件对某些操作系统(诸如,例如,基于Linux和基于UNIX的环境)不是必须的。

在一个实施例中,注册表过滤驱动器306拦截类似csrss.exe的对内核组件和操作系统组件的注册表操作,和其他不允许引入钩子动态链接库的进程。在又一个实施例中,注册表数据被记录到用户增量盘208,而不是基盘206,从而当还原环境时,注册表过滤驱动器306再现用户注册表的变化。在又一个实施例中,注册表过滤驱动器306通过逐步修改基盘206中的数据以便包含来自用户增量盘208所存储的注册表数据来再现变化。

系统300提供整机虚拟化,在其中执行的或由基盘206提供的操作系统所提供的所有资源在隔离环境中执行。至少一个运行进程可以被隔离,或者,所有运行进程可以被隔离。另外,由资源所作的多个文件请求(诸如打开文件或写文件请求)可被捕获并且重定向到用户增量盘208。每个文件访问请求被重定向到用户增量盘208,而不是基盘206。如果文件以只读方式打开,则不发生重定向。从应用的角度和操作系统的角度来看,文件驻留在系统盘,因为文件系统隔离驱动器以对调用进程透明的方式来处理文件的重定向和合并。

在一个具体实施例中,注册表驱动器306使用MICROSOFT WINDOWS注册表过滤驱动器模型。通过使用这个模型,注册表过滤驱动器306被告知用户请求的每次注册表的修改,从而使该修改对用户增量盘是可被留存的。或者,注册表过滤驱动器306被告知用户请求的至少一次注册表的修改,从而使该修改对用户增量盘是可被留存的。然而,在其他实施例中,只读注册表请求对用户增量盘208不是可被留存的。注册表过滤模型允许修改注册表调用,从而使注册表操作发生在运行时(runt ime)。

众所周知,注册表的操作模型不同于文件系统的操作模型。例如,注册表过滤驱动模型在不同的MICROSOFT WINDOWS操作系统版本上提供不同的能力。例如在WINDOWS XP上,注册表过滤驱动器306记录注册表修改的操作到该注册表的另一部分,并且周期性地将该记录的结果写出到用户增量盘208。在WINDOWS VISTA平台上,注册表过滤模型允许重定向注册表操作并且注册表过滤驱动器306重定向该操作到用户增量盘208。

当数据被捕获到用户增量盘208时,在基盘206的随后重新启动时,可能将所有的用户数据与由基盘206的执行所提供的操作系统相合并。呈现给用户的计算环境对用户而言看上去是与在其中做出改变的先前会话同样的环境,而该计算环境是基本机器(例如基盘206)所提供的操作系统和用户增量盘208中所存储的定制的组合。

因此,根据本发明,用户增量数据被存储在持久性存储元件中,以便在执行机器204重启后用户增量数据可被使用。在一个具体实施例中,用户增量数据被存储在与虚拟机相关联的第二硬盘驱动器中,其可被映射到网络位置。在又一个实施例中,用户增量数据被存储在虚拟硬盘文件中,所述虚拟硬盘文件驻留于被挂载到虚拟机或物理机上表现为象硬盘样的服务器信息块(SMB)共享上。在又一个实施例中,用户增量数据被存储在执行机器204的SMB共享中。在一些实施例中,执行机器204被配置为:所有注册表操作请求重定向的目的地是用户增量盘208。通过重定向所捕获的注册表操作请求到用户增量盘208,用户注册表数据成为可被留存的。

参考图3B,框图说明了用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的系统的一个实施例。该系统包括注册表过滤驱动器306、文件系统过滤驱动器308、记录存储310和文件系统312。

注册表过滤驱动器306是与图3A有关的上文所描述的注册表过滤驱动器。当机器启动时,执行一个服务,该服务监控用户登录事件。在一个实施例中,该服务作为WINDOWS服务提供。在又一个实施例中,执行机器204初始化由基盘206所提供的虚拟机。在又一个实施例中,执行机器204执行由基盘206所提供的操作系统。

在用户登录事件(包括,例如,用户初始化执行进程)之后,执行机器204产生组合的计算环境。在一个具体实施例中,用户执行“ctxhvminit”进程。在又一个实施例中,用户执行代替“userinit.exe”进程的进程,该进程确保用户的个性化环境被还原。根据本发明,用户个性化环境在其他登录事件完成之前被还原。此外,还原用户的个性化环境引起壳功能(诸如开始菜单、快捷方式和由壳提供的其他功能)和在用户登录时所执行的其他定制的启动代码的执行。

在一个实施例中,该服务启动一进程以产生隔离环境302,其他资源将在隔离环境302中执行。而且,该服务执行注册表过滤驱动器306,提示注册表过滤驱动器306开始记录注册表操作。在一个具体实施例中,注册表过滤驱动器修改执行机器204上的注册表以包含用户增量盘208中的数据所识别的定制。在又一个实施例中,注册表过滤驱动器306访问用户增量盘208内的记录存储310。

在第二实施例中,该服务执行文件系统过滤驱动器308。文件系统过滤驱动器308访问隔离环境的定义以便为文件系统API调用拦截(API call interception)在执行机器204上配置文件系统。在一个具体实施例中,执行机器204被配置为:所有文件系统的请求重定向的目的地是用户增量盘208。通过重定向文件请求和所拦截的文件系统API调用到用户增量盘208,用户的数据成为可被留存的。

文件系统312是基盘206和用户增量盘208的组合。文件系统312也可以是基盘206和用户增量盘208二者的合并版本,其在操作系统的较低层被视为两个分开的驱动器,物理的或虚拟的。文件系统过滤驱动器利用了基盘和用户增量盘。在一个具体实施例中,用户增量盘208中的数据被合并到基盘206的数据中以便提供组合的计算环境。如果文件在基盘206和用户增量盘208上都存在,则提供较新的文件。在一个实施例中,注册表过滤驱动器306合并基盘206和用户增量盘208。在其他实施例中,文件系统过滤驱动器308合并基盘206和用户增量盘208。

该服务访问注册表并执行与用户相关联的个性化服务。与所述个性化服务相关联的数据取自注册表并被提供给服务控制管理器组件(未示出),以确保合适的依赖关系生效以及服务被正确地注册;服务器控制管理器组件由执行机器102(图1A)上的操作系统提供。服务控制管理器组件也包括处理不是标准形式(例如,不包括诸如标准用户名的证书,例如LocalSystem和LocalService)的服务证书的功能。服务控制管理器组件启动在指定证书下启动的服务,该服务要求密码。在一个实施例中,托盘应用被调用并给用户提供通知,告知其环境已经被还原。

在一个实施例中,对文件系统生命周期和列举API(类似打开、关闭、删除、目录等)的调用是由用户模式进程或其他内核组件所发出的,并且这些调用的至少一个被文件系统过滤驱动器所拦截。在这些实施例的一个中,如果不能在基盘206上找到文件,或者文件将被修改,那么系统中的每个进程的文件打开或关闭操作将被拦截和重定向。当基盘206上的文件被修改,该文件被复制到用户增量盘208,接着被打开并返回到调用进程。复制经修改的文件到用户增量盘208确保了在机器的使用期间的所作的变化在用户增量盘上被留存。对基盘206做暂时性的修改。或者,所述暂时的修改不被存留并且基盘不受用户对磁盘的改变的影响。

对注册表API的调用是由用户模式进程或内核组件所发出的。在一个实施例中,至少一个调用被注册表过滤驱动器306拦截。在这些实施例的一个中,当注册表键或值被改变时,该操作被记录到该注册表的另一部分。不同于对文件系统调用的处理,调用进程所使用的实际的键不被重定向。所拦截的注册表调用被存储在该注册表的另一部分,其可被看作是注册表数据差异的根,并且所存储的注册表增量被周期性地作为文件写出到用户增量盘208。当机器启动和用户增量数据与基盘206数据合并时,注册表过滤驱动器306从用户增量盘208读出所存储的注册表增量,并将注册表增量文件中所包含的数据填充到正在运行的VM的注册表中。在这些实施例的又一个中,调用进程所使用的键被重定向。

结合图2-3参考图4,图示了用于在组合的计算环境中给可修改的虚拟机基本映像提供个性化的桌面环境的方法。通常,在第一会话中用户访问机器所提供的至少一个资源304。根据本发明,该方法包括:拦截来自至少一个资源304的请求来修改执行机器204上的设置,其中,所述至少一个资源在隔离环境302内部执行(402);(404)复制经修改的设置到用户增量盘208,所述修改是对执行机器204的文件系统和注册表的至少一个所作的修改;存储包含经修改的设置的用户增量盘映像(406);以及访问所述经修改的设置的副本来定制用户和机器之间的第二会话的计算环境(408)。所存储的修改被用于定制用户和虚拟机之间后续会话中的计算环境。

在一个实施例中,文件系统过滤驱动器308拦截访问文件或者修改文件的请求。在又一个实施例中,注册表过滤驱动器306捕获对设置的修改并将该修改存储到用户增量盘映像208。在又一个实施例中,文件系统过滤驱动器308和注册表过滤驱动器306的至少一个使用自用户增量盘208检索的数据来响应请求。注册表过滤驱动器306可从经合并的注册表检索数据。文件系统过滤驱动器308将从基盘208或者用户增量盘208中具有最新文件的那个盘中检索文件数据。在一个具体实施例中,过滤驱动器306和308所访问的基盘206和增量盘208的至少一个被寄载在网络104(图1A)中的NAS或SAN上。

所拦截的请求可以被重定向到第二机器106b,其中,第二机器106b上的代理接收该请求,并响应于该请求传输数据到执行机器204。或者,文件系统过滤驱动308和注册表过滤驱动器306的至少一个使用从基盘206检索的数据来响应请求。在一些实施例中,请求是只读请求。

本发明所描述的方法和系统实现了注册表过滤驱动器,而不是钩子组件,来拦截注册表变化。也设想了用于提供在其中机器上所有用户资源在隔离环境内执行的环境的方法和系统。在一个具体实施例中,此处的方法和系统实现了一种环境,其中所有资源(包括服务、驱动程序、数据和其他非应用编程组件)在单个隔离环境中执行,而不使应用之间互相分离。用户对基盘206所提供的数据和在隔离环境302内的资源304所访问的数据的任何变化被保存到用户增量盘208。根据本发明,在隔离环境302内执行所有进程以及将自用户增量盘检索的数据与只读基本数据合并(而不是在分开的隔离环境中隔离应用)的方法称为整机虚拟化。

在又一个实施例中,用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的方法包括执行由基盘所提供的操作系统;用位于增量盘208上的第一设置的经修改的副本来替换与所述操作系统相关联的文件系统和注册表的至少一个中所存储的第一设置;由注册表过滤驱动器306拦截来自多个资源304中的资源的指令来修改在文件系统和注册表的至少一个中所存储的第二设置,所述多个资源304在隔离环境320内部执行;在增量盘208中存储经修改的第二设置的副本。在一个实施例中,该方法包括向与用户增量盘208相关联的用户提供对经修改的操作系统的访问。在一个具体实施例中,该方法包括由文件系统过滤驱动器308拦截来自多个资源的资源的指令,来修改文件系统和注册表的至少一个中所存储的第二设置,所述多个资源在隔离环境320内部执行,以及包括在增量盘208存储经修改的第二设置的副本。

该方法还包括重启操作系统,例如,执行机器204、执行操作系统的虚拟机或至少一个后台进程。

该方法还包括用所存储的经修改的第二设置的副本来替换第二设置。在一个具体实施例中,诸如文件系统过滤驱动器308或注册表过滤驱动器306的过滤驱动器修改文件系统和注册表的至少一个以包含经修改的第二设置。

该方法还包括重启包含经修改的第二设置的至少一个后台进程。所述至少一个后台进程可以是服务、守护进程或设备驱动程序。该后台进程在执行期间访问经修改的第二设置。另外,该后台进程在与操作系统重启的时间基本相同的时间开始执行。或者,该后台进程在将经修改的设置并入文件系统或注册表之前开始执行。重启后台进程允许后台进程访问更新的经修改的设置,而不是操作系统重启时系统上的设置的版本。

此处所描述的方法和系统提供下面的功能:克服系统不允许用户修改他或她的计算环境的限制,同时保留了只需维护少量的映像的管理的好处。从而,此处所描述的方法和系统提供了从用户环境中分离由管理员所管理的基盘的功能。因为基盘和用户增量盘的分离,管理员有可能根据需要更新基本映像而不必修改增量盘。

结合图1-4参考图5,描述了系统和方法200,300的一个具体实施例且被称为系统500。系统500包括具有桌面设备502,该桌面设备502包括用户接口504、用户交互组件506和操作系统508。桌面设备502用于连接到“虚拟化”桌面或者被远程地提供的计算环境,诸如,例如桌面主机或服务器510。

桌面主机510可以是远程机器或者服务器106,正如与图1A-1C相关的上文所描述的。在又一个实施例中,桌面主机510是位于公司网的物理PC、数据中心的物理服务器(例如,刀片PC)或数据中心的虚拟机。

在一个实施例中,桌面设备502是如与图1A-1B相关的上文所描述的客户机102。在又一个实施例中,桌面设备502是用户可与其交互的具有本地计算能力的任何设备。在又一个实施例中,桌面设备502是专用于通过表示层协议提供对远程机器所提供的资源的访问的设备,这种方式使用户察觉不到他们正在使用的机器实际上是远程的。在又一个实施例中,桌面设备502是多功能的瘦客户端设备,该设备能提供对远程机器所提供的各种服务和资源的访问,诸如,例如,表示服务器,终端服务和web应用。在又一个实施例中,桌面设备502执行操作系统,该操作系统提供安全警告序列(Secure Attention Sequence)(通常为,控制键、换档键和删除键的组合,Ctrl+Alt+Del)可靠的本地拦截。

在一个具体实施例中,桌面设备502是位于PA.King of Prussia的Devon IT公司制造的SAFEBOOK。在又一个实施例中,桌面设备是由位于USA.TX.ISrael and Irving,Tirat Carmel的Chip PC技术公司制造的Chip PC Plug PC。在又一个实施例中,桌面设备502是位于CA.Palo Alto的Hewlett-Packard公司制造的HP Compaq2533t或6720移动瘦客户机(Mobile Thin Client),或HP Compaq t5133或t5730,或HP Compaq t5530或t5735瘦客户机。在又一个实施例中,桌面设备505是由位于FL.Fort Lauderdale的IGEL技术公司制造的IGEL Compact系列设备。在一些实施例中,桌面设备502是客户机102,在该客户机102中,用户具有有限权限或没有权限访问本地操作系统所提供的功能。

在一些实施例中,桌面设备502执行多个软件组件,所述软件组件是桌面设备操作系统的一部分或者被注册在在桌面设备操作系统中。在这些实施例的一个中,软件组件能够与代理服务和远程桌面主机通信。在这些实施例的又一个中,软件组件能够以本地产生用户接口屏幕和保护用户输入焦点的方式来支持与用户的直接的无干扰的交互。在一些实施例中,所使用的多个软件组件依赖于由桌面设备502所执行的操作系统。

在一个实施例中,用户交互组件506控制对用户所显示的信息并接收来自用户的输入。在又一个实施例中,用户交互组件506是在桌面设备502上执行的操作系统508的一部分。在又一个实施例中,用户交互组件506是表示层协议客户机代理的一部分,或者与表示层协议客户机代理通信。

继续参考图5,桌面设备502存储与连接到其上的显示设备(例如,显示器)相关的本地配置。通常,用户负责改变桌面设备502的配置以便匹配所连接的显示器。类似地,远程桌面或桌面主机510也包括其试图驱动的多个显示器相关的配置,包括每个显示器的各种属性诸如,例如,颜色、深度和性能。本发明的一个目的是提供协调这两种配置的系统和方法。

根据本发明,使用远程桌面510所提供的标准工具(例如,WINDOWS中的显示属性),用户将被允许对远程桌面510做出改变。当做出改变时,这些改变被应用到远程桌面510并且也反映在桌面设备502中。接着,桌面设备502改变其本地显示器设置来进行匹配,以及,可选地,存储这些设置以便当其下次连接到远程桌面510时,将保留这些设置。相应地,桌面设备502的显示器设置是可配置的,从而使用户不必管理两套配置,也不需理解桌面设备502的配置工具。

在一个具体实施例中,当桌面设备502不能/不愿存储配置时,远程桌面510在初始化连接期间,将发送用于桌面设备502的唯一标识符以及指示显示设置何时被最后一次本地设置的时间戳。接着,远程桌面510维护数据库,所述数据库将桌面设备502的标识映射到显示器设置等。如果显示器设置被改变,其将被反映到桌面设备502并被存储在数据库中。当随后的连接发生时,如果数据库存储了用于连接桌面设备502的更及时的信息,那么桌面设备502被配置来匹配同一设置。

在又一个实施例中,远程桌面510可被用于对配置做出其他改变以便反映回到桌面设备502。例如,在一个具体实施例中,如果新设备被接附到桌面设备502,可能需要配置桌面设备502以便识别和配置该新设备。在又一个实施例中,对诸如,例如,键盘的输入设备的改变也可以在远程桌面510中作出并被反映回到桌面设备502中。例如,如果键盘被改变,或用户希望当前的键盘提供不同的动作。在又一个例子中,在远程桌面510和桌面设备502上的屏幕保护程序可被配置为一致地工作,例如被配置为用于空白显示和/或显示动画。而且桌面设备502的屏幕保护程序可被用于初始化显示设备上的节能模式。

在操作中,桌面设备502显示由资源512所产生的用户接口。资源512在远程桌面510中执行,且可从各种配置中选择,诸如,例如用于配置显示设备的显示管理、键盘配置、驱动程序同步和屏幕保护程序,其中可在远程桌面510的上下文中对桌面设备502的作出改变。在桌面设备502中执行的用户交互组件506接收所拦截的用户通过用户接口504来修改桌面设备502的属性的请求。用户交互组件506将重定向所拦截的请求到桌面设备502的操作系统508。然后,操作系统508将所拦截的修改应用到桌面设备502的属性。

在一个实施例中,用户交互组件506用于在操作系统508中存储所拦截的修改的标识。在又一个实施例中,远程桌面510存储所拦截的修改的标识。而且,远程桌面510也可将修改请求应用到桌面510的属性。

在又一个实施例中,系统500可包括用于建立到远程桌面510的会话的请求的第二桌面设备。在这个实施例中,第二桌面设备将终止对先前资源512的访问。

因此,本发明允许用户在不了解桌面设备的本地配置接口的情况下配置该桌面设备502。另外,允许本地和远程特性的最佳组合的自动优化,从而确保它们工作一致,例如确保显示分辨率的同步,或者使用本地/远程驱动程序的最优选择。而且,本发明允许桌面设备502的配置和即插即用的能力以便有效地更新远程桌面510的设置。

结合图5参考图6,图示了用于通过远程桌面510所产生的用户接口504来控制与桌面设备502的属性相关联的配置数据的示例方法的流程图。首先,在步骤602,桌面设备502显示在远程桌面510上执行的资源512所产生的用户接口。在步骤604,桌面设备502传输用户与所显示的用户接口504交互的数据表示到远程桌面510。在步骤606,桌面设备502传输用户与所显示的用户接口交互的数据表示到远程桌面510。在步骤608,用户交互组件506接收用户修改桌面设备502的属性的请求,其中,该请求在所传输的数据中被识别。在步骤610,用户交互组件506将所拦截的对桌面设备502的属性的修改重定向到操作系统508。最后,在步骤612,操作系统508将所拦截的修改应用到桌面设备502的属性。

在一个实施例中,桌面设备终止由资源512所产生的用户接口504的显示。然后,桌面设备502接收来自用户的建立对资源512的访问的请求。接着,用户交互组件506从远程桌面510检索所存储的对桌面设备502的属性的修改的标识。最后,用户交互组件506将所识别的修改应用到桌面设备502的属性。

在又一个实施例中,桌面设备502终止对资源512的访问。然后,第二桌面设备接收来自用户的建立到远程桌面510的会话的请求。接着,用户交互组件506从远程机器510来确定是否应用所存储的对桌面设备502的属性修改的标识。最后,用户交互组件506将第二经识别的修改应用到桌面设备的属性。

在又一个实施例中,在远程桌面510执行的代理从用户交互组件506接收与桌面设备502的属性相关联的操作系统信息。然后,该代理拦截在远程桌面510执行的资源512对与远程桌面510相关联的操作系统信息的请求。最后,该代理响应于所拦截的请求,向资源512提供所接收的操作系统信息。该代理还可拦截用户通过用户接口504修改桌面设备502的属性的请求。

或者,该代理可拦截用户通过用户接口504修改连接到桌面设备502的键盘的属性的请求。另外,该代理可拦截用户通过用户接口504修改桌面设备所显示的屏幕保护程序的属性的请求。此外,该代理可拦截用户通过用户接口504修改连接到桌面设备502的输出设备的属性的请求。最后,该代理可拦截用户通过用户接口504修改连接到桌面设备502的显示设备的属性的请求。

上文所描述的系统和方法可作为一件或多件产品上所体现的或其中的一个或多个计算机可读程序而被提供。所述产品可以是软盘、硬盘、CD-ROM,闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。

应该理解,此处描述的系统可提供多个组件或每个组件并且这些组件可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。此外,上述系统和方法可作为一件或多件产品上所体现的或在其中的一个或多个计算机可读程序而被提供。

已经描述了用于在组合的计算环境中给可修改的机器基盘提供个性化桌面环境的方法和系统的某些实施例,使用包含本发明的概念的其他实施例对本领域技术人员而言将是显而易见的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号