CN102460389B - 用于将应用启动到现有的隔离环境中的系统和方法 - Google Patents

用于将应用启动到现有的隔离环境中的系统和方法 Download PDF

Info

Publication number
CN102460389B
CN102460389B CN201080029718.3A CN201080029718A CN102460389B CN 102460389 B CN102460389 B CN 102460389B CN 201080029718 A CN201080029718 A CN 201080029718A CN 102460389 B CN102460389 B CN 102460389B
Authority
CN
China
Prior art keywords
application
server
client computer
isolation environment
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080029718.3A
Other languages
English (en)
Other versions
CN102460389A (zh
Inventor
M·钦塔
S·拉兹
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
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102460389A publication Critical patent/CN102460389A/zh
Application granted granted Critical
Publication of CN102460389B publication Critical patent/CN102460389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Abstract

可以将应用启动到现有的隔离环境中的系统和方法通过在计算机器上执行运行模块来拦截执行应用的请求来这样做。与计算机器通信的客户机生成在该计算机器上执行应用的请求。运行模块识别与所请求的应用关联的简档并查询应用传送服务以识别对应于该简档的至少一个隔离环境。运行模块从应用传送服务接收识别与所述应用关联的第一隔离环境的响应,以及向启动模块发出将应用启动到第一隔离环境中的命令。

Description

用于将应用启动到现有的隔离环境中的系统和方法
相关申请
本专利申请要求2009年5月2日提交的美国专利申请序列号12/434,629的优先权,该申请的公开被视为本申请公开的一部分并且通过引用将其整体包含于此。
技术领域
本发明总的涉及远程地执行计算机器上的应用。更具体地,本发明涉及远程地执行在计算机器上的隔离环境中的应用。
背景技术
目前现有的方法根据应用简档、用户会话或者能够被用来隔离应用的另一个参数来在隔离环境中隔离应用。当应用在隔离环境中执行时,通常该应用不能与不在该隔离环境中执行的其他应用进行通信。允许被隔离应用与在隔离环境之外的应用通信可能需要管理员来将该被隔离应用和另一个应用打包到更大的单个隔离映像或简档中。
创建隔离环境要求创建盘数据的映像,将该映像传送到内核模式组件和用户模式组件。这个过程会消耗大量的时间并且要求许多资源。特别是,创建盘数据映像需要解析盘上的数据结构、随着在盘上执行的简档数量的增加,该过程将占用更多的资源。因此,每次应用希望与不驻留在该应用的隔离环境中的另一个应用通信时,创建更大的单个隔离映像或简档可能是时间和资源密集型的。因此,需要这样的方法和系统,其允许在不同隔离环境中执行的应用互相之间交流而不需要创建单独的隔离映像或简档。
发明内容
从最广泛的解释而言,本公开描述了用于将应用启动到现有的隔离环境中的方法和系统。将应用启动到在其中应用的群集性(sociability)和兼容性可能产生问题的环境中,通常要求在隔离的环境之内或者在隔离环境中的隔离范围内执行该应用。创建隔离环境可能是大量消耗时间和资源的过程,因此需要系统和方法来降低将应用启动到隔离环境中所需要的时间和资源量。实现识别与应用关联的先前存在的隔离环境并将该应用启动到该先前存在的隔离环境中的方法和系统能够减少将应用启动到隔离环境中所需要的时间量和资源量。
在一个方面,此处所述的是用于将应用启动到现有的隔离环境中的方法。该方法可以由在与客户计算机器通信的计算机器上执行的运行模块部分地执行。运行模块接收在该计算机器上执行应用的请求;所述请求是由客户机的用户生成的。运行模块识别与所请求的应用关联的简档并查询在该计算机器上执行的应用传送服务以识别对应于该简档的至少一个隔离环境。在查询应用传送服务后,运行模块从应用传送服务接收响应,所述响应识别与该应用关联的第一隔离环境。在获得关于第一隔离环境的信息后,运行模块向在该计算机器上执行的启动模块发出将该应用启动到第一隔离环境中的命令。
在一个实施例中,运行模块接收来自应用传送服务的与第一隔离环境关联的标识符。所接收的标识符在一些实施例中可以是第一隔离环境的名称。在一些实施例中,运行模块响应于收到第一隔离环境标识符来向运行时对象表查询第一隔离环境的地址,其中运行模块使用第一隔离环境标识符来查询运行时对象表。
在一些实施例中,第一隔离环境公开用于与在计算机器上执行的组件通信的通信接口,所述通信接口是由进程间机制生成的。命令启动模块启动应用还可以包括向所公开的通信接口传输该应用的位置。
在一个实施例中,识别第一隔离环境还包括识别与第一隔离环境关联的地址。在一些实施例中,第一隔离环境地址可以包括与第一隔离环境关联的简档版本,而在其他实施例中,可包括与第一隔离环境关联的用户会话标识符。
在一个实施例中,该方法可以包括未能识别对应于该简档的隔离环境,以及由运行模块响应于未能识别隔离环境来以暂停模式启动启动模块。接着,运行模块向应用传送服务发送隔离该启动模块的命令,向该启动模块发送应用信息,以及向该启动模块发出继续执行的命令。
在一个方面,该方法可以由系统来实现,所述系统包括与生成在计算机器上执行应用的请求的客户机通信的计算机器,所述应用与简档相关联。该系统还包括在计算机器上执行的应用传送服务、启动模块和运行模块。运行模块接收客户机请求并且查询应用传送服务以识别对应于该简档的至少一个隔离环境。在查询应用传送服务后,运行模块从应用传送服务接收识别与所述应用关联的第一隔离环境的响应,以及向启动模块发出将该应用启动到第一隔离环境中的命令。
在其他方面,可以由具有由处理器可执行的将应用启动到现有的隔离环境中的指令的计算机可读介质来实现该方法和系统。
附图说明
下面的附图描述了用于将应用启动到现有的隔离环境中的方法和系统的某些说明性实施例,其中相同的参考标记值是指相同的元素。每个所描述的实施例是对这些方法和系统的说明而不是限制。
图1A是说明具有与服务器通信的客户机的远程访问的、联网的环境的实施例的框图。
图1B和1C是说明用于实施此处所描述的方法和系统的计算机器的实施例的框图。
图1D是描述服务器群的实施例的框图;
图1E是描述用于通过在web服务目录中发布GUI来提供对客户机可用的多个应用程序的系统的一个实施例的框图。
图2是描述选择应用程序的执行方法所采用的步骤的一个实施例的流程图。
图3A是描述客户机通过万维网初始化程序邻近应用的执行的一个实施例的框图。
图3B是描述由客户机访问用web服务目录列举的应用程序所采用的步骤的一个实施例的流程图。
图4A是为客户机提供对应用程序的基于策略的访问的网络的实施例的框图。
图4B是描述策略引擎更详细的实施例的框图。
图4C是描述由策略引擎基于所接收的关于客户机的信息做出访问控制决策所采用的步骤的一个实施例的流程图。
图4D是描述在其中提供了对多个应用会话的授权的远程访问的计算机网络的实施例的框图。
图4E是描述由会话服务器将客户机与其所关联的应用会话相连接所采用的步骤的一个实施例的流程图。
图5是描述由会话服务器将客户机节点与其所关联的应用会话相连接所采用的步骤的一个实施例的流程图。
图6是描述包括提供应用列举的管理服务的服务器的一个实施例的框图。
图7是描述访问包含应用程序的多个文件所采用的步骤的一个实施例的流程图。
图8A是描述在具有减小的应用兼容性和应用群集性问题的操作系统的控制下运行的计算机的一个实施例的框图。
图8B是描述具有减小的应用兼容性和应用群集性问题的多用户计算机的框图。
图8C是描述在将进程和隔离范围相关联的方法中所采用的步骤的一个实施例的流程图。
图9是描述在用于执行应用程序的方法中所采用的步骤的一个实施例的流程图。
图10是描述多个应用文件驻留在服务器上的一个实施例的流程图。
图11是描述在用于对与远程存储的文件相关联的文件元数据的请求进行本地响应的方法中所采用的步骤的一个实施例的流程图。
图12是描述包括许可管理子系统的服务器的一个实施例的框图。
图13是描述服务器上管理服务中的组件的一个实施例的框图。
图14是描述请求和维护来自服务器的许可所采用的步骤的一个实施例的流程图。
图15是描述可与由管理服务监控的会话关联的状态的一个实施例的框图。
图16是描述在应用隔离环境中安装应用所采用的步骤的一个实施例的流程图。
图17是描述用于将应用启动到隔离环境中的系统的一个实施例的框图。
图18是描述用于将应用启动到现有的隔离环境中的系统的一个实施例的框图。
图19是描述用于将应用启动到隔离环境中的方法的一个实施例的流程图。
图20是描述用于将应用启动到隔离环境中的方法的一个实施例的流程图。
具体实施方式
图1A描述了计算环境101的一个实施例,该计算环境包括与服务器106A-106N通信的一个或多个客户机102A-102N,以及在客户机102A-102N与服务器106A-106N之间安装的网络104。在一些实施例中,客户机102A-102N可被认为是单个客户机102或客户机102的一个组,而服务器可被认为是单个服务器106或服务器106的一个组。在一个实施例中,单个客户机102与不只一个服务器106通信,在又一个实施例中,单个服务器106与不只一个客户机102通信,而在又一个实施例中,单个客户机102与单个服务器106通信。
在一些实施例中,计算环境之内的客户机102可被称为下面术语中的任何一个:客户机102、客户端、客户计算机、客户装置、客户计算装置、本地机器、远程机器、客户节点、端点、端节点或第二机器。在一些实施例中,服务器106可被称为下列术语中的任何一个:服务器、本地机器、远程机器、服务器群、主计算装置或第一机器。
在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个:软件、程序、可执行指令、虚拟机、管理程序、web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的网络电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、便于实时数据通信的应用、HTTP客户机、FTP客户机、Oscar客户机、Telnet客户机或能够在客户机102上执行的任何其他类型和/或形式的可执行指令。在其他实施例中,计算环境101包括可以是基于服务器的应用或基于远程的应用,并且可以在服务器106上代表客户机102来执行应用。在计算环境101的其他实施例中,服务器106被配置为使用瘦客户端或远程显示协议将输出的图形数据显示到客户机102,其中所使用的协议可以是下列协议的任何一个:由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的微软公司制造的远程桌面协议(RDP)。
在一个实施例中,客户机102可以是虚拟机102C,例如由XenSolution、Citrix Systems、IBM、VMware公司出品的那些虚拟机,或能够实现此处所描述的方法和系统的任何其他虚拟机。
在一些实施例中,计算环境101可包括不只一个服务器106A-106N,其中服务器106A-106N:一起聚合为单个服务器106实体、逻辑上一起聚合到服务器群106中、地理上分散并且逻辑上一起聚合到服务器群106中,或者互相之间位置接近的且逻辑上一起聚合到服务器群106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用WAN、MAN或LAN通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任一组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。计算环境101可包括一起聚合到单个服务器群106中的不只一个服务器106A-106N,其中,服务器群106是异构的,从而一个服务器106A-106N被配置为根据第一类型的操作系统平台(例如,由Washington,Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其他服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)操作;不只一个服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)操作,而另一个服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)操作;或者不只一个服务器106A-106N被配置为根据第一类型的操作系统平台(例如,WINDOWS NT)操作,而不只一个其他服务器106A-106N被配置为根据第二类型的操作系统平台(例如,Unix或Linux)操作。
在一些实施例中,计算环境101可包括被配置为提供下列服务器类型的任何一个的功能的一个或多个服务器106:文件服务器、应用服务器、web服务器、代理服务器、装置、网络装置、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器或主应用服务器、被配置为作为活动目录而操作的服务器106、被配置为作为提供防火墙功能、应用功能或负载平衡功能的应用加速程序而操作的服务器106、或者被配置为作为服务器106而操作的其他类型的计算机器。在一些实施例中,服务器106可以包含远程认证拨入用户服务,使得该服务器106为RADIUS服务器。在服务器106包括设备的计算环境101的实施例中,服务器106可以是由下列制造商的任何一个制造的设备:Citrix应用网络组、Silver Peak Systems公司、Riverbed Thechnology公司、F5 Networks公司、或Juniper NetWorks公司。一些实施例中包括具有下列功能的服务器106:第一服务器106A接收来自客户机102的请求、将该请求转发到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机所产生的请求进行响应;获得对客户机102可用的应用列表和与寄载由应用列表所识别的应用的服务器106关联的地址信息;使用web接口提供对客户机请求的响应;并直接与客户机102通信以向客户机102提供对所识别应用的访问;接收通过在服务器106上执行所识别的应用而产生的输出数据,例如显示数据。
服务器106可被配置为执行下列应用中的任何一个:提供瘦客户端计算的应用或远程显示呈现应用;Citrix Systems公司的CITRIX ACCESS SUITE的任何部分,诸如METAFRAM或者CITRIX PRESENTATION SERVER;Microsoft公司制造的MICROSOFT WINDOWS终端服务;或由Citrix Systems公司开发的ICA客户端。又一个实施例中包括被配置为执行应用以使得该服务器作为应用服务器而运行的服务器106,所述应用服务器例如为下列应用服务器类型的任何一个:提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFT EXCHANGE;web或Internet服务器、桌面共享服务器,或协同服务器。在其他实施例中服务器106执行下列类型的所寄载的服务器应用的任何一个:Citrix Online Division公司提供的GOTOMEETING、位于加利福尼亚州Santa Clara的WebEx公司提供的WebEx,或者Microsoft公司提供的Microsoft Office LIVE MEETING。
在一个实施例中,服务器106可以是虚拟机106B,例如由CitrixSystems、IBM、VMware公司出品的那些虚拟机,或能够实现此处所描述的方法和系统的任何其他虚拟机。
在一些实施例中,客户机102可以作为寻求对服务器106提供的资源进行访问的客户机节点,或者作为向其他客户机102A-102N提供对所寄载的资源的访问的服务器106。在计算环境101的一个实施例中包括提供主节点功能的服务器106。客户机102和一个服务器106或多个服务器106A-106N之间的通信可以是通过下列方法的任何一个而建立的:客户机102与服务器群106中的服务器106A-106N直接通信;客户机102使用程序邻近应用(programneighborhood application)以与服务器群106中的服务器106a-106n通信;客户机102使用网络104与服务器群106中的服务器106A-106N通信。在计算环境101的一个实施例中,客户机102使用网络104来请求执行由服务器群106中的服务器106A-106N所寄载的应用,以及使用网络104来接收来自服务器106A-106N的代表应用执行的图形显示输出。在其他实施例中,主节点提供识别和提供与寄载所请求的应用的服务器106相关的地址信息所需的功能。在其他实施例中,主节点可以是下列的任何一个:服务器群106中的服务器106A-106N、与服务器群106连接但不被包含在服务器群106之内的远程计算机器、与客户机102连接但不被包含在客户机102组内的远程计算机器、或者客户机102。
客户机102和服务器106之间的网络104是通过其在客户机102和服务器106之间传输数据的连接。尽管在图1A所示描述了连接客户机102和服务器106的网络104,但在计算环境101的其他实施例中,客户机102和服务器106安装在同一网络上。在包括计算环境101的其他实施例中,网络104可以是下列的任何一个:局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104’的主网104、具有专用子网104’的主公共网104、具有公共子网104’的主专用网104或者具有专用子网104’的主专用网104。在进一步的实施例中,网络104可以是任何的下列网络类型:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络、包括可能是红外信道或者卫星频带的无线链路的网络104或能够将数据从客户机102传输到服务器106且反之亦然以便实现此处所描述的方法和系统的任何其他网络类型。网络拓扑在不同的实施例中可以不同,可能的网络拓扑包括:总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑、分层星型网络拓扑、或能够将数据从客户机102传输到服务器106且反之亦然以便实现此处所描述的方法和系统的任何其他网络拓扑。额外的实施例中包括使用协议在移动装置间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个:AMPS、TDMA、CDMA、GSM、GPRS UMTS或能在移动装置间传输数据以实现此处所描述的系统和方法的其他任何协议。
图1B所示是计算装置100的实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:中央处理单元121、主存储器122、存储装置128、输入输出(I/O)控制器123、显示装置124A-124N、安装装置116和网络接口118。在一个实施例中存储装置128包括:操作系统、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和指示装置127。其他实施例中可包括连接到不只一个输入/输出装置130A-130N的I/O控制器123。
图1C描述了计算装置100的一个实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的系统总线150可以和下列组件通信:桥170和第一I/O装置130A。在又一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二I/O装置130B、主存储器122和高速缓冲存储器140通信。I/O端口、存储器端口103和主处理器被包含在中央处理单元121中。
在计算装置100的实施例中可包括被下列组件配置的任何一个所表征的中央处理单元121:响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如:由Intel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公司(International BussinessMachines)制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或能够执行此处所描述的系统和方法的逻辑电路的任何其他组合。中央处理单元122的其他实施例可包括下列任何组合:微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。
在计算装置100的一个实施例中包括通过也称为背侧总线的第二总线与高速缓冲存储器140通信的中央处理单元121,而在计算机器100的又一个实施例中包括使用系统总线150与高速缓冲存储器通信的中央处理单元121。在一些实施例中,本地系统总线150也被中央处理单元所使用来与不只一种类型的I/O装置130A-130N进行通信。在一些实施例中,本地系统总线150可以是下列类型总线的任何一个:VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算装置100的其他实施例中包括为通过高级图形端口(AGP)与中央处理单元121通信的视频显示器124的I/O装置130A-130N。在计算装置100的其他形式中包括通过下列连接的任何一个连接到I/O装置130A-130N的处理器121,这些连接如下:超传输(HyperTransport)、快速I/O或者InfiniBand。计算装置100的进一步的实施例包括通信连接,其中处理器121使用本地互连总线与一个I/O装置130A进行通信并使用直接连接与第二I/O装置130B进行通信。
在一些实施例中,计算装置100包括主存储器单元122和高速缓冲存储器140。高速缓冲存储器140可以在一些实施例中可以是下列类型存储器的任何一个:SRAM、BSRAM或EDRAM。其他实施例中包括的高速缓冲存储器140和主存储器单元122,可以是下列类型存储器的任何一个:静态随机存取存储器(SRAM)、Burst(脉冲串)SRAM或SynchBurst SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、脉冲串扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双数据传输率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、铁电RAM(FRAM)或能够执行此处所描述的系统和方法的任何其他类型的存储器装置。在一些实施例中,主存储器单元122和/或高速缓存存储器140可包括能够存储数据并且允许中央处理单元121直接访问任何存储单元的一个或多个存储器装置。进一步的实施例包括可通过下列之一访问主存储器122的中央处理单元121:系统总线150、存储器端口103、或允许处理器121访问存储器122的任何其他连接、总线或端口。
计算装置100的一个实施例支持下列安装装置116的任何一个:用于接收例如3.5英寸、5.25英寸或ZIP盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或软件的任意其它装置。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算装置100还可以包括可以为一个或多个硬盘驱动器或者一个或多个独立磁盘冗余阵列的存储装置128,这里存储装置被配置为存储操作系统、软件、程序应用、或者至少客户机代理120的一部分。计算装置100的进一步实施例中包括用作存储装置128的安装装置116。
此外,计算装置100还可包括网络接口118以通过多种连接来连接到局域网(LAN)、广域网(WAN)或因特网,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某个组合。也可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。计算装置100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或CitrixSystems公司制造的Gitrix网关协议的隧道协议来与其他计算装置100’通信的网络接口118。网络接口118的形式可以包括下列的任何一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它装置。
计算装置100的实施例包括下列I/O装置130A-130N的任何一个:键盘126、指示装置127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出装置。在一些实施例中I/O控制器123可连接多个I/O装置130A-130N以便控制一个或多个I/O装置。I/O装置130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可为接收诸如由Twintech Industry公司制造的装置的USB闪存驱动线的USB存储装置提供通用串行总线(USB)。在其他实施例中I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行连接的小型计算机系统接口总线。
在一些实施例中,计算装置100可以连接多个显示装置124A-124N,在其他实施例中计算装置100可以连接单个显示装置124,而在其他实施例中计算装置100可以连接相同类型或形式的显示装置124A-124N或不同的类型或形式的显示装置。显示装置124A-124N的实施例可被如下方式支持和实现:一个或多个I/O装置130A-130N、I/O控制器123、I/O装置130A-130N和I/O控制器123的组合、能支持显示装置124A-124N的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以便与显示装置124A-124N对接、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可被配置为使用一个或多个显示装置124A-124N,这些配置包括:有多个连接器以与多个显示装置124A-124N对接;多个视频适配器且每个视频适配器与显示装置124A-124N中的一个或多个连接;有操作系统被配置用于支持多个显示装置124A-124N;使用被包含在计算装置100内部的电路和软件来连接并使用多个显示装置124A-124N;和在主计算装置100和多个次级计算装置上的执行软件来使主计算装置100能使用次级计算装置的显示装置作为用于主计算装置100的显示装置124A-124N。计算装置100的其它实施例可包括由多个次级计算装置提供的多个显示装置124A-124N,所述多个显示装置124A-124N通过网络连接到主计算装置100。
在计算装置100的一些实施例中,可包括操作系统以便控制任务调度和对系统资源的访问。在计算装置100的实施例中可运行下列操作系统的任何一个:诸如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWSNT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;由苹果计算机公司(Apple Computer)出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行并执行此处所描述的操作的任意其它操作系统。在计算装置100的一个实施例中,可在其上安装多个操作系统。
计算装置100可以体现为下列计算装置的任何一个:计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信装置、媒体播放装置、游戏系统、移动计算装置、上网本、由苹果计算机公司出品的IPOD系列装置、由索尼公司出品的PLAYSTATION系列装置的任何一个、由Nintendo公司出品的Nintendo系列装置的任何一个;由微软公司出品的XBOX系列装置的任何一个,或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体装置。在其它实施例中,计算装置100可以是诸如下列移动装置的任何一个的移动装置:JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135;由Samsung电子有限公司制造的i300或i330;由Palm公司出品的TREO180、270、600、650、680、700p、700w或750智能电话;或具有符合该装置的不同的处理器、操作系统和输入装置的任何计算装置;或能执行此处所述的方法和系统的任何其他移动计算装置。计算环境101的其他实施例包括移动计算装置100,所述移动计算装置100可以是下列的任何一个:黑莓(Blackberry)的任一系列,或由Research In Motion Limited公司出品的其他手持装置;由苹果计算机公司出品的iPhone;任何手持或智能电话;掌上电脑;掌上电脑电话或支持Microsoft Windows Mobile Software的任何其他手持移动装置。
现在看图1D,在一起的服务器106包括群38或服务器群,其中,每个服务器106可包括网络侧接口202和群侧接口204。网络侧接口202可与一个或多个客户机102或网络104通信。网络104可为WAN、LAN或者网络的任何其他实施例(例如上文所述的那些网络)。
每个服务器106的群侧接口204与群38中的其他服务器106的一个或多个群侧接口204相连接。在一个实施例中,每个群侧接口204与其他群侧接口204互联连接,使得群38中的服务器106可互相通信。在每个服务器106上,群侧接口204与网络侧接口202通信。群侧接口204也与持久存储器230通信(通过箭头220指出)并且,在一些实施例中,也可与动态存储器240通信。服务器106、持久存储器230、以及动态存储器240(当提供时)的组合共同称为群38。在一些实施中,服务器106与持久存储器230通信,而其他服务器106’与服务器106通信,以访问在持久存储器中所存储的信息。
持久存储器230可在磁盘、磁盘群、独立磁盘冗余阵列(RAID)、可写紧密磁盘或其他允许数据读出和写入并且如果存储装置没电则保存写入的数据的任何其他装置上物理地实现。单个物理装置可为多个持久存储器提供存储,也就是单个物理装置可用于为不只一个群38提供持久存储器230。持久存储器230保持与在群38中的每个服务器106相关联的静态数据,以及在群38中的所有服务器106使用的全局数据。在一个实施例中,持久存储器230可在轻量级目录访问协议(LDAP)数据模型中保持服务器数据。在其他实施例中,持久存储器230在兼容ODBC的数据库中存储服务器数据。为了该说明书的目的,术语“静态数据”指不经常改变的数据,也就是仅基于每小时、每天、或者每星期改变的数据,或者从不改变的数据。每个服务器使用持久存储子系统从持久存储器230中读数据和将数据写入持久存储器230。
出于可靠的目的,可以对持久存储器230存储的数据进行物理上或逻辑上复制。例如,使用一组冗余的镜像磁盘可提供物理冗余,每个冗余的镜像磁盘提供数据的副本。在另一个实施例中,使用标准数据库技术对数据库本身进行复制,以提供数据库的多个副本。在进一步的实施例中,可以并发地使用物理和逻辑复制。
可以以各种方式实现动态存储器240(即所有记录表的集合)。在一个实施例中,动态存储器240被集中化;即,所有的运行时数据存储在群38中的一个服务器106的存储器中。该服务器作为主网络节点操作,在群38中的所有其他服务器106当寻求对该运行时数据的访问时与该服务器通信。在又一个实施例中,在群38中的每个服务器106保留动态存储器240的完整副本。此处,每个服务器106与每个其他服务器106通信,以保持其动态存储器240副本及时更新。
在又一个实施例中,每个服务器106保持它自己的运行时数据,并且当寻求从其他服务器106获得运行时数据时与其他服务器106进行通信。因此,例如,试图寻找客户机102所请求的应用程序的服务器106可直接与在群38中的每个其他服务器106进行通信以发现寄载所请求的应用的一个或多个服务器。
对于有大量的服务器106的群38,这些实施例产生的网络通信量变得十分繁重。一个实施例通过在群38中指定服务器106的子集(通常为两个或更多个)作为“收集点”,来减小繁重的网络通信量。通常,收集点是收集运行时数据的服务器。每个收集点存储从群38中的某些其他服务器106收集的运行时数据。群38中的每个服务器106可以作为收集点操作,并因此可以被指定为收集点。在一个实施例中,每个收集点存储整个动态存储器240的副本。在又一个实施例中,每个收集点存储动态存储器240的一部分,即保持特定数据类型的运行时数据。可根据一个或多个标准预先确定由服务器106存储的数据的类型。例如,服务器106可基于启动顺序保存不同类型的数据。替代地,可由管理员使用管理工具配置服务器106存储的数据类型。在这些实施例中,动态存储器240分布于群38中的两个或更多个服务器106之间。
没有被指定为收集点的服务器106知道群38中指定作为收集点的服务器106。没有被指定为收集点的服务器180在传送和请求运行时数据时可与特定收集点通信。因此,由于当群38中的每个服务器106寻求对运行时数据的访问时,其是与单个收集点服务器106通信,而不是与每个其它的服务器106通信,所以收集点减小了网络通信量。
每个服务器106可作为用于不只一种类型的数据的收集点而操作。例如,服务器106”可作为用于许可信息和负载信息的收集点而操作。在这些实施例中,每个收集点可积聚不同类型的运行时数据。例如,为了说明这种情形,服务器106”’可收集许可信息,而服务器106”收集负载信息。
在一些实施例中,每个收集点存储在群38内的所有服务器106间共享的数据。在这些实施例中,特定类型的数据的每个收集点与群38中的用于该类型数据的每个其他收集点交换由该收集点收集的数据。因此,一旦完成了这样的数据的交换,每个收集点106”和106处理相同的数据。也在这些实施例中,对于运行时数据的任何更新,每个收集点106和106”也使每个其他收集点一起保持更新。
浏览使得客户机102能够查看群38、服务器106和群38中的应用,以及访问可用的信息,诸如整个群38的会话。每个服务器106包括ICA浏览器子系统260以便为客户机102提供浏览的能力。在客户机102建立与任何服务器106的ICA浏览器子系统260的连接之后,该浏览器子系统支持多种客户机请求。这样的客户机请求包括:(1)列举在群中的服务器的名称,(2)列举群中发布的应用的名称,(3)将服务器名称和/或应用名称解析为对客户机102可用的服务器地址。ICA浏览器子系统260也支持由客户机10作出的运行程序邻近应用的请求,该程序邻近应用根据请求为客户机102提供群38中的给用户授权的那些应用的视图。ICA浏览器子系统260转发所有上述提及的客户机请求到服务器106中的适当的子系统。
在一个实施例中,在群38中有程序邻近子系统270的每个服务器106,可为客户机102的用户提供在群38中的应用的视图。程序邻近子系统270可以限制对于这些客户机102的用户有权访问的那些应用的视图。通常,该程序邻近服务将这些应用作为列表或图标组呈现给用户。
由程序邻近子系统270提供的功能可以被两种类型的客户机利用,(1)可直接从客户机桌面访问该功能的程序邻近使能客户机,以及(2)可通过运行在服务器上的程序邻近使能桌面来访问该功能的非程序邻近使能客户机(例如,传统客户机)。
在程序邻近使能客户机和程序邻近子系统270间的通信可发生于专用虚拟通道上,该专用虚拟通道建立在ICA虚拟通道之上。在其他实施例中,该通信使用XML服务而发生。在这些实施例的一个中,程序邻近使能客户机与提供服务器106上的程序邻近功能的XML子系统通信,该XML子系统为例如下述参考图6描述的XML服务516。
在一个实施例中,程序邻近使能客户机没有与带有程序邻近子系统270的服务器的连接。对于该实施例,客户机102向ICA浏览器子系统260发送建立到服务器106的ICA连接的请求,以识别对客户机102可用的应用。客户机102接着运行获取用户证书的客户端侧对话。通过ICA浏览器子系统260接收该证书,并将其发送到程序邻近子系统270。在一个实施例中,程序邻近子系统270将该证书发送到用户管理子系统以用于认证。该用户管理子系统可返回表示用户所属的账户列表的一组区别性的名称。在认证后,程序邻近子系统270建立程序邻近虚拟通道。该通道在应用过滤完成之前一直保持开放。
程序邻近子系统270接着从与这些账户关联的公共应用子系统524请求程序邻近信息。公共应用子系统524从持久存储器230获得程序邻近信息。一旦接收到程序邻近信息,程序邻近子系统270格式化该程序邻近信息,并且通过程序邻近虚拟通道将其返回到客户机。然后关闭部分ICA连接。
对于程序邻近使能客户机与服务器建立部分ICA连接的又一个实施例,考虑选择群38的客户机102的用户。群38的选择从客户机102向ICA浏览器子系统260发送与所选择的群38中的服务器106之一建立ICA连接的请求。该ICA浏览器子系统260将该请求发送到程序邻近子系统270,该子系统选择在群38中的服务器106。与该服务器106相关联的地址信息被识别并经由ICA浏览器子系统260返回到客户机102。客户机102随后可连接到对应于接收到的地址信息的服务器106。
在又一个实施例中,程序邻近使能客户机102建立ICA连接,程序邻近虚拟通道在该ICA连接上被建立并在ICA连接持续的时候保持打开。通过该程序邻近虚拟通道,程序邻近子系统270将程序邻近信息更新推送到客户机102上。为了获得更新,程序邻近子系统270从公共应用子系统524订阅事件,以使得程序邻近子系统270检测所发布的应用的变化。
参考图1E,框图描述了用于通过在web服务目录中的GUI的发布提供对客户机可用的多个应用程序的系统架构的又一个实施例。该系统包括客户机102和多个服务器106。第一服务器106具有内容服务器的功能。第二服务器106’提供web服务器功能,以及第三服务器106”提供用于提供对应用文件访问的功能并且充当应用服务器或文件服务器。客户机102可通过网络104从内容服务器106、web服务器106’、应用服务器106”下载内容。在一个实施例中,客户机102可通过客户端-应用服务器通信通道150从应用服务器106”下载内容(例如应用)。
在一个实施例中,客户机102上的web浏览器11使用安全套接字层(SSL)支持到内容服务器106和/或web服务器106’的通信。SSL是由位于美国加利福尼亚州Mountain View的Netscape Communication公司开发的安全协议,并且现在是由Internet工程任务组(IETF)发布的标准。该web浏览器11可选地可使用其他安全协议连接到内容服务器106和/或web服务器106’,所述其他安全协议例如,但不限于,由位于美国加里福尼亚州Los Altos的Terisa System公司开发的安全超文本传输协议(SHTTP)、HTTP over SSL(HTTPS)、由位于美国华盛顿州Redmond的Microsoft公司开发的私人通信技术(PCT),以及IETF发布的传输层安全(TLS)标准。在其他实施例中,web浏览器11使用没有加密的通信协议与服务器106通信,例如超文本传输协议(HTTP)。
另外,客户机102包括应用客户端13,该应用客户端13用于通过客户机-应用服务器通信通道150与应用服务器106”建立并交换通信。在一个实施例中,应用客户端13是GUI应用。在一些实施例中,应用客户端13是独立计算结构(ICA)客户端,其是由美国佛罗里达州Fort Lauderdale的CitrixSystem有限公司开发的,并且在下文也被称为ICA客户端13。应用客户端13的其他实施例包括由美国华盛顿州Redmond的Microsoft公司开发的远程显示协议(RDP)客户端,X-Windows客户端13、可执行多媒体应用、email、Java、或者.NET代码的客户端侧播放器、解释器或仿真器。而且,在一个实施例中在应用服务器106”上执行的应用的输出可通过ICA客户端13在客户机102上显示。在一些实施例中,应用客户端13是例如结合图5更详细描述的应用流客户端552的应用客户端。
客户机102搜索web服务目录160以获得web服务。在一个实施例中,此搜索是手动搜索。可选的,此搜索可为自动搜索。web服务目录160也可提供基于服务的视图,例如,白页和黄页,以在web服务目录中搜索web服务。在又一个实施例中,web服务目录160支持用于GUI应用的基于结构化的服务名称和服务种类的层次化的浏览。在一个实施例中,web服务目录160在独立于内容服务器106的服务器(例如目录服务器)上执行。在其他实施例中,web服务目录160在多个服务器上执行。
在一些实施例中,通过在web服务目录160中提供额外的信息或分析,内容服务器106使得客户机102能基于该分析或信息来选择web服务。web服务目录160可列出的服务信息示例包括,但不限于,提供服务的商务的名称、服务类型、服务的文本描述、一个或多个服务接入点(SAP)、网络类型、使用的路径(例如TCP或HTTPS)、以及服务质量(QoS)信息。而且服务信息可是客户端装置类型或用户(例如角色)细节。因此,可基于一个或多个上述属性选择服务。
在一个实施例中,服务类型指示客户机102访问web服务必须使用的编程接口。例如,服务类型可规定通过接口描述语言(例如web服务描述语言(WSDL))来对服务进行编码。
服务接入点(或SAP)是应用的唯一的地址。SAP使计算机系统能支持在客户机102和每个服务器106处的多个应用。例如,应用服务器106”可支持电子邮件(即,e-mail)应用、文件传输应用、和/或GUI应用。在一个实施例中,这些应用各自具有在应用服务器106”内是唯一的SAP。在一个实施例中,SAP是web或Internet地址(例如,域名系统(DNS)名称、IP/端口、或者统一资源定位符(URL))。因此,在一个实施例中,SAP将web服务器106’的地址识别为在web服务器106’上所存储的应用的地址的一部分。在一些实施例中,如下文所述,SAP将发布服务器插件165的地址识别为在web服务器106’上所存储的应用的地址的一部分。在一个实施例中,SAP是来自于UDDI注册中心的“接入点”。
为了准备在web服务目录160中发布的项目,内容服务器106包括web发布工具170。在一个实施例中,web发布工具170是软件模块。可选的,web发布工具173是另一个服务器,该服务器位于内容服务器106的外部或内部。
在一个实施例中,web服务器106’向客户机102传送web页。该web服务器106’可以是能够向客户机102提供web页的任何服务器106。在又一个实施例中,web服务器106’为企业信息门户(例如,企业内部网或安全的企业对企业的外部网)。企业门户为公司网站,用于聚集、个性化以及向用户提供应用、数据和内容,同时提供管理工具用于更有效地组织和使用信息。在一些公司中,门户以基于浏览器的对虚拟工作环境的访问来代替传统桌面软件。
web服务器106’也包括发布服务器插件165以进行图形用户接口(GUI)应用的发布。更具体地,发布服务器插件165将新的web服务入口URL转换到GUI应用服务中,以使得可通过web服务目录160来访问GUI。在一个实施例中,发布服务器插件165是通用网关接口(CGI)脚本,其是被设计为接收和返回符合CGI规范的数据的程序。可以任何程序语言来编写该程序,例如C、Perl、Java或者Visual Basic。在又一个实施例中,发布服务器插件165是Java服务器页面(JSP)。使用发布服务器插件165以方便远程GUI应用的发布,客户机102因此可以通过完全的GUI接口(例如用Citrix的ICA或者Microsoft的RDP)来访问web服务,而不通过编程接口或网页。
应用服务器106”寄载客户机102可用的一个或多个应用。这样的应用的例子包括字处理程序,例如MICROSOFT WORD以及电子表格程序,例如MICROSOFT EXCEL(两个都是由Washington,Redmond的Microsoft公司制造的),财务报告程序、客户注册程序、程序提供技术支持信息、客户数据库应用、或者应用集合管理器。
在一些实施例中,在不同的网络上建立一个或多个通信链接150。例如,客户机-内容服务器通信通道150’可能属于第一网络(例如,万维网)而客户机-web服务器通信通道150”可能属于第二网络(例如,安全的外部网或虚拟专用网(VPN))。
在一个实施例中,web发布工具173将关于该web发布工具173当前在web服务目录160中发布的应用的信息存储到持久大容量存储器225中。在一个实施例中该信息是用于动态发布服务器插件165的URL。持久大容量存储器225可为磁盘或磁光驱动器。在一个实施例中,持久大容量存储器225是数据库服务器,其将与所发布的应用相关的数据存储在一个或多个本地服务数据库中的。该持久大容量存储器225可以是位于任一或所有服务器106内部或外部的部件。
在其他实施例中,内容服务器106或者web服务器106’与群38中的服务器106通信,以检索应用列表。在这些实施例的一个中,内容服务器106或者web服务器106’与群38通信,而不是与持久大容量存储器225通信。
现参考图2,流程图描述了选择应用程序执行方法所采取的步骤的一个实施例。总的来说,接收与客户机或与客户机的用户相关联的证书以及列举可用于客户机执行的应用的请求(步骤202)。响应于接收到的证书,提供对客户机可用的多个应用程序的列举(步骤204)。接收执行所列举的应用的请求(步骤206)。响应于策略,选择执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举的应用的应用流式传输的方法(步骤208)。
接收与客户机或与客户机的用户相关联的证书以及列举可用于客户机执行的应用的请求(步骤202)。在一个实施例中,服务器从客户机102接收列举可用应用的请求以及证书。在又一个实施例中,在服务器106上的XML服务接收该请求和该证书,并且该请求和证书传输到服务器106上的管理服务。
在一些实施例中,作为web服务器运行的服务器106接收来自客户机102的通信并将该通信转发到服务器106’。在这些实施例的一个中,web服务器将该通信转发到服务器106’上的XML服务。在这些实施例的又一个中,web服务器驻留在客户机上。在由web服务器将来自客户机102的通信路由到服务器106’的其他的实施例中,响应客户机102的互联网协议(IP)地址选择服务器106。
在一些实施例中,客户机102请求对驻留在服务器106上的应用的访问。在这些实施例的一个中,客户机102请求由服务器106执行驻留在服务器106上的应用。在这些实施例的又一个中,客户机102请求检索包括该应用的多个应用文件。
在一些实施例中,用户通过由服务器106提供给客户机102的图形用户接口向服务器106提供证书。在其他实施例中,具有web服务器功能的服务器106”’给客户机102提供图形用户接口。在其他实施例中,由服务器106传输到客户机102的收集代理从客户机102收集证书。在一个实施例中,证书指用户名和密码。在又一个实施例中,证书不限于用户名和密码,但包括而不限于客户机102的机器ID、操作系统类型、操作系统补丁的存在、所安装网卡的MAC地址、在客户机装置上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头部、浏览器类型、装置类型、例如互联网协议地址或者地址的范围的网络连接信息、服务器106的机器ID、包括用于改变时区的调整的访问请求的日期或时间,以及授权证书。
在一些实施例中,与客户机相关联的证书与客户机的用户相关联。在这些实施例的一个中,证书是用户拥有的信息。在这些实施例的又一个中,证书是用户认证信息。在其他实施例中,与客户机相关联的证书与网络相关联。在这些实施例的一个中,证书是与客户机可连接到的网络相关联的信息。在这些实施例的另一个中,证书是与收集关于客户机的信息的网络相关联的信息。在其他实施例中,与客户机相关联的证书是客户机的特征。
响应于所接收的证书,提供对客户机可用的多个应用程序的列举(步骤204)。在一个实施例中,客户机102的用户可以在不知道何处去寻找这样的应用和没有链接到这样的应用的所需要的技术信息的情况下,了解由网络104中的服务器106所寄载的应用程序的可用性。这些可用的应用程序可以包括用户的“程序邻近”。用于确定用于客户机的程序邻近的系统可包括应用程序(以下称为“程序邻近”应用)、用于存储应用程序的组件的存储器、以及用于执行应用程序的处理器。如下文所述,可在客户机102的存储器中和/或在服务器106上安装该程序邻近(PN)应用。
根据程序邻近应用操作的服务器106从在群38中的每个服务器106中收集应用相关的信息。对于每个所寄载的应用的应用相关的信息可以是多种信息,其包括,例如,寄载该应用的服务器的地址、应用名称、授权使用该应用的用户或用户组、以及在建立连接以运行该应用之前客户机102需要的最小能力。例如,该应用可流式传输视频数据,因此需要的最小能力可能是客户机支持视频数据。其他示例要求客户机支持音频数据或有能力处理加密的数据。可将应用相关信息存储在数据库中。
当客户机102连接到网络104时,客户机102的用户提供用户证书。用户证书可包括客户机102的用户的用户名、用户密码、以及用户被授权的域名。可选地,可以从智能卡、基于时间的令牌、社会保险号、用户密码、个人身份证(PIN)号码、基于对称键值或椭圆曲线加密的数字证书、用户的生物学特征,或者可用于获得并提交客户机102的用户身份用于验证的任何其他方式来获得用户证书。响应于客户机102的服务器106可基于用户证书来对用户进行认证。可将用户证书存储于程序邻近应用执行的任何地方。对于客户机102执行程序邻近应用的实施例,可将用户证书存储于客户机102。对于服务器106执行程序邻近的实施例,可将用户证书存储于服务器106。
服务器106也可从用户证书和应用相关的信息确定服务器106所寄载的哪些应用程序可被客户机102的用户使用。服务器106将表示可用应用程序的信息传输到客户机102。该过程消除了客户机102的用户建立应用连接的需要。此外,服务器106的管理员可在客户机102的多个用户之间控制对应用的访问。
在一些实施例中,由服务器106执行的用户认证足可以授权呈现给客户机102的每个所寄载的应用程序的用户,尽管这样的应用程序可驻留在另一服务器106’上。因此,当客户机102启动(例如初始化执行)所寄载的应用之一时,由客户机102额外地输入用户证书来对该应用的使用进行认证是没有必要的。因此,用户证书的单次输入可服务于确定可用的应用,以及在没有用户其他的手动登录认证过程的情况下授权启动这样的应用。
客户机102或者服务器106可启动程序邻近应用。可在客户机102的显示屏上显示该结果。在基于图形窗口的实现中,可在程序邻近图形窗口中显示该结果,并且通过该窗口中的图标表示每个授权的应用程序。
在一个实施例中,程序邻近应用过滤掉客户机102没有被授权执行的应用程序,并只显示授权的(即可用的)程序。在其他实施例中,程序邻近应用可显示授权的和未授权的应用。当没有从显示中过滤掉未授权的应用时,可提供指示这样应用程序是不可用的通知。可选地,在没有标识哪些应用被授权或未被授权给客户机102执行的情况下,程序邻近应用可以向客户机102的用户报告由服务器106所寄载的所有应用。可在随后当客户机102试图运行这些应用之一时确定授权。
客户机102从服务器106请求应用列举。应用列举可使客户机102的用户查看每个发布的应用的名称。在一个实施例中,无论用户是否有权执行该应用,客户机102的用户可查看该应用的名称。在又一个实施例中,用户只查看该用户被授权执行的那些应用的名称。
对于应用列举的请求传递到ICA浏览器子系统260、程序邻近子系统270、或者到公共应用子系统524,这取决于由客户机102正运行的特定过程。例如,当客户机102运行程序邻近应用时,对于应用列举的请求被发送到服务器106上的程序邻近子系统270。当客户机102通过网页提交列举请求时,该请求传递到公共访问点子系统524。对于这些实施例,当客户机102想要列举应用时,公共应用子系统524作为用于程序邻近子系统270、ICA浏览器子系统260、以及公共应用子系统的初始访问点。在一些实施例中,当客户机102通过网页提交列举请求时,寄载web服务器的中间服务器106接收该请求并向服务器106’转发该请求。
一旦接收到列举请求,公共应用子系统524在持久存储器230中查询所有应用的列表。对于从程序邻近子系统270和公共访问点(未示出)子系统接收到的请求,根据客户机102的用户的证书对该应用列表进行过滤(即,用户只能查看那些授权给用户的应用)。
客户机102也可请求服务器列举。服务器列举使客户机102的用户能查看群38中的服务器的列表。在一个实施例中,可根据服务器的类型来过滤服务器的列表,如由在该服务器上的专门的服务器子系统确定。
对于服务器列举的请求传递到ICA浏览器子系统260或者公共访问点子系统(未示出),这取决于客户机120正在运行的特定过程。例如,当客户机120通过网页提交服务器列举请求时,该请求传递到公共访问点子系统(未示出)。对于这些实施例,公共服务器子系统300用作用于ICA浏览器子系统260和公共访问点(未示出)子系统的初始访问点。一旦接收到服务器列举请求,公共服务器子系统向持久存储器230查询所有服务器列表。可选地,根据服务器类型来过滤服务器列表。
图3A描述了客户机102通过其初始化程序邻近应用的执行的过程的又一个实施例的框图,在该示例中是通过万维网。客户机102执行web浏览器应用80,例如由位于加利福尼亚州的Mountain View的NetscapeCommunication有限公司制造的NETSCAPE NAVIGATOR,或者由位于华盛顿州的Redmond的Microsoft公司制造的MICROSOFT INTERNET EXPLORER,或者由位于加利福尼亚州的Mountain View的Mozilla基金会制造的FIREFOX,或者由Norway,Oslo的Opera Software ASA制造的OPERA,或者由加里福尼亚州的Cupertino的Apple Computer有限公司制造的SAFARI。
客户机102通过web浏览器80传输访问对应于驻留在服务器106上的HTML页面的统一资源定位符(URL)的请求82。在一些实施例中,由服务器106向客户机102返回的第一HTML页面84为寻求识别客户机102的认证页面。
仍参考图3A,一旦客户机102经服务器106认证,响应另一请求86,该服务器106准备并向客户机102传送HTML页面88,所述页面88包括程序邻近窗口58,其中显示表示客户机102访问的应用程序的图标57。客户机102的用户通过点击图标57引起图标57所表示的应用的执行。
在一些实施例中,服务器106代表客户机102的用户执行程序邻近应用。在这些实施例的一个中,服务器106是位于客户机102和服务器106’之间的中间服务器。
参看图3B,其描述通过在web服务目录中发布GUI来提供对客户机可用的多个应用程序的所采取的步骤的一个实施例的流程图。web发布工具173接收用于发布的应用(例如GUI应用)的web服务描述和访问信息(步骤300)。在一个实施例中,web服务描述包括上文所述的服务信息(例如,提供web服务的商家的名称、服务类型、服务的文本描述、以及SAP)。访问信息可包括,例如,发布的应用名称、传输控制协议(TCP)浏览服务器群地址、以及MetaFrame服务器IP地址。在一些实施例中,访问信息指定使用的地址和用于穿过网络或安全网关或桥装置的标签。
web发布工具173接着构造服务发布请求以请求该web服务(即,GUI应用)的发布(步骤305)。在一个实施例中,服务发布请求包括SAP。在一些实施例中,SAP是包括web服务器106’的网络地址和发布服务器插件165的URL。进一步的,网络地址可为统一资源标识符(URI),其是用于指向web上的对象的地址和名称的类型的通用术语。URL是一种URI。URI的一个示例是web服务器106’的名称(例如,“web服务器”)以及用于发布服务器插件165的CGI脚本名称(例如“dynamic-component”(“动态组件”))。
web发布工具173将与SAP相关联的SAP条目存储在持久大容量存储器225中(步骤310)。在一些实施例中,web发布工具173也将所发布的应用信息(例如,ICA-published-app-info)与GUI应用相关联。在进一步的实施例中,web发布工具173还在服务发布请求中包括标识内容服务器106在持久大容量存储器225中存储的SAP条目的键。例如,该键的值可以是“123456677”。“http://web-server/dynamic-component/?app=123456677”是识别web服务器106’、发布服务器插件165的CGI脚本名称,以及上文所述的键的SAP的示例。
与上述的SAP相关联的SAP条目的示例是“key=123456677,value=ICA-published-app-info”。该键可以是任意长度(例如,56位键,128位键)。在一个实施例中,该键是加密的随机数字。该键也为键持有者提供访问权限。尽管以键的方式进行了说明,但可使用任何方式为存储在持久大容量存储器225中的SAP条目提供安全形式。
web发布工具173向内容服务器106提供用于在web服务目录160中发布的服务发布请求(步骤315)。而且,在一个实施例中,内容服务器106向客户机102传输请求随后用于定位SAP条目的特定网络服务的SAP的键。在一个实施例中,服务发布请求的发布使客户机102的用户能访问该服务。在一个实施例中,可使用位于佛罗里达州的Fort Lauderdale的CitrixSystem有限公司开发的NFUSE在web服务目录160上发布GUI应用。在一些实施例中,GUI应用的发布者使用应用启动和嵌入(ALE)定制web服务目录160上的GUI应用的发布,ALE也是由Citrix System有限公司开发的。ALE使得能从HTML页面启动GUI应用或者将该应用嵌入HTML页面中。
客户机102接着从web服务目录160查询服务名称(步骤320)。内容服务器106从客户机102接收该查询(325)并在web服务目录160中寻找所请求的服务名称。在又一个实施例中,客户机102的用户导航web服务目录160,直到定位到客户机102的用户试图去寻找的特定的服务名称。虽然以客户机102进行说明,但是任何web服务目录客户机(例如,UDDI客户机或者LDAP浏览器)可查询或导航该web服务目录160以发现所发布的web服务。
一旦定位与所接收的查询相关联的SAP,内容服务器106向客户机102传输该SAP(步骤330)。客户机102接收该SAP(步骤335)并确定来自于该SAP的发布服务器插件165的地址。客户机102随后向web服务器106’传输对GUI应用的请求(步骤340)。在一些实施例中,来自于客户机102的请求是从web浏览器11传输到web服务器106’的HTTP请求。在其他实施例中,在客户机102上执行的应用(例如,通用目录浏览器或HTML UI)从内容服务器106接收SAP并将该SAP作为参数提供给web浏览器11。web浏览器11接着可以向web服务器106’自动传输HTTP请求(对于GUI应用)。沿着前述示例的思路,http://web-server/dynamic-component/?app=123456677是对web服务器106’的应用请求的具体示例。
web服务器106’,和更具体地,发布服务器插件165,接收与SAP相关联的应用请求(步骤345),并确定与该请求相关联的SAP条目(步骤350)。在一个实施例中,发布服务器插件165从客户机102接收请求,并且检索与该请求关联的、与已被(作为SAP条目的一部分)存储在持久大容量存储器225中的所发布的应用信息。在一些实施例中,发布服务器插件165使用客户机102从内容服务器106接收的SAP(或SAP的一部分)作为访问在持久大容量存储器225中存储的适当服务条目(例如,所发布的应用信息)的键。
发布服务器插件165接着构造具有所发布的应用信息(例如,应用服务器106”的HTTP地址)的文件或文档,并将该文档传输到客户机102(步骤355)。该发布服务器插件165构造文件以便该文件的格式与应用客户端13兼容。在一个实施例中,该文档是多用途的互联网邮件扩展协议(MIME)或安全MIME(S/MIME)文档。在又一个实施例中,该文档是包含ICA web客户端嵌入式对象HTML标签的HTML文档。在又一个实施例中,该文档是包含应用流客户端嵌入式对象HTML标签的HTML文档。
web浏览器11随后接收文档并试着打开该文档。在一个实施例中,如果没有在客户机102上安装应用客户端13,则客户机102与应用服务器106”通信以下载并安装应用客户端13。一旦安装了应用客户端13或者可选地,如果已经在客户机102上安装了应用客户端13,那么客户机102启动该应用客户端13以查看从web服务器106’接收的文档(步骤360)。
一旦在客户机102上安装并执行应用客户端13,应用服务器106”接着执行应用并在应用客户端13上显示该应用(步骤365)。如以下结合图7进一步详细描述的,在一个可选的实施例中,该应用服务器106”传输包括该应用的多个应用文件到应用客户端13,以在客户机102上执行。在又一个实施例中,客户机102查看该文档(甚至在启动应用客户端13之前)并使用该文档中的信息来从应用服务器106”获得GUI应用。在该实施例中,GUI应用的显示包括应用客户端106”的安装和执行。此外,查看该文档可以是对客户机102的用户透明的。例如,客户机102可从web服务器106’接收文档,并在自动从应用服务器106”请求GUI应用之前解释该文档。
因此,应用客户端13提供对所发布的应用、桌面、桌面文档、以及应用客户端13所支持的任何其他应用的基于服务的访问。应用客户端13可提供访问的应用的示例包括,但不限于,WINDOWS桌面、诸如MICROSOFT EXCEL、WORD以及POWERPOINT的WINDOW文档,(其所有都是由华盛顿州Redmond的Microsoft Corporation开发的),Unix桌面(例如由加利福尼亚州Palo Alto的Sun Microsystems开发SUN SOLARIS和由北卡罗来纳州Durham的Red Hat有限公司发布的GNU/Linux),以及其他。
在一些实施例中,响应于策略引擎确定客户机是否可以和如何访问应用,提供对客户机102可用的多个应用程序的列举(步骤204)。该策略引擎可在作出确定之前收集关于客户机的信息。现在看图4A,描述了计算机网络的一个实施例,其包括客户机102、收集代理404、策略引擎406、策略数据库408、群38、以及应用服务器106’。在一个实施例中,策略引擎406是服务器106。虽然在图4A所示的实施例中描述了只有一个客户机102、收集代理404、策略引擎406、群38、以及应用服务器106’,应理解该系统可提供这些组件的每个或任意的多个。
总的来看,当客户机102向策略引擎406传输访问应用的请求410时,收集代理404与客户机102通信,检索关于客户机102的信息,并向策略引擎406传输客户机信息412。该策略引擎406通过向接收到的信息412应用来自于策略数据库408的策略来作出访问控制决策。
更详细的,客户机102向策略引擎406传输对资源的请求410。在一个实施例中,策略引擎406驻留在应用服务器106’上。在又一个实施例中,该策略引擎406是服务器106。在又一个实施例中,应用服务器106’从客户机102接收请求410,并将该请求410传输到策略引擎406。在又一个实施例中,客户机向服务器106”’传输对资源的请求410,该服务器106”’将该请求410传输到策略引擎406。
在一些实施例中,客户机102通过网络连接传输请求410。该网络可以是局域网(LAN)、城域网(MAN)或诸如互联网的广域网(WAN)。客户机102和策略引擎406可以通过各种连接连接到网络,所述连接包括标准电话线、LAN或WAN链接(例如,T1、T3、56kb、X.25)、宽带连接(ISDN、帧中继、ATM)、无线连接。在客户机102和策略引擎10之间的连接可使用各种数据链路层通信协议(TCP/IP、IPX、SPX、NetBIOS、NetBEUI、SMB、以太网、ARCNET、光纤分布式数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g和直接异步连接)。该连接也可以是如上文所述的通信链路150。
一旦接收到该请求,策略引擎406通过收集代理404启动信息收集。收集代理404收集关于客户机102的信息,并向策略引擎406传输信息412。
在一些实施例中,收集代理404收集并通过网络连接传输信息412。在一些实施例中,收集代理404包括字节码,例如以字节码编程语言JAVA写的应用。在一些实施例中,收集代理404包括至少一个脚本。在那些实施例中,收集代理404通过在客户机102上运行至少一个脚本来收集信息。在一些实施例中,收集代理包括客户机102上的Active X控件。Active X控件是专门的组件对象模型(COM)对象,其实现为一组接口使得其看起来像控件并且类似控件工作。
在一个实施例中,策略引擎406向客户机102传输收集代理404。在一个实施例中,策略引擎406在收集代理404向策略引擎406传输信息412后要求第二次执行收集代理404。在该实施例中,策略引擎406可能没有足够的信息412来确定客户机102是否满足特定条件。在其他实施例中,策略引擎406响应于接收到的信息412要求多次执行收集代理404。
在一些实施例中,策略引擎406向收集代理404传输确定收集代理404收集的信息的类型的指令。在那些实施例中,系统管理员可以配置从策略引擎406传输到收集代理404的指令。这提供了对所收集的信息的类型的更强的控制。由于对所收集的信息的类型的更强的控制,也扩展了策略引擎406可做出的访问控制决策的类型。收集代理404收集信息412,所述信息412包括但不限于,客户机102的机器ID、操作系统类型、操作系统补丁的存在、安装的网卡的MAC地址、客户端装置上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头部、浏览器类型、装置类型、例如互联网协议地址或者地址的范围的网络连接信息、服务器106的机器ID,包括用于改变时区的调整的访问请求的日期或时间、以及授权证书。
在一些实施例中,装置类型是个人数字助理。在其他实施例中,装置类型是蜂窝电话。在其他实施例中,装置类型是膝上型电脑。在其他实施例中,装置类型是台式计算机。在其他实施例中,装置类型是上网亭(InternetKiosk)。
在一些实施例中,数字水印包括数据嵌入。在一些实施例中,水印包括插入到文件中提供关于该文件的源信息的数据模式。在其他实施例中,水印包括数据散列文件以提供篡改检测。在其他实施例中,水印提供关于文件的版权信息。
在一些实施例中,网络连接信息涉及带宽能力。在其他实施例中,网络连接信息涉及互联网协议地址。在其他实施例中,网络连接信息包括互联网协议地址。在一个实施例中,网络连接信息包括识别登录代理的网络时区,客户机向该登录代理提供验证证书。
在一些实施例中,授权证书包括多种类型的认证信息,包括但不限于,用户名、客户机名、客户机地址、密码、PIN、声音样本、一次性密码、生物特征数据、数字证书、标签等、以及上述的组合。在接收到所收集的信息412后,策略引擎406基于接收到的信息412作出访问控制决策。
现在看图4B,框图描述了策略引擎406的一个实施例,包括第一组件420和第二组件430,所述第一组件420组件包括条件数据库422和登录代理424,所述第二组件430包括策略数据库432。第一组件420将来自于条件数据库422的条件应用到所接收的关于客户机102的信息,并且确定所接收的信息是否满足该条件。
在一些实施例中,条件可能要求客户机102执行特定的操作系统以满足该条件。在其他实施例中,条件可以要求客户机102执行特定的操作系统补丁以满足该条件。在其他实施例中,条件可以要求客户机102提供每个安装的网卡的MAC地址以满足该条件。在一些实施例中,条件可以要求客户机102指出在特定的活动目录中的成员以满足该条件。在又一个实施例中,条件可以要求客户机102执行病毒扫描器以满足该条件。在其他实施例中,条件可以要求客户机102执行个人防火墙以满足该条件。在一些实施例中,条件可以要求客户机102包括特定的装置类型以满足该条件。在其他实施例中,条件可以要求客户机102建立特定类型的网络连接以满足该条件。
如果所接收的信息满足条件,第一组件420将该条件的标识符存储在数据集426中。在一个实施例中,如果所接收的信息使条件为真,则该信息满足该条件。例如,条件可以要求安装特定的操作系统。如果客户机102有该操作系统,则该条件为真并且被满足。在又一个实施例中,如果所接收的信息使条件为假,则该信息满足该条件。例如,条件可以针对恶意软件是否存在于客户机102上。如果客户机102不包括恶意软件,则条件为假并且被满足。
在一些实施例中,登录代理424驻留在策略引擎406之外。在其他实施例中,登录代理424驻留在策略引擎406上。在一个实施例中,第一组件420包括登录代理424,该代理发起关于客户机102的信息的收集。在一些实施例中,登录代理424进一步包括数据存储。在这些实施例中,数据存储包括收集代理可为其收集信息的条件。该数据存储与条件数据库422明显不同。
在一些实施例中,登录代理424通过执行收集代理404发起信息收集。在其他实施例中,登录代理424通过向客户机102传输用于客户机102上的执行的收集代理404来发起信息收集。仍在其他实施例中,登录代理424在接收信息412后发起额外的信息收集。在一个实施例中,登录代理424也接收信息412。在该实施例中,登录代理424基于所接收的信息412生成数据集426。在一些实施例中,登录代理424通过将来自数据库422的条件应用到从收集代理404接收的信息而生成数据集426。
在又一个实施例中,第一组件420包括多个登录代理424。在该实施例中,多个登录代理424中的至少一个驻留在每个网络域,从这些网络域,客户机102可传输资源请求。在该实施例中,客户机102向特定的登录代理424传输资源请求。在一些实施例中,登录代理424通过网络域传输到策略引擎406,客户机102从该网络域访问登录代理424。在一个实施例中,客户机102从其访问登录代理424的网络域被称为客户机102的网络区域。
条件数据库422存储第一组件420将应用于所接收的信息的条件。策略数据库432存储第二组件430将应用于所接收的数据集426的策略。在一些实施例中,条件数据库422和策略数据库432将数据存储在ODBC兼容的数据库中。例如,条件数据库422和策略数据库432可作为ORACLE数据库而被提供,该数据库由加利福尼亚州Redwood Shore s的Oracle公司制造。在其他实施例中,条件数据库422和策略数据库432可为Microsoft ACCESS数据库或Microsoft SQL服务器数据库,上述产品由华盛顿州Redmond的Microsoft公司制造。
在第一组件420将所接收的信息应用到条件数据库422中的每个条件之后,第一组件向第二组件430传输数据集426。在一个实施例中,第一组件420仅仅向第二组件430传输数据集426。因此,在该实施例中,第二组件430不接收客户机信息412,仅仅接收所满足的条件的标识符。第二组件430接收数据集426,并基于在数据集426中所识别的条件,通过应用来自策略数据库432的策略做出访问控制决策。
在一个实施例中,策略数据库432存储应用于所接收的信息412的策略。在一个实施例中,通过系统管理员至少部分的指定存储在策略数据库432中的策略。在又一个实施例中,用户指定在策略数据库432中存储的至少一些策略。将用户指定的一个策略或多个策略存储为优选项。策略数据库432可存储于易失性或非易性存储器中,或者例如分布在多个服务器上。
在一个实施例中,只有在一个或多个条件被满足时,策略才允许对资源的访问。在又一个实施例中,策略允许对资源的访问但严禁向客户机102传输资源。另一个策略可能在请求在安全网络内访问的客户机102上做出临时连接。在一些实施例中,资源为应用程序并且客户机102已请求执行该应用程序。在这些实施例的一个中,策略允许在客户机102上执行应用程序。在这些实施例的又一个中,策略可使客户机102能接收包括该应用程序的文件流。在该实施例中,可在隔离环境中存储和执行该文件流。在这些实施例的又一个中,策略可以仅仅允许在服务器(例如应用服务器)上执行该应用程序,并要求该服务器将应用输出数据传输到客户机102。
现参考图4C,流程图描述了由策略引擎406基于所接收的关于客户机102的信息作出访问控制决策而采取的步骤的一个实施例。一旦接收到所收集的关于客户机102的信息(步骤450),策略引擎406基于该信息生成数据集(步骤452)。该数据集426包含每个被所接收的信息412满足的条件的标识符。该策略引擎406将策略应用于数据集426内的每个所识别的条件。该应用产生客户机102可访问的资源的列举(步骤454)。策略引擎406接着将该列举呈现给客户机102。在一些实施例中,策略引擎406创建超文本标记语言(HTML)文档,用于将所述列举呈现给客户机。
现参考图4D,更详细地描述了所构造的网络的一个实施例,其包括客户机102、收集代理404、策略引擎406、策略数据库408、条件数据库409、客户机102、102’、会话服务器420、所存储的应用数据库422、第一服务器106’、第一数据库428、第二服务器106”、以及第二数据库432。概括地说,当客户机102向访问控制服务器406或策略引擎传输访问应用程序的请求410时,收集代理404与客户机102通信,检索关于客户机102的信息,并向策略引擎406传输客户机信息412。如上文在图4A和4B中讨论的,策略引擎406作出访问控制决策,而客户机102接收与客户机102相关联的可用的应用的列举。
在一些实施例中,会话服务器420在客户机102和与客户机102相关联的多个应用会话间建立连接。在其他实施例中,策略引擎406确定客户机102有权检索包含该应用的多个应用文件,以及有权在本地执行该应用程序。在这些实施例的一个中,服务器106’存储应用会话数据以及包括该应用程序的多个应用文件。在这些实施例的又一个中,客户机102与服务器106’建立应用流会话,该服务器106’存储应用会话数据和包含该应用程序的多个应用文件。
现在看图4E,流程图描述了会话服务器420为客户机102提供对其相关的应用会话的访问而采取的步骤的一个实施例。该会话服务器420从策略引擎406接收关于客户机102的、包括策略引擎406作出的访问控制决策的信息(步骤480)。会话服务器420生成关联的应用的列举(步骤482)。会话服务器420可将客户机102连接到关联的应用(步骤484)。在一个实施例中,该信息也可包括客户机信息412。在又一个实施例中,该信息包括在本地执行应用程序的授权。
会话服务器420生成关联的应用的列举(步骤482)。在一些实施例中,策略引擎406识别已经与客户机102相关联的多个应用会话。在又一个实施例中,会话服务器420识别所存储的与客户机102相关联的应用会话。在这些实施例的一些中,一旦从策略引擎406接收到该信息,会话服务器420自动识别所存储的应用会话。在一个实施例中,所存储的应用数据库422驻留在会话服务器420上。在又一个实施例中,所存储的应用数据库422驻留在策略引擎406上。
所存储的应用数据库422包含与群38中的多个服务器相关联的数据,所述服务器执行应用会话或提供对应用会话数据和包含该应用程序的应用文件的访问。在一些实施例中,识别与客户机102相关联的应用会话要求查询所存储的与一个或多个服务器相关联的数据。在这些实施例的一些中,会话存储器420查询所存储的与一个或多个服务器相关联的数据。在这些实施例的其他一些实施例中,策略引擎406查询所存储的与一个或多个服务器相关联的数据。在一些实施例中,第一应用会话在第一服务器106’上运行,并且第二应用会话在第二服务器106”上运行。在其他实施例中,所有的应用会话在群38中的单个服务器106上运行。
会话服务器420包括与由用户启动的应用会话相关的信息。该会话服务器可存储于易失性或非易失性存储器中,或者例如,分布在多个服务器上。表1示出包括在示例的会话服务器420的一部分中的数据:
  应用会话   应用会话1   应用会话2   应用会话3
  用户ID   用户1   用户2   用户1
  客户机ID   第一客户机   第一客户机
  客户机地址   172.16.0.50   172.16.0.50
  状态   活动的   断开的   活动的
  应用   字处理器   数据库   电子表格
  进程号   1   3   2
  服务器   服务器A   服务器A   服务器B
  服务器地址   172.16.2.55   172.16.2.55   172.16.2.56
表1
表1中示例的会话服务器420包括将每个应用会话与启动该应用会话的用户相关联的数据,还包括用户当前从其连接到服务器106的客户端计算机102或102’的标识(如果有的话),还包括客户端计算机102或102’的IP地址。该示例的会话服务器420也包括每个应用会话的状态。应用会话状态可为,例如,“活动的”(意味着用户连接到应用会话),或者“断开的”(意味着用户没有连接到该应用会话)。在可选的实施例中,应用会话的状态也可被设置为“执行-断开”(意味着用户已经从应用会话断开,但是在应用会话中的应用仍然在执行),或者“停止-断开”(意味着用户断开并且在应用会话中的应用没有正在执行,但是紧接在断开之前的它们的操作状态已被存储)。会话服务器420进一步存储信息和数据,所述信息指示正在每个应用会话内执行的应用,并且所述数据指示服务器上每个应用的进程。在服务器106’是群38一部分的实施例中,会话服务器420至少是动态存储的一部分,并且该会话服务器也包括在表1的最后两行中的数据,该数据指示每个应用现在正在/过去正在群38中的哪个服务器106上执行,以及该服务器106的IP地址。在可选的实施例中,会话服务器420包括用于每个应用会话中的每个应用的状态指示器。
例如,在表1的例子中,存在三个应用会话,应用会话1、应用会话2以及应用会话3。应用会话1与用户1相关联,用户1正在使用终端1。终端1的IP地址是152.16.2.50。应用会话1的状态是活动的,并且在应用会话1中正执行字处理程序。字处理程序正在服务器A上执行,进程号为1。服务器A’的IP地址是152.16.2.55。表1中的应用会话2是断开的应用会话118的示例。应用会话2与用户2相关联,但应用会话2没有连接到客户机102或者20。应用会话2包括正在IP地址为152.16.2.55的服务器A上执行的、进程号为3的数据库程序。应用会话3是用户如何与在不同服务器106上操作的应用会话交互的示例。应用会话3像应用会话1一样与用户1相关联。应用会话3包括在IP地址为152.16.2.56的服务器B上正在执行的、进程号为2的电子表格程序,而在应用会话1中所包含应用会话正在服务器A上执行。
在又一个例子中,当跨越与诸如服务器B的第二服务器106”的应用流会话进行通信来获取来自第二服务器106”的第二应用程序用于本地执行时,用户可以通过在诸如服务器A的服务器106’上执行的应用会话来访问第一应用程序。当不满足第一应用程序的执行所必须的条件时,客户机102的用户可能有获得的在本地执行第二应用程序的授权。
在一个实施例中,将会话服务器420配置为接收断开与客户机102相关联的应用会话的断开请求,并且响应于该请求来断开该应用会话。该会话服务器420在从应用会话断开客户机102后,继续执行该应用会话。在该实施例中,会话服务器420访问所存储的应用数据库422,并更新与每个断开的应用会话相关联的数据记录,以便该记录指示与客户机102相关联的应用会话是断开的。
在接收到与连接到网络的客户机相关联的认证信息之后,会话服务器420查询所存储的应用数据库422以识别与客户机的用户相关联的任何活动的应用会话,但是例如如果认证信息与客户机102’相关联,则识别连接到例如客户机102’的不同客户机的任何活动的应用会话。在一个实施例中,如果会话服务器420识别任何这样的活动的应用会话,该会话服务器420从客户机102自动断开应用会话,并将该应用会话连接到当前的客户机102’。在一些实施例中,所接收的认证信息将限制客户机102可重新连接的应用会话。在其他实施例中,所接收的认证信息授权在客户机102’上执行应用程序,其中,对于客户机102可能已经拒绝该授权。在这些实施例的一个中,会话服务器420可提供客户机访问信息以获取用于本地执行的应用程序。
接收执行所列举的应用的请求(步骤206)。在一个实施例中,客户机102的用户从所接收的可用应用的列举中选择用于执行的应用。在又一个实施例中,用户独立于所接收的列举来选择用于执行的应用。在一些实施例中,用户通过选择客户端代理在客户机102上呈现的应用的图形表示来选择用于执行的应用。在其他实施例中,用户通过选择呈现给web服务器或其他服务器106”’上的用户的应用的图形表示来选择用于执行的应用。
在其他的实施例中,用户请求访问文件。在这些实施例的一个中,需要执行应用以给用户提供对文件的访问。在这些实施例的又一个中,在选择用于访问的文件后,自动选择用于执行的应用。在这些实施例的又一个中,在访问文件的请求之前,将应用与文件的类型相关联,使得在识别与所请求的文件相关联的文件类型后能自动选择应用。
在一个实施例中,所列举的应用包括多个应用文件。在一些实施例中,该多个应用文件驻留在服务器106’上。在其它实施例中,该多个应用文件驻留在单独的文件服务器或服务器106”上。在其它实施例中,该多个应用文件可被传输到客户机102。在其他实施例中,在该多个应用文件中的文件可在将该多个应用文件中的第二个文件传输到客户机102之前被执行。
在一些实施例中,服务器106从服务器106’检索关于所列举的应用的信息。在这些实施例的一个中,服务器106接收寄载多个应用文件的服务器106”的标识。在这些实施例的又一个中,服务器106接收多个应用文件的位置标识,该标识符合通用命名约定(UNC)。在这些实施例的又一个中,该标识包括网络位置和用于应用流协议的套接字。
在一个实施例中,服务器106检索包含关于所列举的应用的信息的文件。该文件可包括寄载所列举应用的服务器的位置的标识。该文件可包括所列举的应用的多个版本的标识。该文件可包括包含所列举的应用的多个应用文件的列举。该文件可包括压缩文件的标识,该压缩文件包括包含所列举的应用的多个应用文件。该文件可包括执行所列举的应用的机器要满足的先决条件的标识。该文件可以包括与所列举的应用相关联的数据文件的列举。该文件可包括将要在执行所列举的应用的机器上执行的脚本的列举。该文件可包括与所列举的应用相关联的注册数据的列举。该文件可包括规则的列举,所述规则用于所列举的应用在隔离环境之内执行的实施例中。在一个实施例中,该文件可被称为“清单(manifest)”文件。
在一些实施例中,服务器106将策略应用于客户机102的所识别的特征。在这些实施例的一个中,响应所识别的特征,服务器106识别所列举的用于执行的应用的版本。在这些实施例的又一个中,服务器106做出执行与客户机102的特征相兼容的所列举的应用的版本的确定。在这些实施例的又一个中,服务器106做出执行与在客户机102上执行的操作系统相兼容的所列举的应用的版本的确定。在这些实施例的又一个中,服务器106做出执行与客户机102上的操作系统的修订级相兼容的所列举的应用的版本的确定。在这些实施例的一个中,服务器106做出执行与客户机102上的操作系统所指定的语言相兼容的所列举的应用的版本的确定。
响应于策略来选择用于执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举应用的应用流式传输的方法(步骤208)。在一个实施例中,响应将策略应用于与客户机102相关联的所接收的证书来做出选择。在一些实施例中,该选择是由策略引擎做出的,例如在上文图4A、4B、4C中所描述的策略引擎406。在其他实施例中,接收证书和执行所列举应用的请求的服务器106还包括这样的策略引擎406。
在一个实施例中,预定数量的方法包括用于在服务器106’上执行所列举应用的方法。在又一个实施例中,预定数量的方法包括用于在客户机102上执行所列举应用的方法。在又一个实施例中,预定数量的方法包括用于在第二服务器106’上执行所列举的应用的方法。
在一些实施例中,预定数量的方法包括用于通过应用流会话向客户机102提供所列举的应用的方法。在这些实施例的一个中,客户机102包括流服务代理,该代理能够启动与服务器106’的连接,并从服务器106’接收传输的数据分组的流。
数据分组的流可以包括应用文件,所述应用文件包括所列举的应用。在一些实施例中,应用文件包括与应用程序相关联的数据文件。在其他实施例中,应用文件包括执行应用程序所需的可执行文件。在其他实施例中,应用文件包括元数据,该元数据包括关于文件的信息,例如位置、兼容性需求、配置数据、注册数据、用于使用在隔离环境中的执行脚本规则的标识、或者授权需求。
在一些实施例中,在传输包括流式应用的多个应用文件中的每个应用文件之前执行该流式应用。在这些实施例的一个中,在客户机102收到多个应用中的一个应用文件后,开始执行流式应用。在这些实施例的又一个中,在客户机102收到多个应用文件中的可执行应用文件后,开始执行流式应用。在这些实施例的又一个中,客户机102执行多个应用文件中的第一个所接收的应用文件,并且第一个所接收的应用文件请求对多个应用文件中的第二个应用文件访问。
在一个实施例中,流式应用在客户机102上执行,而无需永久驻留在客户机102上。在该实施例中,流式应用可在客户机102上执行,并且一旦终止流式应用,则将其从客户机102上移除。在又一个实施例中,在每个应用文件的预先部署的副本存储在客户机102上之后,流式应用在客户机102上执行。在又一个实施例中,在将每个应用文件的副本存储在客户机102的隔离环境中之后,流式应用在客户机102上执行。在又一个实施例中,在将每个应用文件的副本存储在客户机102上的高速缓存中之后,流式应用在客户机102上执行。
在一个实施例中,响应于确定客户机102可接收流式应用文件,从预定数量的方法中选择用于将应用流式传输到客户机102的方法。在又一个实施例中,响应于确定客户机102有权在客户机102本地执行流式应用文件,从预定数量的方法中选择用于将应用流式传输到客户机102的方法。
在其他实施例中,预定数量的方法包括用于向客户机102提供应用输出数据的方法,应用输出数据是在服务器106上执行所列举应用而生成的。在这些实施例的一个中,服务器106是接收执行所列举应用的请求的服务器106。在这些实施例的又一个中,服务器106是第二服务器106’,例如文件服务器或应用服务器。在一些实施例中,所列举的应用驻留在执行所列举的应用的服务器106’上。在其他实施例中,执行所列举的应用的服务器106’首先从第二服务器106’通过应用流会话接收所列举的应用。在这些实施例的一个中,服务器106’包括流服务代理,该流服务代理可以开始与第二服务器106’的连接,并从第二服务器106’接收所传输的数据流。在这些实施例的又一个中,可使用负载平衡技术识别第二服务器106’。在这些实施例的又一个中,可基于与服务器106’的邻近度来识别第二服务器106’。
在一些实施例中,服务器106从用于执行所列举的应用的预定数量的方法中选择方法,该方法用于将所列举的应用流式传输到服务器106、在服务器106上执行所列举的应用,以及向客户机102提供由执行所列举的应用而产生的应用输出数据。在这些实施例的一个中,服务器106响应于对客户机102的评价来选择方法。在这些实施例的又一个中,响应于将策略应用到对客户机102的评价来做出确定。在这些实施例的又一个中,响应于对所接收的证书的评价来做出确定。在一个实施例中,服务器106接收包括所列举的应用的多个应用文件。在又一个实施例中,服务器106通过表示层协议提供应用输出数据,所述表示层协议例如ICA表示层协议或远程桌面窗口表示层协议或者X-Window表示层协议。
在一些实施例中,服务器106也提供与所列举的应用相关联的访问信息,该访问信息是响应于所选择的方法而生成的。在这些实施例的一个中,访问信息向客户机102提供用于执行所列举的应用程序的所选择的方法的指示。在这些实施例的又一个中,访问信息包括所列举的应用的位置的标识,该标识服从通用命名约定(UNC)。在这些实施例的又一个中,访问信息包括会话管理服务器的标识。
在一些实施例中,访问信息包括启动标签,该启动标签包括认证信息。在这些实施例的一个中,客户机102可使用该启动标签来对从服务器106接收的访问信息进行认证。在这些实施例的又一个中,客户机102可使用该启动标签来向寄载所列举的应用的第二服务器106认证该客户机本身。在这些实施例的又一个中,响应于来自于客户机102的对启动标签的请求,服务器106将启动标签包含在访问信息中。
现参考图5,框图描述了此处所述的系统的实施例,在其中客户机102请求执行应用程序而服务器106选择执行应用程序的方法。在一个实施例中,服务器106从客户机102接收证书。在又一个实施例中,服务器106接收来自客户机102的列举可用应用的请求。
在一些实施例中,提供多个、冗余的服务器106,106’,106”,106”’以及106””。在这些实施例的一个中,例如,存在多个文件服务器、多个会话管理服务器、多个开发用机器(staging machine)、多个web接口、或者多个接入套件控制台(access suite console)。在这些实施例的又一个中,如果服务器失效,选择冗余服务器106提供该失效机器的功能。在其他实施例中,虽然服务器106、106’、106”、106”’以及106””、以及web接口558和接入套件控制台520被描述为具有管理服务器、会话管理服务器、开发用机器、文件服务器、web服务器、以及接入套件控制台的单独功能的单独服务器106,但是可提供具有所有这些机器功能的单个服务器106。在其他实施例中,服务器106可提供一个或多个其他服务器的功能和服务。
现更详细参考图5,该框图描述了提供对应用程序的访问的服务器106的一个实施例。除了上述结合图1D描述的接口和子系统之外,服务器106还包括管理通信服务514、XML服务516以及管理服务504。管理服务504包括应用管理子系统506、服务器管理子系统508、会话管理子系统510以及许可管理子系统512。服务器106可与接入套件控制台520通信。
在一个实施例中,管理服务504进一步包括专用远程过程调用子系统、元帧(Metaframe)远程过程调用(MFRPC)子系统522。在一些实施例中,MFRPC子系统522在诸如XML服务516以及管理服务504的服务器106上的子系统间路由通信。在其他实施例中,MFRPC子系统522提供用于调用管理功能的远程过程调用(RPC)接口、向管理服务504传送RPC调用,并且向作出该调用的子系统返回结果。
在一些实施例中,服务器106与协议引擎通信,例如上文图4B中描述的协议引擎406。在这些实施例的一个中,服务器106与驻留在服务器106’上的协议引擎406通信。在其他实施例中,服务器106进一步包括协议引擎406。
服务器106可与接入套件控制台520通信。接入套件控制台520可寄载管理工具到服务器106或群38的管理员。在一些实施例中,服务器106使用XML与接入套件控制台520通信。在其他实施例中,服务器106使用简单对象访问协议(SOAP)与接入套件控制台520通信。
对于例如图1D和图5中描述的实施例,其中服务器106包括子系统的子集,管理服务504可包括多个子系统。在一个实施例中,每个子系统或者为单线程或者为多线程子系统。线程是运行在多任务环境中的独立的执行流。单线程子系统在一个时间只可以执行一个线程。多线程子系统可以支持多个并发执行的线程,例如,多线程子系统可同时执行多个任务。
应用管理子系统506管理与能够被流式传输的多个应用相关联的信息。在一个实施例中,应用管理子系统506处理来自于其他组件的请求,例如用于存储、删除、更新、列举、或解析应用的请求。在又一个实施例中,应用管理子系统506处理由与能被流式传输的应用相关的组件发出的请求。这些事件可分为三种类型的事件:应用发布、应用列举以及应用启动,将在下文进一步详细地描述每一个事件。在其他实施例中,应用管理子系统506进一步包括对于应用解析、应用公布(publication)以及应用发布(publishing)的支持。在其他实施例中,应用管理子系统506使用数据存储器来存储应用属性和策略。
服务器管理子系统508处理服务器群配置中的专用于应用流的配置。在一些实施例中,服务器管理子系统508也处理需要检索与群38的配置相关联的信息的事件。在其他实施例中,服务器管理子系统508处理由与服务器相关的其他组件发送的事件,所述组件提供通过应用流对应用的访问和这些服务器属性。在一个实施例中,服务器管理子系统508存储服务器属性和群属性。
在一些实施例中,服务器106还包括一个或多个公共应用子系统524,该子系统为一个或多个专用应用子系统提供服务。这些服务器106也可具有一个或多个公共服务器子系统,该子系统为一个或多个专用服务器子系统提供服务。在其他实施例中,不提供公共应用子系统524,每个专用应用和服务器子系统实现所有所需的功能。
在服务器106包括公共应用子系统524的一个实施例中,公共应用子系统524管理所发布的应用的公共属性。在一些实施例中,公共应用子系统524处理要求检索与发布的应用或公共属性相关联的信息的事件。在其他实施例中,公共应用子系统524处理所有由与公共应用及其属性相关的其他组件发送的事件。
公共应用子系统524可向群38“发布”应用,这使每个应用可用于由客户机102进行列举和启动。通常,应用被安装在每个期望该应用的可用性的服务器106上。在一个实施例中,为了发布应用,管理员运行指定信息的管理工具,这些信息诸如寄载该应用的服务器106、在每个服务器上的可执行文件的名称、用于执行该应用的客户机的所需的能力(例如,音频、视频、加密等)、以及能够使用该应用的用户列表。该指定的信息被分类为应用专用信息以及公共信息。应用专用信息的示例为:用于访问应用的路径名和用于运行应用的可执行文件的名称。公共信息(即,公共应用数据)包括,例如,应用的用户友好名称(例如“Microsoft WORD 2000”),应用的唯一标识以及应用的用户。
应用专用信息和公共信息可被发送到专用应用子系统,该子系统控制在寄载该应用的每个服务器106上的应用。专用应用子系统可将应用专用信息和公共信息写入到持久存储器240中。
当其被提供时,公共应用子系统524也提供用于管理群38中的发布的应用的功能。通过公共应用子系统524,管理员可使用例如接入套件控制台520的管理工具配置应用组并且产生这些应用组的应用树层次结构来管理群38的应用。每个应用组可以被表示为应用树层次结构中的文件夹。在应用树层次结构中的每个应用文件夹可包括一个或多个其他应用文件夹和服务器的具体实例。公共应用子系统524提供创建、移动、重命名、删除、以及列举应用文件夹的功能。
在一个实施例中,公共应用子系统524在处理应用列举和应用解决请求中支持应用管理子系统506。在一些实施例中,响应于数据文件类型和用于处理该类型的数据文件的应用之间的映射,公共应用子系统524提供识别用于执行的应用的功能。在其它实施例中,第二应用子系统提供用于文件类型关联的功能。
在一些实施例中,服务器106还可以包括策略子系统。策略子系统包括用于在客户机102请求执行应用时确定应用是否可被流式传输到客户机102的策略规则。在一些实施例中,策略子系统识别与在接入套件控制台520中发布的流式应用相关联的服务器访问选项。在这些实施例的一个中,策略子系统服务器使用服务器访问选项作为策略以代替策略规则。
会话监控子系统510保持并更新与客户机102相关联的应用流会话的会话状态,并实施应用流会话的许可要求。在一个实施例中,会话管理子系统510监控会话和记录事件,例如应用的启动或者应用流会话的终止。在又一个实施例中,会话监控子系统510接收从客户机102传输到服务器106的通信,例如心跳消息。在又一个实施例中,会话管理子系统510响应来自诸如接入套件控制台520内的工具的管理工具的关于会话的查询。在一些实施例中,管理服务504还包括许可管理子系统,该子系统与会话管理子系统通信以便给客户机提供和维护对执行应用的许可。
在一个实施例中,管理服务504提供用于应用列举和应用解决的功能。在一些实施例中,管理服务504也提供用于应用启动、会话监控和跟踪、应用发布以及许可实施的功能。
现参考图6,框图描述了包括提供应用列举的管理服务的服务器106的一个实施例。管理服务504通过使用与XML服务516交互的web接口可以提供应用列举。在一个实施例中,XML服务516列举用于客户机102的用户的应用。在又一实施例中,XML服务516实现上文所述的ICA浏览器子系统以及程序邻近子系统的功能。XML服务516可以与管理通信服务514交互。在一个实施例中,XML服务516使用管理通信服务514产生应用列举请求。应用列举请求可以包括客户机类型,该客户机类型指示当执行所列举的应用时所使用的执行方法。应用列举请求被发送到公共应用子系统524。在一个实施例中,公共应用子系统524返回与应用列举请求的客户机类型相关联的应用的列举。在又一个实施例中,公共应用子系统524返回对客户机102的用户可用的应用列举,该列举是响应于将策略应用到与客户机102相关联的证书而被选择的。在该实施例中,如上述结合图4B所描述的,策略引擎406可将该策略应用于由收集代理404收集的证书。在又一个实施例中,返回该应用的列举,并且直到请求执行所列举的应用时才将策略应用于客户机102。
管理服务504可提供用于识别寄载应用的第二服务器106’的应用解决服务。在一个实施例中,第二服务器106’为文件服务器或应用服务器。在一些实施例中,管理服务504查询包括寄载应用的多个服务器106的标识符的文件。在一个实施例中,管理服务504响应来自客户机102的执行应用的请求来提供应用解决服务。在又一个实施例中,管理服务504识别第二服务器106’,该第二服务器106’能实现与第一服务器106的不同的执行应用的方法。在一些实施例中,管理服务504识别能向客户机102流式传输应用程序的第一服务器106’以及能执行应用程序并响应于应用程序的执行将所产生的应用输出数据提供给客户机102的第二服务器106’。
在一个实施例中,web接口向XML服务516传输应用解决请求。在又一个实施例中,XML服务516接收应用解决请求并将该请求传输到MFRPC子系统522。
在一个实施例中,MFRPC子系统522识别在所接收的应用解决请求中包含的客户机类型。在又一个实施例中,MFRPC子系统将策略应用于该客户机类型并确定将该应用“流式传输”到客户机102。在该实施例中,MFRPC子系统522可向应用管理子系统506转发该应用解决请求。在一个实施例中,一旦接收到来自于MFRPC子系统522的应用解决请求,应用管理子系统506可为客户机102识别作为会话管理服务器562运行的服务器106””。在一些实施例中,客户机向会话管理服务器562传输心跳消息。在又一个实施例中,应用管理子系统506可识别寄载包括将要被流式传输到客户机102的应用的多个应用文件的服务器106’。
在一些实施例中,应用管理子系统506使用文件来列举寄载多个应用文件的多个服务器以识别服务器106’。在其它实施例中,应用管理子系统506识别其IP地址与客户机102的IP地址相似的服务器106’。在其它实施例中,应用管理子系统506识别其IP地址在对客户机102可访问的IP地址范围内的服务器106’。
在又一个实施例中,MFRPC子系统522将策略应用于客户机类型并确定可在服务器106’上执行应用,服务器106’向客户机102传输由应用的执行而产生的应用输出数据。在该实施例中,MFRPC子系统522可向公共应用子系统524转发该应用解决请求,以检索服务器106’的主机地址的标识符。在一个实施例中,所识别的服务器106’可使用例如ICA或RDP或X Windows的表示层协议向客户机传输应用输出数据。在一些实施例中,服务器106’通过应用流会话从第二服务器106’接收应用。
在一个实施例中,一旦完成应用列举和应用解决,将包括所列举的应用的执行方法的标识和寄载所列举的应用的服务器106’的标识符的访问信息传输到客户机102。在一个实施例中,其中管理服务504确定所列举的应用将会在客户机102上执行,web接口创建包括关于所列举的应用的名称解析信息的文件并将其传输到客户机102。在一些实施例中,该文件可使用扩展名“.rad”来进行标识。客户机102可响应于所接收的文件的内容来执行所列举的应用。表2描述在文件中包含的信息的一个实施例:
表2
如表2所示,文件也可包含客户机在执行应用中使用的启动标签。在一些实施例中,启动标签在预定时间段之后过期。在一个实施例中,客户机向寄载将要被执行的所列举的应用的服务器提供启动标签。使用启动标签来对客户机的用户访问所列举的应用进行授权,这有助于禁止用户重新使用文件或者产生文件的未授权版本以对应用进行不适当的访问。在一个实施例中,启动标签包括大的随机生成数。
如上文结合图2所述的,当接收到与客户机102或客户机102的用户相关联的证书时,开始用于选择应用程序的执行方法的方法(步骤202),并且响应于所接收的证书,提供对客户机102可用的多个应用程序的列举(步骤204)。接收执行所列举的应用的请求(步骤206),并且响应于策略来选择用于执行所列举的应用的预定数量的方法中的一个,所述预定数量的方法包括所列举的应用的应用流式传输的方法(步骤208)。
现参考图7,流程图描述了访问包括应用程序的多个文件所采用的步骤的一个实施例。客户机执行客户机的启动前分析(步骤210)。在一个实施例中,在检索和执行包括应用程序的多个应用文件之前,客户机102执行启动前分析。在又一个实施例中,客户机102响应于所接收的、启动前分析是用于授权访问包括应用程序的多个应用文件的必要条件的指示来执行启动前分析。
在一些实施例中,客户机102从服务器106接收与多个应用文件相关联的访问信息。在这些实施例的一个中,访问信息包括寄载多个应用文件的服务器106’的位置的标识。在这些实施例的又一个中,客户机102接收包括一个或多个版本的应用程序的多个应用的标识。在这些实施例的又一个中,客户机102接收包括一个或多个应用程序的多个应用文件的标识。在其它实施例中,客户机102接收对客户机102可用的、用于检索和执行的应用程序的列举。在这些实施例的一个中,该列举产生于对客户机102的评价。在其他实施例中,客户机102响应于包括应用程序的多个应用文件的所检索的标识来检索至少一个特征。
在一些实施例中,访问信息包括能授权客户机访问多个应用文件的启动标签。在这些实施例的一个中,响应于对客户机102的评价,向客户机102提供启动标签。在这些实施例的又一个中,在客户机102进行客户机102的启动前分析之后向客户机102提供启动标签。
在其他实施例中,客户机102检索执行多个应用文件所必需的至少一个特征。在这些实施例的一个中,访问信息包括至少一个特征。在这些实施例的又一个中,访问信息指示用于由客户机102检索的文件的位置,该文件列出至少一个特征。在这些实施例的又一个中,列举至少一个特征的该文件还包括多个应用文件的列举和寄载该多个应用文件的服务器106的标识。
客户机102确定客户机上的至少一个特征的存在。在一个实施例中,客户机102将该确定作为启动前分析的一部分。在又一个实施例中,客户机102确定客户机102是否有至少一个特征。
在一个实施例中,确定客户机102上至少一个特征的存在包括确定装置驱动器是否被安装在客户机上。在又一个实施例中,确定客户机102上至少一个特征的存在包括确定操作系统是否安装在客户机102上。在又一个实施例中,确定客户机102上至少一个特征的存在包括确定特定的操作系统是否安装在客户机102上。也在又一个实施例中,确定客户机102上至少一个特征的存在包括确定特定修订版的操作系统是否安装在客户机102上。
在一些实施例中,确定客户机102上至少一个特征的存在包括确定客户机102是否已经获得授权以执行所列举的应用。在这些实施例的一个中,客户机102作出关于客户机102是否已接收到执行所列举的应用的许可的确定。在这些实施例的又一个中,客户机102作出关于客户机102是否已接收到通过应用流会话接收包括所列举应用的多个应用文件的许可的确定。在其它实施例中,确定客户机102上至少一个特征的存在包括确定客户机102是否有足够的可用带宽来检索和执行所列举的应用。
在一些实施例中,确定客户机102上至少一个特征的存在包括客户机102上脚本的执行。在其他实施例中,确定客户机102上至少一个特征的存在包括客户机102上软件的安装。在其他实施例中,确定客户机102上至少一个特征的存在包括客户机102上注册表的修改。在其他实施例中,确定客户机102上至少一个特征的存在包括向客户机102传输收集代理404,所述收集代理404用于在客户机102上执行以收集与客户机102相关联的证书。
客户机102从服务器106请求对执行多个应用文件的授权,该请求包括启动标签(步骤212)。在一些实施例中,客户机102响应于至少一个特征存在于客户机102上的确定而作出请求。在这些实施例的一个中,客户机102确定在客户机102上存在多个特征,该多个特征是与所列举的应用相关联,并且是响应于执行所列举的应用的请求被接收的。在这些实施例的又一个中,客户机102是否接收对执行所列举的应用文件的授权的指示,依赖于客户机102上至少一个特征的存在。在一个实施例中,客户机102接收应用程序的列举,请求执行所列举的应用,并且接收访问信息,该访问信息包括至少一个特征和启动标签,该启动标签在确定客户机102上至少一个特征的存在时授权所列举的应用的执行。
在一个实施例中,客户机102从服务器106接收授权执行多个应用文件的许可。在一些实施例中,该许可授权执行特定的时间段。在这些实施例的一个中,许可要求传输心跳消息以维持对执行多个应用文件的授权。
在又一个实施例中,客户机102从服务器106接收许可和与监控多个应用文件的执行的服务器106相关联的标识符。如上文图5中描述的,在一些实施例中,服务器为会话管理服务器562。在这些实施例的一个中,会话管理服务器562包括监控与客户机102相关联的会话的会话管理子系统510。在其它实施例中,单独的服务器106””是会话管理服务器562。
客户机102接收并执行多个应用文件(步骤214)。在一个实施例中,客户机102通过应用流会话接收多个应用文件。在又一个实施例中,客户机102在客户机102上的隔离环境中存储多个应用文件。在又一个实施例中,客户机102在接收到多个应用文件的第二个文件之前,执行多个应用文件中的一个。在一些实施例中,服务器向多个客户机传输多个应用文件,多个客户机中的每一个已经与服务器建立了单独的应用流会话。
在一些实施例中,客户机102在高速缓存中存储多个应用文件,并延迟应用文件的执行。在这些实施例的一个中,客户机102接收对在预定义的时间段内执行应用文件的授权。在这些实施例的又一个中,当客户机102缺少对网络的访问时,客户机102接收对在预定义的时间段内执行应用文件的授权。在其他实施例中,客户机在高速缓存中存储多个应用文件。在这些实施例的一个中,应用流客户端552建立内部应用流会话以从高速缓存检索多个应用文件。在这些实施例的又一个中,当客户机102缺少对网络的访问时,客户机102接收授权以在预定的时间段内执行应用文件。
客户机102向服务器传输至少一个心跳消息(步骤216)。在一些实施例中,客户机102传输至少一个心跳消息以保留对执行包括所列举的应用的多个应用文件的授权。在其他实施例中,客户机102传输至少一个心跳消息以保留对在多个应用文件中检索应用文件的授权。在其他实施例中,客户机102接收授权在预先确定的时间段内执行多个应用文件的许可。
在一些实施例中,客户机102向第二服务器106””传输心跳消息。在这些实施例的一个中,第二服务器106””可包括会话管理服务器562,该会话管理服务器562监控多个应用文件的检索和执行。在这些实施例的又一个中,第二服务器106””响应于所传输的心跳消息,可以更新用于授权执行多个应用文件的许可。在这些实施例的又一个中,第二服务器106””响应于所传输的心跳消息,可以向客户机102传输命令。
回看图5,客户机102可包括应用流客户端552、流服务554以及隔离环境556。
应用流客户端552可以是可执行程序。在一些实施例中,应用流客户端552可以启动另一个可执行程序。在其他实施例中,应用流客户端552可启动流服务554。在这些实施例的一个中,应用流客户端552可向流服务554提供与执行应用程序相关联的参数。在这些实施例的又一个中,应用流客户端552可使用远程过程调用来启动流服务554。
在一个实施例中,客户机102请求应用程序的执行并从服务器106接收关于执行的访问信息。在又一个实施例中,应用流客户端552接收该访问信息。在又一个实施例中,应用流客户端552向流服务554提供该访问信息。在又一个实施例中,访问信息包括与包含应用程序的多个应用文件相关联的文件的位置的标识。
在一个实施例中,流服务554检索与多个应用文件相关联的文件。在一些实施例中,所检索的文件包括多个应用文件的位置的标识。在这些实施例的一个中,流服务554检索多个应用文件。在这些实施例的又一个中,流服务554在客户机102上执行所检索的多个应用文件。在其他实施例中,流服务554向服务器传输心跳消息以维持授权来检索和执行多个应用文件。
在一些实施例中,所检索的文件包括多于一个的多个应用文件的位置的标识,多个应用文件的每个包括不同的应用程序。在这些实施例的一个中,流服务554检索包括与客户机102兼容的应用程序的多个应用文件。在这些实施例的又一个中,响应于客户机102的评价,流服务554接收授权以检索特定的多个应用文件。
在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其他档案文件中。在一个实施例中,在档案文件中存储的多个应用文件包括应用程序。在又一个实施例中,在档案文件中存储的不同的多个应用文件各自包括不同版本的应用程序。在又一个实施例中,在档案文件中存储的不同的多个应用文件各自包括不同的应用程序。在一些实施例中,档案文件包含与该多个应用文件中的每个文件相关联的元数据。在这些实施例的一个中,流服务554响应于所包含的元数据产生目录结构。如下面结合附图12的更详细描述,可使用元数据来满足应用程序对目录列举的请求。
在一个实施例中,流服务554解压缩档案文件以获得该多个应用文件。在又一个实施例中,在从该多个应用文件检索文件之前,流服务554确定该多个应用文件中的文件的本地副本是否存在于客户机102的高速缓存中。在又一个实施例中,文件系统过滤器驱动器564确定本地副本是否存在于高速缓存中。在一些实施例中,在该多个应用文件中检索文件之前,流服务554修改注册表项。
在一些实施例中,流服务554在客户机102上的高速缓存中存储多个应用文件。在这些实施例的一个中,一旦接收缓存该多个应用文件的请求,流服务554可提供用于缓存多个应用文件的功能。在这些实施例的又一个中,流服务554可提供保护客户机102上的高速缓存的功能。在这些实施例的又一个中,流服务554可使用算法调整高速缓存的尺寸和位置。
在一些实施例中,流服务554在客户机102上创建隔离环境556。在这些实施例的一个中,流服务554使用隔离环境应用编程接口来创建隔离环境556。在这些实施例的又一个中,流服务554在该隔离环境556中存储该多个应用文件。在这些实施例的又一个中,流服务554执行在隔离环境中的该多个应用文件中的文件。在这些实施例的又一个中,流服务554在隔离环境中执行应用程序。
对于收到在客户机102上执行应用的授权的实施例,该应用的执行可发生在隔离环境556中。在一些实施例中,在执行应用前,将包括该应用的多个应用文件存储在客户机102上。在其他实施例中,在执行该应用之前,将该多个应用文件的子集存储在客户机102上。在其他实施例中,该多个应用文件没有驻留在隔离环境556中。在其他实施例中,该多个应用文件的子集没有驻留在客户机102上。无论该多个应用文件的子集或者该多个应用文件中的每个应用文件是否驻留在客户机102上或隔离环境556中,在一些实施例中该多个应用文件中的应用文件可在隔离环境556中被执行。
隔离环境556可由核心系统组成,该核心系统能够提供File SystemVirtualization(文件系统虚拟化)、Registry System Virtualization(注册系统虚拟化)、以及Named Object Virtualization(命名对象虚拟化),以便不需要请求对应用源代码作任何改变而减少应用兼容性问题。隔离环境556可使用在用于注册表和命名对象虚拟化的用户模式中以及在使用用于文件系统虚拟化的文件系统过滤器驱动器的内核中的钩子(hooking)来重定向应用资源请求。下述是对隔离环境556的一些实施例的描述。
现在看图8A,示出了在操作系统8100控制下运行的计算机的一个实施例,该操作系统8100已经减少了应用兼容性和应用群集性问题。操作系统8100通过它的系统层8108使得各种本地资源对应用程序8112、8114可用。系统层8108所体现的资源的视图可称为“系统范围(scope)”。为了避免应用程序8112、8114对本地资源8102、8104、8106、8107访问的冲突,提供隔离环境8200。如图8A所示,隔离环境8200包括应用隔离层8200以及用户隔离层8240。概念上的,隔离环境8200通过应用隔离层8220给应用程序8112、8114提供本地资源的唯一视图,例如文件系统8102、注册表8104、对象8106、以及窗口名称8107。每个隔离层修改提供给应用的本地资源的视图。通过层提供的本地资源的经修改的视图被称为该层的“隔离范围”。如图8A所示,应用隔离层包括两个应用隔离范围8222、8224。范围8222表示提供给应用8112的本地资源的视图,而范围8224表示提供给应用8114的本地资源的视图。因此,在图8A所示的实施例中,给APP1 8112提供专用的文件系统8102’的视图,而给APP2 8114提供其专用的另一个文件系统8102”的视图。在一些实施例中,应用隔离层8220给在操作系统8100上层执行的每个单独的应用程序提供本地资源8102、8104、8106、8107的专用视图。在其他实施例中,应用程序8112、8114可被分为多个集合,并且在这些实施例中,应用隔离层8220为每个应用程序集合提供本地资源的专用视图。将冲突的应用程序放入分开的组中以增强应用的兼容性和群集性。在进一步的实施例中,通过管理员配置属于集合的应用。在一些实施例中,“穿过(passthrough)”隔离范围可被定义恰恰对应于系统范围。换句话说,在穿过隔离范围内执行的应用直接在系统范围内操作。
在一些实施例中,应用隔离范围进一步被分为分层的子范围。主子范围包括基本应用隔离范围,并且附加子范围包括对应用的多个执行实例可能是可见的该范围的各种修改。例如,子范围可包括对实现对应用的补丁级别的改变或者附加部件的安装或者删除的范围的修改。在一些实施例中,对执行应用的实例可见的附加子范围的子集是可配置的。在一些实施例中,无论应用正在代表哪个用户执行,对执行应用的所有实例而言可见子范围的集合是相同的。在其他实施例中,对于执行应用的不同用户,可见子范围的集合可以不同。在其他实施例中,可定义子范围的各种集合,并且用户有机会选择使用哪个集合。在一些实施例中,当不再需要子范围时可将其丢弃。在一些实施例中,可以将在子范围的集合中包含的修改合并在一起以形成单个子范围。
现参考图8B,描述了具有减少的应用兼容性和应用群集性问题的多用户计算机。该多用户计算机包括在系统层8108中的本地资源8102、8104、8106、8107、以及上文刚刚讨论的隔离环境8200。该应用隔离层8220如上所讨论的运行,给应用或应用组提供本地资源的经修改的视图。用户隔离层8240,概念上,给应用程序8112、8114提供本地资源的视图,该视图进一步基于用户的用户标识进行改变,应用代表该用户而被执行。如图8B所示,用户隔离层8240可以被视为包括许多的用户隔离范围8242’、8242”、8242’”、8242””、8242’””、8242”””(统称8242)。用户隔离范围8242提供本地资源的应用专用视图的用户专用视图。例如,给代表用户“a”的用户会话8110中执行的APP1 8112提供文件系统视图8102’(a),通过用户隔离范围8242’和应用隔离范围8222来对该文件系统视图8102’(a)进行改变或修改。
换一种方式说,用户隔离层8240通过对由用户隔离范围8242’提供的用户特定视图修改进行“分层”来改变用于每个单独用户的本地资源的视图,该用户特定视图修改在由应用隔离范围8222提供的应用特定视图修改“之上”,该应用特定视图修改进而是在由系统层提供的本地资源的整个系统视图“之上分层的”。例如,当APP1 8112的第一实例访问注册数据库8104中的条目时,查阅对于第一用户会话和应用8104’(a)专用的注册数据库的视图。如果在注册表8104’(a)的用户专用视图内发现了所请求的注册键(registry key),则将该注册键返回到APP1 8112。如果没有,则查阅对于该应用8104’专用的注册数据库的视图。如果在注册8104’表的应用特定视图内找到所请求的注册键,则将该注册键返回到APP1 8112。如果没有,则将在系统层8108中的注册数据库8104中存储的该注册键(即,本地注册键)返回给APP1 8112。
在一些实施例中,用户隔离层8240为每个单独的用户提供隔离范围。在其他实施例中,用户隔离层8240为用户组提供隔离范围,可通过在组织内的角色定义用户组,或者由管理员预先确定用户组。在其他实施例中,不提供用户隔离层8240。在这些实施例中,应用程序所见的本地资源视图是由应用隔离层8220提供的。虽然通过支持多个用户并发执行应用程序的多用户计算机来描述隔离环境8200,但是隔离环境8200也可用于单用户计算机上以解决应用兼容性和群集性的问题,这些问题来源于在同一计算机系统上的不同的用户对应用程序的顺序执行,并且这些问题来源于相同的用户安装和执行不兼容的程序。
在一些实施例中,用户隔离范围进一步被分为子范围。通过用户隔离范围对呈现给在该范围内执行的应用的视图的修改是在该范围内的每个子范围中包含的修改的聚集。每个子范围层叠在彼此之上,并且在聚集的视图中,在更高子范围中的对资源的修改覆盖在较低层中的对同一资源的修改。
在这些实施例的一些中,这些子范围的一个或多个可包含对用户特定的视图的修改。在这些实施例的一些中,一个或多个子范围可包括对用户集特定的视图的修改,其可以由系统管理员定义的或者被限定为操作系统中的用户组。在这些实施例的一些中,这些子范围的其中一个可包含对特定登录会话特定的视图的修改,以及因此当会话结束时将其丢弃。在这些实施例的一些中,与用户隔离范围相关联的应用实例对本地资源的改变总是影响这些子范围之一,并且在其他实施例中,依赖于特定资源的改变,这些改变可影响不同的子范围。
上文所讨论的概念上结构允许给代表用户执行的应用提供本地资源的聚集的、或统一的、虚拟化的视图,对应用和用户的组合是特定的。该聚集的视图可被称为“虚拟范围”。给代表用户执行的应用实例提供本地资源的单一视图,该视图反映本地资源的所有操作的虚拟化实例。从概念上来讲,该聚集的视图首先包含在系统范围内的操作系统提供的本地资源的集合,其上覆盖在应用隔离范围内包含的、适用于执行应用的修改,进一步覆盖在用户隔离范围内包含的、适用于代表用户执行的应用的修改。除了操作系统准许对特定的用户或应用拒绝访问以外,在系统范围内的本地资源的特征在于对在系统上所有用户和应用是公共的。对在应用隔离范围内包含的资源视图的修改的特征在于对与该应用隔离范围相关联的应用的所有实例是公共的。对在用户隔离范围内包含的资源视图的修改的特征在于对与代表与用户隔离范围相关联的用户执行的可应用的应用隔离范围相关联的所有应用是公共的。
该概念可延伸到子范围;对在用户子范围内包含的资源范围的修改对与代表与用户隔离子范围相关联的用户或用户组执行的可应用的隔离子范围相关联的所有应用都是公共的。应该理解在整个说明书中,无论何时对“范围”引用,意味着如果子范围存在的话,其也指子范围。
当应用请求列举本地资源(例如文件系统或注册数据库的一部分)时,通过首先列举本地资源的“系统范围的”实例来构建虚拟化的列举,即,若有的话,找到系统层中的实例。接着,若有的话,则列举所请求的资源的“应用范围的”实例,即在该适当的应用隔离范围内找到的实例。将在应用隔离范围内遇到的任何所列举的资源加入到视图内。如果所列举的资源已经存在于该视图内(也就是因为它已经存在于系统范围内),它被应用隔离范围内遇到的资源的实例所替代。类似地,若存在,则列举所请求的资源的“用户范围的”实例,即在适当的用户隔离范围内找到的实例。再一次地,将在用户隔离范围内遇到的任何所列举的资源加入到视图。如果本地资源已经存在于该视图中(由于它已经存在于系统范围中或者在适当的应用隔离范围内),则它被在用户隔离范围内遇到的资源的实例所替代。以此方式,本地资源的任何列举将会恰当地反映所列举的本地资源的虚拟化。从概念上来讲,相同的方法应用于列举包括多个子范围的隔离范围。列举单独的子范围以及在聚集视图中用来自更高子范围的资源代替来自更低子范围的匹配的实例。
在其他实施例中,从用户隔离范围层下至系统层执行列举,而非反过来。在这些实施例中,列举用户隔离范围。接着列举应用隔离范围,并且将出现在应用隔离范围内的没有在用户隔离范围中列举的任何资源实例加入到结构之下的聚集视图。相似的处理过程可被重复用于仅出现在系统范围内的资源。
在其他实施例中,可以同时列举所有的隔离范围并且合并各个列举。
如果应用试图打开本地资源的现有的实例,但不试图修改该资源,则返回到应用的特定的实例是在虚拟范围内发现的那个实例,或者说,是将出现在所请求的资源的父虚拟化列举中的实例。从隔离环境的角度而言,该应用就是在请求打开“虚拟资源”,并且用于满足该请求的本地资源的特定实例就是对应于所请求的资源的“字面上的资源”。
如果代表用户执行的应用试图打开资源并指示它这样做的目的是改变该资源,当在应用隔离范围和系统范围内的资源对代表其他用户执行的应用是公共的时,通常将用于修改的资源的私有副本给该应用实例。典型地,制作资源的用户范围副本,除非用户范围实例已经存在。通过虚拟范围提供的聚集视图的定义意味着向用户隔离范围复制应用范围或系统范围的资源的动作没有改变该聚集视图,该聚集视图由虚拟范围提供给正被讨论的用户和应用,不给其他用户,也不给任何其他应用实例。由代表用户执行的应用实例对所复制的资源的随后修改不会影响不共享相同的用户隔离范围的任何其他应用实例的聚集视图。换句话说,这些修改不改变用于其他用户或者用于与同一应用隔离范围不相关的应用实例的本地资源的聚集视图。
应用可安装于特定的隔离范围内(下文更详细地描述的)。安装在隔离范围内的应用总是与该范围相关联。可替代地,可在特定隔离范围内或者许多的隔离范围内启动应用。事实上,启动应用并且该应用与一个或多个隔离范围相关联。相关联的一个或多个隔离范围给进程提供本地资源的特定视图。应用也可在系统范围内启动,即,它们可以不与隔离范围相关联。这使得在隔离环境中可选择性地执行操作系统应用,例如Internet Explorer,以及第三方应用。
无论应用安装在何处,在隔离范围内启动应用的能力缓解了应用兼容性和群集性问题,而不要求在隔离范围内单独安装应用。在不同隔离范围内的选择性地启动所安装的应用的能力提供使需要帮助者应用的应用(例如Word,Notepad等)以相同规则集合启动这些帮助者应用的能力。
另外,在多个隔离环境中启动应用的能力允许在隔离的应用和公共的应用之间更好的集成。
现参考图8C,总的来说,用于将进程和隔离范围相关联的方法包括以暂停状态启动该进程的步骤(步骤882)。检索与期望的隔离范围相关联的规则(步骤884)并且在存储器元件中存储该进程的标识符和所检索的规则(步骤886),并且继续执行暂停的进程(步骤888)。拦截或钩住随后由该进程作出的访问本地资源的调用(步骤890),以及如果有的话,将与该进程标识符相关联的规则用于虚拟化对所请求资源的访问(步骤892)。
仍参考图8C,更详细地,以暂停状态启动进程(步骤882)。在一些实施例中,使用定制的启动程序完成此项任务。在这些实施例的一些中,启动器被特别地设计为将进程启动到所选择的隔离范围中。在其他实施例中,启动器例如通过命令行选项接受对期望的隔离范围的规范来作为输入。
检索与期望的隔离范围相关联的规则(步骤884)。在一些实施例中,从持久存储元件中检索规则,该持久存储元件例如硬盘驱动器或其他固态存储器元件。规则可作为关系数据库、平面文件数据库、树形结构数据库、二叉树结构或其他持久性数据结构被存储。在其他实施例中,规则可存储于为存储它们特别配置的数据结构中。
将进程的标识符(例如进程id(PID))和所检索的规则存储在存储器元件中(步骤886)。在一些实施例中,提供内核模式驱动器以接收关于新进程创建的操作系统消息。在这些实施例中,PID和所检索的规则可被存储在该驱动器的上下文中。在其他实施例中,提供文件系统过滤器驱动器,或迷你过滤器来拦截本地资源请求。在这些实施例中,PID和所检索的规则可存储在过滤器中。在其他实施例中,通过用户模式钩子来执行所有的拦截,并且根本不存储PID。在进程初始化期间,通过用户模式钩子设备来加载规则,因为规则关联完全在进程中执行,所以不需要其他的组件知道应用到PID的规则。
继续执行暂停的进程(步骤888),并且拦截或钩住随后由该进程作出的访问本地资源的调用(步骤890),并且与该进程标识符相关联的规则,如果有的话,被用于虚拟化对所请求的资源的访问(步骤892)。在一些实施例中,文件系统过滤器驱动器,或者迷你过滤器,或者文件系统驱动器拦截访问本地资源的请求,并确定与所拦截的请求相关联的进程标识符是否已经与规则集合相关联。如果已关联,则将与所存储的进程标识符相关联的规则用于虚拟化访问本地资源的请求。如果没有关联,则访问本地资源的请求可不被修改地进行传递。在其他实施例中,动态链接库被加载到新创建的进程中,并且该库加载隔离规则。在其他实施例中,内核模式技术(钩子、过滤器驱动器、迷你过滤器)以及用户模式技术都被用于拦截对访问本地资源的调用。对于文件系统过滤器驱动器存储规则的实施例,该库可加载来自于文件系统过滤器驱动器的规则。
与隔离范围相关联的进程的“子”进程与它们的“父”进程的隔离范围相关联。在一些实施例中,这是通过内核模式驱动器在创建子进程时通报文件系统过滤器驱动器来实现的。在这些实施例中,文件系统过滤器驱动器确定父进程的进程标识符是否与隔离范围相关联。如果关联,则文件系统过滤器驱动器存储在新创建的子进程的进程标识符和父进程的隔离范围间的关联。在又一个实施例中,可从系统直接调用文件系统过滤器驱动器而不需使用内核模式驱动器。在其他实施例中,在与隔离范围相关联的进程中,创建新进程的操作系统功能被钩住或拦截。当从这样的进程接收创建新进程的请求时,存储在新的子进程和父进程的隔离范围间的关联。
在一些实施例中,可以将范围或子范围与单独的线程相关联而不是与整个进程相关联,这使得在每一线程的基础上进行隔离。在一些实施例中,每线程隔离可以被用于服务或COM+服务器。
在一些实施例中,使用隔离环境向应用流客户端552提供附加的功能。在这些实施例的一个中,在隔离环境中执行应用程序。在这些实施例的又一个中,所检索的多个应用文件驻留在隔离环境中。在这些实施例的又一个中,在隔离环境中对客户机810上的注册表做出改变。
在一个实施例中,应用流客户端552包括隔离环境556。在一些实施例中,应用流客户端552包括拦截对于文件的应用请求的文件系统过滤器驱动器564。在这些实施例的一个中,文件系统过滤器驱动器564拦截打开已有的文件的应用请求并确定该文件没有驻留在隔离环境556内。在这些实施例的又一个中,文件系统过滤器驱动器564响应于确定该文件没有驻留在隔离环境556中来将该请求重定向到流服务554。流服务554可从多个应用文件中提取文件,并将该文件存储在隔离环境556中。文件系统过滤器驱动器564接着可以用该文件的所存储的副本来响应对该文件的请求。在一些实施例中,响应于流服务554没有检索文件或多个应用文件的指示和该文件没有驻留在隔离环境556中的确定,文件系统过滤器驱动器564可以将对该文件的请求重定向到文件服务器540。
在一些实施例中,文件系统过滤器驱动器564使用严格的隔离规则来阻止冲突或不一致数据出现在隔离环境556中。在这些实施例的一个中,在用户隔离环境中拦截对资源的请求的文件系统过滤器驱动器564可以将该请求重定向到应用隔离环境。在这些实施例的又一个中,文件系统过滤器驱动器564不将该请求重定向到系统范围。
在一个实施例中,流服务554使用IOCTL命令与过滤器驱动器通信。在又一个实施例中,使用Microsoft SMB流协议接收到文件服务器540的通信。
在一些实施例中,打包机制530在清单文件(manifest file)中存储已发布文件类型的列表作为可用的应用并且使得此信息对应用发布软件可用。在这些实施例的一个中,打包机制530接收来自监控应用程序安装到开发用机器上的隔离环境中的信息。在这些实施例的又一个中,打包机制530的用户向打包机制530提供此信息。在其他实施例中,在接入套件控制台520中的应用发布软件查阅该清单文件以便向接入套件控制台520的用户呈现可能的文件类型,该文件类型与正在被发布的所请求的应用相关联。用户选择文件类型以关联特定的发布的应用。在应用列举时将该文件类型呈现给客户机102。
客户机102可包括客户机代理560。客户机代理560提供将文件类型与应用程序相关联的功能,和响应于该关联来选择应用程序的执行方法的功能。在一个实施例中,客户机代理560为程序邻近应用。
当选择用于执行的应用程序时,客户机102确定与该应用程序的文件类型相关联的执行方法。在一个实施例中,客户机102确定文件类型与执行方法相关联,该执行方法要求用于检索应用文件和在隔离环境中执行的应用流会话。在该实施例中,客户机102可将该请求重定向到应用流客户端552,而不是启动应用程序的本地版本。在又一个实施例中,客户机代理560作出确定。在又一个实施例中,客户机代理560将该请求重定向到应用流客户端552。
在一个实施例中,应用流客户端552从服务器106请求与应用程序相关联的访问信息。在一些实施例中,应用流客户端552接收包含访问信息的可执行程序。在这些实施例的一个中,应用流客户端552接收可执行程序,该可执行程序能够在客户机102上显示来自服务器上执行应用程序而产生的应用输出数据。在这些实施例的又一个中,应用流客户端552接收可执行程序,该可执行程序能够通过应用流会话检索该应用程序并且在客户机102上的隔离环境中执行该应用程序。在这个实施例中,应用流客户端552可执行所接收的可执行应用程序。在这些实施例的又一个中,服务器106响应于执行如上所述的应用解决来选择可执行程序以便提供给客户机102。
现参考图9,流程图描述了在执行应用的方法中所采用的步骤的一个实施例。如上文在图7中所述,关于步骤214,客户机102接收并执行多个应用文件。总的来说,客户机102接收包括访问信息的文件,所述访问信息用于访问多个应用文件以及用于执行可以接收应用流的第一客户端(步骤902)。响应于该文件,客户机102检索多个应用文件的标识(步骤904)。响应于该文件,客户机102检索在多个应用文件的执行中需要的至少一个特征(步骤906)。客户机102确定客户机102是否包括至少一个特征(步骤908)。响应于确定客户机102缺少该至少一个特征,客户机102执行第二客户端,第二客户端请求在服务器上执行多个应用文件(步骤910)。
参考图9,更详细地,客户机102接收包括访问信息的文件,所述访问信息用于访问多个应用文件以及用于执行能够接收应用流的第一客户端(步骤902)。在一个实施例中,客户机102接收包括包含应用程序的多个应用文件的位置标识的访问信息。在又一个实施例中,客户机102响应于请求应用程序的执行来接收文件。在又一个实施例中,访问信息包括该多个应用文件驻留在服务器106’(例如应用服务器或文件服务器)上的指示。在又一个实施例中,访问信息指示客户机102可通过应用流会话从服务器106检索该多个应用文件。
响应于文件,客户机102检索该多个应用文件的标识(步骤904)。在一个实施例中,响应于包括访问信息的文件,客户机102识别在其上有该多个应用文件驻留的服务器。在又一个实施例中,客户机102从服务器106检索识别该多个应用文件的文件。在一些实施例中,该多个应用文件包括应用程序。在其他实施例中,该多个应用文件包括多个应用程序。在其他实施例中,该多个应用文件包括单个应用程序的多个版本。
现提前参考图10,流程图描述了驻留在例如文件服务器540的服务器106’上的多个应用文件的一个实施例。在图10中,多个应用文件(称为包),包括包含一个或多个应用程序的三个不同版本的应用文件。
在一个实施例中,包括一个或多个应用程序的版本并被存储在包中的应用文件的每个子集被称为目标。目标1,例如,包括字处理应用程序和电子表格程序的版本,该版本与Microsoft Windows 2000操作系统的英语版本相兼容。目标2包括字处理应用程序和电子表格程序的版本,该版本与Microsoft XP操作系统的英语版本相兼容。目标3包括字处理应用程序和电子表格程序的版本,该版本与带服务包3的Microsoft Windows 2000操作系统的日语版本相兼容。
现回到图9,在一些实施例中,从寄载该多个应用文件的服务器106检索的文件包括包的描述和在该多个应用文件中所包含的目标。在其他实施例中,从服务器106检索的文件识别包括由客户机102请求执行的应用程序的该多个应用文件。
响应于该文件,客户机102检索执行该多个应用文件需要的至少一个特征(步骤906)。在一些实施例中,客户机102可以不执行应用程序,除非客户机包括特定特征。在这些实施例的一个中,不同的应用程序要求客户机102包括来自于被其他应用程序需要的特征的不同的特征。在这些实施例的又一个中,客户机102接收执行包括客户机102请求的应用程序的该多个应用文件所需的至少一个特征的标识。
客户机确定客户机102是否包括至少一个特征(步骤908)。在一个实施例中,客户机102评价客户机102上的操作系统以确定客户机102是否包括至少一个特征。在又一个实施例中,客户机102识别客户机102上的操作系统所使用的语言,以确定客户机102是否包括该至少一个特征。在又一个实施例中,客户机102识别客户机102上的操作系统的修订级,以确定客户机102是否包括该至少一个特征。在又一个实施例中,客户机102识别驻留在客户机102上的应用程序的应用版本以确定客户机102是否包括该至少一个特征。在一些实施例中,客户机102确定客户机102是否包括装置驱动器以确定客户机102是否包括该至少一个特征。在其他实施例中,客户机102确定客户机102是否包括操作系统以确定客户机102是否包括该至少一个特征。在其他实施例中,客户机102确定客户机102是否包括执行该多个应用文件的许可以确定客户机102是否包括该至少一个特征。
响应于确定客户机102缺少该至少一个特征,客户机102执行第二客户端,该第二客户端请求在服务器106上执行该多个应用文件(步骤910)。在一个实施例中,当客户机102确定该客户机102缺少该至少一个特征时,客户机102不执行能够接收应用流的第一客户端。在又一个实施例中,当客户机102缺少该至少一个特征时,策略禁止客户机102通过应用流接收该多个应用文件。在一些实施例中,客户机102确定客户机102确实包括该至少一个特征。在这些实施例的一个中,客户机102执行第一客户端,该第一客户端从服务器106接收包括该多个应用文件的应用流以用于在客户机上执行。
在一些实施例中,一旦确定客户机102缺少该至少一个特征,客户机102执行第二客户端,该第二客户端请求在服务器上执行该多个应用文件。这些实施例的一个中,第二客户端向寄载该多个应用文件的服务器106传输该请求。在这些实施例的又一个中,服务器106执行包括应用程序的该多个应用文件,并产生应用输出数据。在这些实施例的又一个中,第二客户端接收通过在服务器上的该多个应用文件的执行所产生的应用输出数据。在一些实施例中,第二客户端通过独立计算结构表示层协议或远程桌面窗口表示层协议或X-Windows表示层协议接收应用输出数据。在这些实施例的又一个中,第二客户端在客户机102上显示应用输出。
在一些实施例中,第二客户端向没有寄载该多个应用文件的服务器106传输请求。在这些实施例的一个中,服务器106可从寄载该多个应用文件的第二服务器106请求该多个应用文件。在这些实施例的又一个中,服务器106可通过应用流会话从第二服务器106接收该多个应用文件。在这些实施例的又一个中,服务器106将所接收的该多个应用文件存储在隔离环境中并在该隔离环境中执行应用程序。在这些实施例的又一个中,服务器向在客户机上的第二客户端传输所产生的应用输出数据。
现回到图5,在一个实施例中,能够接收应用流的第一客户端是应用流客户端552。应用流客户端552接收该文件,响应于该文件,检索多个应用文件的标识和执行该多个应用文件需要的至少一个特征,以及确定客户机102是否包括该至少一个特征。在又一个实施例中,第二客户端是客户机代理560。在一些实施例中,响应于应用流客户端552作出的客户机102缺少该至少一个特征的确定,客户机代理560从应用流客户端552接收该文件。
在一些实施例中,在客户机102上执行的应用566使用Win32FindFirstFile()和FindNextFile()API调用来列举与应用566相关联的文件。在这些实施例的一个中,多个应用文件包括应用566。在这些实施例的又一个中,不是所有的在多个应用文件中的文件都驻留在客户机102上。在这些实施例的又一个中,流服务554检索在存档文件中的多个应用文件但只提取该多个应用文件的子集。在这些实施例的又一个中,即使在所请求的文件没有驻留在客户机102上时,流服务554和文件过滤器驱动器564仍然提供用于满足列举请求的功能。
在一个实施例中,通过拦截列举请求并且好像在该多个应用文件内的所有的文件都驻留在客户机102上那样提供数据来提供该功能。在又一个实施例中,通过由文件系统过滤器驱动器564拦截以IOCTL命令传输的列举请求,例如IRP_MJ_DIRECTORY_CONTROL IOCTL,来提供该功能。当文件系统过滤器驱动器564拦截该调用时,文件系统过滤器驱动器564将该请求重定向到流服务554。在一个实施例中,在将该请求重定向到该流服务554前,文件系统过滤器驱动器564确定所请求的列举驻留在客户机102上的隔离环境中。在又一个实施例中,流服务554使用在该多个应用文件中的文件满足该请求,该文件包括与该多个应用文件相关联的目录结构的列举。在又一个实施例中,流服务554向文件系统过滤器驱动器564提供对该请求的响应以用于满足列举请求。
图12显示了在群38中的服务器106的一个实施例,其中服务器106包括许可管理子系统1510,组子系统1520,持久存储系统服务模块1570,动态存储系统服务模块1580,关系子系统1530,专用服务器子系统1540,以及与事件总线1570通信的公共接入点子系统524。图12中示出的这些子系统目的在于描述许可管理子系统1510的行为。服务器106可以包括其他类型的子系统。
许可管理子系统1510通过事件总线与组子系统1520通信,从而形成和维持许可的逻辑分组(下文,“许可组”)以便于许可池、分配和组。许可组包括下文描述的许可串的集合和/或其他许可组。许可组收集相似部件(featuer)的许可并从而实现许可池化。池化的许可以是可被群38中的任何服务器106使用的许可。每个许可组具有在许可组和其他许可子组(即在许可组内的其他许可组)中的许可的集体能力。在一个实施例中,许可池相关信息被保持在动态存储器240中。在该实施例中,每个许可管理子系统1610本地存储许可总数和分配给群38中的服务器106的许可的数量。一旦授予池化的许可,该授予的许可管理子系统1510在动态存储器240中记入指示该池化的许可“正使用中”的条目。每个其他许可管理子系统1510识别这样的池化的许可不可用于授予。在一个特定实施例中,动态存储器240存储与每个许可组相关联的服务器ID/客户机ID对以识别使用中的池化的许可。
关系子系统1530维持在许可和服务器106间以及在许可组和服务器106间的关联。该关联为每个许可和许可组定义只有相关联的服务器106可获得的许可(即“本地许可”)的数量。本地许可是分配给群38中的一个服务器的并且没有被其他服务器38共享的许可。许可管理子系统1510与关系子系统1530通信以创建、删除、查询和更新这样的关联。公共接入点子系统524提供驻留在服务器106上的软件产品所使用的远程过程调用(RPC)。这些RPC接口使这样的软件产品能通过公共接入子系统524通信来访问许可信息。
仍参考图15,专用服务器子系统1540与许可管理子系统1510通信以获得部件许可,该特征许可用于需要许可的专用服务器子系统1540的每个能力。这发生在专用服务器子系统1540初始化时和任何许可事件后。如果不能获得部件许可,专用服务器子系统1540限制子系统将提供许可的功能。同样的,每当开始与服务器106的客户机会话时,专用服务器子系统1540使用许可管理子系统1510获得客户端连接许可。
许可管理子系统1510与持久存储系统服务模块352通信以便将部件和连接许可作为依照命名规定形成的许可串存储在许可库1550中。许可库1550驻留在持久存储器230中。当这样的许可被存储在许可库1550中时,循环冗余码校验(CRC)禁止许可的篡改。许可管理子系统1510也存储与许可库1550中的许可串相关的信息。例如,该信息可指示哪个许可被分配给群38的哪个服务器106,以及在一些实施例中,每个许可的激活状态。在一个实施例中,连接许可表1560存储这些已经获得了连接许可的客户机的标识符。
在一个实施例中,许可管理子系统1510支持来自子系统的请求使用许可能力的事件,例如对可用的池化许可的请求。事件包含请求许可的子系统的UID和该子系统驻留的服务器106的UID。该事件也包含以许可组ID形式被请求的许可类型(即部件或连接许可)。在持久存储器230中存储的实际的许可组ID是任意的,但符合命名规定,为服务器106提供将来添加新软件产品(即子系统)的便利。
由寻求许可的请求子系统发送的事件包括(1)许可组类型的指示,请求许可的客户机和服务器的标识,以及“强制获得”标志。许可组类型的指示可包括部件许可(例如负载管理)或者连接类型许可(例如软件应用产品)的标识。识别寻求许可的客户机和服务器的字段可包括与服务器和客户机相关联的唯一的标识符。强制获得标志可被用于,例如,在许可改变事件之后重新获得连接许可。许可改变事件指示在持久存储器230中的许可信息已经改变;例如,已经删除、增加或者分配许可。一旦许可改变事件发生,因为服务器不知道许可改变事件的特定原因,所以每个服务器106试图重新获得在许可改变事件之前所持有的所有的连接许可。该标志,如果设置,指示必须获得连接许可,即使这样做使到服务器106的连接数量增加到超过允许连接的预定的最大量。随后不授予新的连接许可,直到使用中的连接许可量下降到低于预定的最大量为止。在此方式中,客户机连接将不会由于许可改变事件而被在会话中间终止。
现参考图13,框图描述了在许可实施中所涉及的组件的一个实施例。服务器106包括服务器管理子系统508和许可管理子系统512。在一些实施例中,该服务器管理子系统508和许可管理子系统512提供上述的许可管理子系统1510的功能。在其他实施例中,应用管理子系统506和会话管理子系统510提供上述的许可管理子系统1510的功能。在其他实施例中,其他子系统提供上述的许可管理子系统1510的功能。
在一个实施例中,服务器管理子系统508可包括用于请求发给和撤销许可的许可组件。在又一个实施例中,许可管理子系统512可将策略应用于从服务器管理子系统508接收的用于许可或撤销许可的请求。在又一个实施例中,许可管理子系统512可向提供许可实施功能的服务器106传输该请求。在一些实施例中,管理服务504可维持与提供许可实施功能的第二服务器106的连接。在其他实施例中,服务器106提供许可实施功能。
在一些实施例中,当客户机102没有向服务器传输预定数量的心跳消息时,许可终止且不再是有效的。在这些实施例的一个中,许可的终止取消由客户机102执行应用程序的授权。
在其他实施例中,在预定时间段到期后,会话暂停。在一个实施例中,在许可到期后,直到会话到期,管理服务504维持会话相关的数据。在一些实施例中,会话相关数据可包括信息例如会话名、会话iD、客户机iD、客户机名、会话开始时间、服务器名(文件服务器的UNC路径)、应用名称(由客户机基于浏览器名称产生的唯一名称)、别名、会话状态(活动的/许可的、活动的/未许可的、重连接的/未许可的)。在又一个实施例中,客户机102停止传输心跳消息并在稍后的时间点重新开始传输心跳消息。在又一个实施例中,如果在会话到期之前客户机102重新开始传输心跳消息,则管理服务504可重新发出许可并使得所维持的会话相关数据对客户机102可用。
现参考图14,流程图描述了在客户机102上的会话持续期间请求并维持来自服务器106的许可所采用的步骤的一个实施例。总的来说,应用流客户端请求许可(步骤1702)。服务器106接收对许可的请求,验证与该请求相关联的标签,并产生许可(步骤1704)。服务器106向客户机102提供该许可和与该许可相关联的信息(步骤1706)。如上文结合图7中的步骤214所描述的,客户机102执行应用。客户机传输指示客户机已经执行了应用的心跳消息(步骤1708)。服务器106接收该心跳消息并验证与心跳消息一起被传输的识别信息(步骤1708)。服务器106创建与所执行的应用和与客户机102相关联的会话(步骤1710)。将创建会话的结果传输到客户机102(步骤1712)。如上文结合图7中的步骤216描述的,在整个应用执行期间,客户机传输心跳消息。客户机接收对所传输的心跳消息的响应(步骤1714)。客户机传输指示该应用终止执行的心跳消息(步骤1716)。服务器106接收该心跳消息并确定是否删除会话相关数据以及是否释放与客户机102和所终止的应用相关联的许可(步骤1718)。将服务器106作出的确定的结果传输到客户机102(步骤1720)。
现参考图14,更详细的,在客户机102上的应用流客户端请求许可(步骤1702)。在一些实施例中,当接收到与应用程序相关联的访问信息时,客户机102请求许可。在这些实施例的一个中,客户机请求来自服务器106的许可,该许可授予客户机102执行应用程序的授权。在一些实施例中,对许可的请求包括从服务器106接收的带有访问信息的启动标签。在其他实施例中,客户机102上的应用流客户端552向web接口558传输该请求,并且web接口558向服务器106传输该请求。在其他实施例中,服务器上的会话管理子系统510接收并处理该对许可的请求。
服务器106接收对许可的请求,验证与该请求相关联的标签,并产生许可(步骤1704)。在一个实施例中,服务器106验证客户机102被授权执行该应用。在又一个实施例中,服务器106确定客户机102是否已经与现有的许可相关联。在又一个实施例中,服务器106确定客户机102与现有的许可相关联并为客户机102提供管理该现有的许可的会话管理服务器562的标识符。在又一个实施例中,服务器106产生新许可、会话标识符、和管理该新许可的会话管理服务器562的标识,并且将其提供给客户机102。
在一些实施例中,服务器106使用许可管理子系统1510来响应在一个实施例中的许可请求。许可管理子系统1510接收许可请求。该请求可能是针对部件许可或者连接许可。该许可管理子系统1510确定该许可已是否经被授予,即,该部件已经被开始或者客户机的连接已经存在。如果该许可已经被授予,该许可管理子系统1510向该许可请求者发送“授予”事件。如果许可没有事先授予,该许可管理子系统1510确定本地许可(即,已经永久分配给服务器106的许可)是否可用。在一些实施例中,该许可管理子系统1510通过检查本地存储器来执行该确定。如果本地许可是可用的,即,服务器106的永久分配的许可比当前授予的许可多,则该许可管理子系统1510向该许可请求者发送“授予”事件。
服务器106向客户机102提供许可和与该许可相关联的信息(步骤1706)。在一个实施例中,当从服务器106接收到许可、会话标识符以及会话管理服务器562的标识后,客户机102执行应用。如结合上述图7中的步骤214所描述的,客户机102可执行应用。客户机传输指示该客户机已经执行应用的心跳消息(步骤1708)。在一个实施例中,客户机将心跳消息传输到向会话管理服务器562传输该心跳消息的服务器106。在又一个实施例中,响应于从服务器106接收的会话管理服务器562的标识符,客户机102直接向会话管理服务器562传输心跳消息。
服务器106接收心跳消息并验证与该心跳消息一起传输的识别信息(步骤1708)。在一个实施例中,服务器106’是会话管理服务器562。在又一个实施例中,会话管理服务器562验证与心跳消息一起由客户机102提供的服务器标识符。在又一个实施例中,服务器标识符是由服务器106向客户机102提供的标识符。
服务器106创建与所执行的应用和与客户机102相关联的会话(步骤1710)。在一个实施例中,会话管理服务器562当接收到该心跳消息后创建与执行的应用相关联的新会话。在又一个实施例中,第三方服务器106创建新会话。在一些实施例中,会话管理服务器562在创建新会话时,存储会话相关信息。
将创建会话的结果传输到客户机102(步骤1712)。在一些实施例中,该结果确认会话的创建。在其他实施例中,该结果识别与会话相关联的一个或多个应用。如上文结合图7中步骤216描述的,客户机在该应用执行的整个期间传输心跳消息。在一个实施例中,客户机102在整个应用程序的执行期间周期性地以固定的间隔向会话管理服务器562连续传输心跳消息。客户机接收对已传输的心跳消息的响应(步骤1714)。在一个实施例中,客户机102接收来自会话管理服务器562的对收到心跳消息的确认。在又一个实施例中,响应于会话管理服务器562收到心跳消息,客户机102从会话管理服务器562接收用于执行的命令。
客户机传输指示终止执行该应用的心跳消息(步骤1716)。服务器106接收该心跳消息并确定是否删除会话相关数据以及是否释放与客户机102和所终止的应用相关联的许可(步骤1718)。将服务器106所作的确定的结果传输到客户机102(步骤1720)。
现参考图15,框图描述了可与管理服务504监控的会话相关联的状态的实施例。在一个实施例中,在管理服务504上的会话维持子系统510监控客户机102的会话并为该会话分配状态。在又一个实施例中,会话维持子系统510维持许可相关数据的列表,该列表包括与客户机相关联的标识符、与会话相关联的标识符、会话状态以及指示服务器106上一次收到来自客户机102的消息的时间戳。在一些实施例中,会话维持子系统510包括会话监控线程。在这些实施例的一个中,会话监控线程在定期的许可超时间隔唤醒,以扫描该许可相关数据的列表和更新会话的会话状态。
会话可处于的第一状态是活动的且被许可的状态。在一个实施例中,当在此状态中时,客户机102已经维持了授权执行应用的有效的许可。在又一个实施例中,会话管理服务器562维持会话相关数据。在一些实施例中,会话管理服务器562在第二服务器上存储会话相关数据。在一个实施例中,当客户机102最初执行应用时,用于客户机的会话处于活动的和被许可的状态。
会话可处于的第二状态是活动的且未许可的状态。在一个实施例中,当客户机102传输心跳消息失败并且对客户机102的许可已经到期时,会话处于此状态。在又一个实施例中,如果会话处于这个状态,尽管该许可已经过期,但对于会话到期尚有一段时间,则将该会话视为活动的。在一些实施例中,当会话处于该状态,服务器106或会话管理服务器562可存储代表客户机102的会话相关数据。在其它实施例中,如果客户机102在会话到期之前传输心跳消息,则将会话相关数据与新的许可一起传输到客户机102,并且该会话返回到活动的且被许可的状态。在一个实施例中,服务器106使用会话标识符和与客户机相关联的标识符来验证会话没有到期,并向客户机提供适当的会话相关数据。
会话可处于的第三状态是断开连接的且不存在的状态。当会话到期,删除会话相关数据。
会话可处于的第四状态是重连接的且未许可的状态。在一个实施例中,当客户机102上的会话到期时,则删除会话相关数据。在又一个实施例中,当客户机102传输新的心跳消息时,为客户机102生成新会话标识符和客户机标识符。在一些实施例中,客户机102重认证到服务器106,接收新许可,并进入活动的且被许可的状态。
表3总结了与会话相关联的状态。
会话状态            描述
活动的\被许可的     操作的正常模式
活动的\未被许可的   缺少心跳的持续时间>许可超时
                    并且
                    缺少心跳的持续时间<会话超时
重连接的\未被许可   缺少心跳的持续时间>会话超时
的                  或者寄载会话的CPS/RADE下线和重新在线
                    (down and back online)
表3
在一些实施例中,打包机制进行与应用程序相关联的多个应用文件的创建。在这些实施例的一个中,打包机制进行对多个应用文件的识别。在这些实施例的又一个中,打包机制能够将单个的应用文件分组到多个应用文件中。在这些实施例的一个中,打包机制能实现在例如文件服务器或应用服务器的服务器上寄载该多个应用文件。
在一个实施例中,打包机制在被描述为“开发用机器”的服务器上执行。在又一个实施例中,打包机制在“干净的机器”上执行。干净的机器可为其上只安装了操作系统的服务器,而没有附加的软件、驱动器、注册表项或其他文件。在又一个实施例中,打包机制在服务器上执行,该服务器类似应用程序可在其上执行的客户机。在一些实施例中,打包机制在其上执行的服务器包括隔离环境,即使服务器本身不是干净的机器,该隔离环境可提供可将应用程序安装在其中的干净的机器环境。
在一个实施例中,该多个应用文件被称为“包”。在又一个实施例中,该包可以是存储多个应用文件的档案文件。在又一个实施例中,包可以是存储该多个应用文件和包括与在该多个应用文件中的至少一个文件相关联的元数据的文件的档案文件。在一些实施例中,包包含多个应用文件,该多个应用文件包括应用程序。在其它实施例中,包包括多个应用文件,该多个应用文件包括一组应用程序。在其他实施例中,包包含包括应用程序的多个应用文件和执行该应用程序需要的先决条件。
在一个实施例中,打包机制在隔离环境中开始执行安装程序。在又一个实施例中,打包机制监控由安装程序所产生的对隔离环境的改变。在又一个实施例中,打包机制监控安装程序在隔离环境中的文件的创建。在又一个实施例中,打包机制监控通过安装程序对在隔离环境中的文件的修改。在一些实施例中,该多个应用文件包括由安装程序创建或修改的文件。在其他实施例中,打包机制实现文件系统过滤器驱动器564以监控该隔离环境。
在一些实施例中,打包机制可产生多种的该多个应用文件(multiplepluralities of application files),各自包括被配置为在不同目标环境中执行的应用程序的不同版本。在这些实施例的一个中,将多个应用文件配置为在有特定的操作系统、修订级、语言配置和主驱动器的客户机上执行(例如,可以将一种多个应用文件配置为在客户机上执行,该客户机有带有修订级SP2及以上的Windows XP Professional操作系统、使用英语并有主驱动器C:\)。在这些实施例的又一个中,多于一种多个应用文件可被组合为单个档案文件。在这些实施例的又一个中,每种多个应用文件可被称为“目标”。在这些实施例的又一个中,包含一种或多种多个应用文件的档案文件可被称为“包”。
现参考图16,流程图描述了在应用隔离环境2512中安装应用所使用的步骤的一个实施例。应用隔离环境2512给应用安装程序提供服务器操作系统的虚拟化视图(步骤2602)。在服务器上涉及系统重启和关闭的API被钩住(步骤2604)以防止应用安装程序2506引起重启。应用安装程序2506请求文件复制操作以锁定文件,该请求被拦截并被重定向到无冲突位置(步骤2606)。当应用安装程序2506试图通过调用系统API重启时,拦截该请求并且阻止重启(步骤2608)。安装后处理器模块2510执行通常在重启后发生的动作(步骤2610)并且可以接着在应用隔离环境2512中执行该应用而不必重启服务器106(步骤2612)。
在一些实施例中,在将应用程序安装到应用隔离环境2512中之后,打包机制识别在应用程序安装期间创建或修改的多个应用文件。在这些实施例的一个中,该多个应用文件被存储在服务器上。在这些实施例的又一个中,获取该多个应用文件的客户机可执行该应用程序。
在一些实施例中,打包机制530在包括隔离环境532和文件系统过滤器驱动器534的服务器上执行,并且将应用程序安装到隔离环境532中。在这些实施例的一个中,服务器被称为“干净的机器”或者“开发用机器”。在这些实施例的又一个中,隔离环境532包括应用隔离范围,该应用隔离范围提供由在干净的机器上的操作系统提供的本地资源的可修改的、虚拟化的实例。在这些实施例的又一个中,隔离环境532包括系统隔离范围,该系统隔离范围提供本地资源的只读视图。在这些实施例的又一个中,本地资源的只读视图包括驻留在干净机器上的文件系统和注册表的快照。
在一个实施例中,重定向器拦截改变本地资源的请求。在一些实施例中,重定向器是文件系统过滤器驱动器534。在又一个实施例中,由打包机制530执行的安装程序做出改变的请求。在又一个实施例中,在干净的机器上安装应用程序要求对本地资源的改变。在又一个实施例中,重定向器将该请求重定向到隔离环境532。
在一些实施例中,将改变本地资源的请求重定向到隔离环境532导致与应用程序的安装相关联的改变的隔离。在其他实施例中,改变本地资源的请求被记录并被存储在存储元件中。在这些实施例的一个中,与应用程序的安装相关联的所有改变驻留在该存储元件中。在这些实施例的又一个中,客户机552检索该存储元件的内容并实施对驻留在客户机552的隔离环境556中的本地资源的改变导致应用程序安装在客户机552上。
在一些实施例中,需要对客户机102的启动前分析。在这些实施例的一个中,客户机102验证在客户机102中包括至少一个特征。在这些实施例的又一个中,在启动前分析确定客户机102缺少该至少一个特征之后,将该至少一个特征加入到客户机102中。在这些实施例的又一个中,该至少一个特征被包括在寄载应用程序的服务器上,并且客户机不包括该至少一个特征将阻止应用程序的执行。在又一个实施例中,应用程序需要客户机上的该至少一个特征的存在以用于执行。
在一些实施例中,打包机制实现对在客户机上启动前分析中使用的至少一个特征的识别。在又一个实施例中,打包机制实现至少一个特征与可用于客户机上执行的应用程序的关联。在其他实施例中,打包机制实现可执行脚本与应用程序间的关联,客户机执行该可执行脚本以完成启动前分析。在又一些实施例中,在应用程序的执行之后,需要该至少一个特征存在于客户机上。
打包机制可提供用于对多个应用文件进行签名的功能。在一个实施例中,对多个应用文件进行签名使客户机能验证多个应用文件的完整性。在又一个实施例中,对多个应用文件进行签名防止客户机执行被破坏的应用程序。在一些实施例中,计算在多个应用文件中的文件的密码校验和,例如MD4哈希,MD5哈希或者SHA-1哈希。
在其他实施例中,计算在多个应用文件中的每个文件的密码校验和。在这些实施例的一个中,将密码校验和存储在第二文件中。在这些实施例的又一个中,第二文件与该多个应用文件关联。在一些实施例中,第二文件被加入到多个应用文件。在其他实施例中,使用诸如X.509证书的证书来对第二文件进行签名。在其他实施例中,获取多个应用文件的客户机使用证书的公开部分来验证签名。在其他实施例中,客户机接收证书的公开部分以及证书信任列表的标识用于签名的验证。在这些实施例的一个中,客户机接收包括证书信任列表的标识的注册表键。
在一个实施例中,打包机制提供用于定制隔离环境的功能。在又一个实施例中,打包机制提供用于生成存储隔离环境的定义的文件的功能。在又一个实施例中,打包机制将该文件包含到包括应用程序的多个应用文件中。在又一个实施例中,客户机从服务器接收该文件及访问信息。
在一些实施例中,将多个应用文件存储在档案文件中。在这些实施例的一个中,档案文件为CAB文件格式。在这些实施例的又一个中,档案文件格式不支持应用程序对短文件名的文件的规范(specification)。在这些实施例的又一个中,诸如WINDOWS 2000的操作系统可能不支持对应用程序对短文件名的文件的规范。在其他实施例中,诸如WINDOW XP的操作系统支持应用程序对短文件名的文件的规范。在这些实施例的一个中,执行文件的请求必须包括正确短文件名的文件。
在一个实施例中,可以生成映射以将在多个应用文件中的长文件名的文件与短文件名的文件相关联。在又一个实施例中,该映射被存储在该多个应用文件中的文件中。在又一个实施例中,仅当文件的长文件名称大于十二个字符时,文件有短文件名。在一些实施例中,短文件名是与该文件相关联的虚拟文件名。在这些实施例的一个中,文件被传输到客户机102用于执行,在客户机102上用长文件名存储该文件。在这些实施例的又一个中,客户机102上的应用文件使用短文件名请求执行该文件。在这些实施例的又一个中,虽然执行文件的请求不使用客户机上的文件的名称(长文件名),但该映射使文件能执行。
在一些实施例中,打包机制530生成该映射。在这些实施例的一个中,打包机制530为有长文件名的文件选择短文件名。在这些实施例的又一个中,在打包机制530在其上执行的服务器106’上的操作系统为有长文件名的文件选择短文件名。在这些实施例的又一个中,选择与服务器106’上的第二短文件名不冲突的唯一的短文件名。在这些实施例的又一个中,由打包机制530执行的安装程序产生包括在长文件名和短文件名之间的映射的文件。在其他实施例中,将该映射发送到检索该文件的客户机102。在这些实施例的一个中,客户机102当执行该文件时引用该文件。
在图17中示出的是能够将应用启动到现有的隔离环境中的系统的实施例。执行第一或第二用户会话的客户机102、102’与寄载第一用户会话2001和第二用户会话2002的服务器106通信,其中第一用户会话2001对应于由第一客户机102寄载的用户会话,第二用户会话2002对应于由第二客户机102’寄载的用户会话。服务器106上的运行时对象表2012跟踪服务器106上的每个运行时对象并且与在第一用户会话2001中执行的第一运行模块2014和在第二用户会话2002中执行的第二运行模块2016进行通信。运行模块2014、2016各自与在服务器106上执行的应用传送服务2010和在服务器106上且在用户会话中的隔离环境内执行的启动模块2018、2020、2022进行通信。隔离环境A 2004和隔离环境B 2006在第一用户会话2001中执行。启动模块A 2018、第一应用2024和第二应用2026在隔离环境A 2004中执行,所述隔离环境A 2004在服务器106上且在第一用户会话2001中执行。启动模块B 2020和第三应用2028在隔离环境B 2006中执行,所述隔离环境B 2006在服务器106上且在第一用户会话2001中执行。启动模块C 2022和第四应用2030在隔离环境C 2008中执行,所述隔离环境C 2008在服务器106上且在第二用户会话2002中执行。每个运行模块可以与应用传送服务2010通信,并且每个启动模块可以与运行模块通信。
进一步参考图17,更具体地,在一个实施例中,该系统包括能够与服务器106通信的客户机102、102’。客户机102、102’可以是此处所描述的任意客户计算机器。此外,在一些实施例中,客户机102、102’使用此处所描述的任何通信方法与服务器106进行通信。在一个实施例中,客户机102、102’可通过通信信道并经由网络104与服务器106通信。在其他实施例中,客户机102、102’可使用诸如Citrix ICA协议的表示层协议与服务器106通信。尽管描述了两个客户机102、102’,但任何数量的客户计算机器可以与服务器106进行通信。在一些实施例中,客户机102、102’的用户通过用户会话与服务器106进行通信。这样的实施例包括寄载通信客户端的客户机102、102’,所述通信客户端能够建立与客户机或在服务器106上执行的模块的用户会话。
在许多实施例中,服务器106可包括此处所描述的任何计算元件。此外,服务器106可是此处所描述的任何服务器106。尽管描述了单个服务器106,但用户会话2001、2002或在该服务器106上执行的任何模块可以执行在群38中的任何数量的服务器106上。
在一个实施例中,服务器106包括存储关于服务器106上的运行时对象的信息的运行时对象表2012。尽管描述了运行时对象表2012,但可替代的实施例可包括运行时对象列表、运行时对象组、运行时对象数据库,或者能够记录关于服务器106上运行对象的信息的任何其他列表或存储方法。在一个实施例中,运行时对象表2021存储关于运行时对象的信息,并且在一个特定实施例中,运行时对象表2021存储关于隔离环境2004、2006、2008或启动模块2018、2020、2022的信息。当应用传送服务2010、运行模块2014、2016或任何其他进程或应用实例化或以其他方式致使启动模块或启动模块的实例在隔离环境中执行时,该启动模块可以注册在运行时对象表2012中。在注册期间,将动态地生成的与启动模块相关联的标识符插入到运行时对象表2012中。该标识符部分地表示该启动模块的位置,并且可以由在服务器106上执行的其他对象、应用或进程用来定位和访问该启动模块。在一些实施例中,运行模块2014、2016在所创建的隔离环境中生成启动模块的实例,并将执行应用的请求发送到该启动模块。在一些实施例中,可以由在服务器106上执行的对象、应用或进程对运行时对象表2012进行搜索。响应于该对象、应用或进程的查询请求,运行时对象表2012可返回:关于在服务器106上执行的对象、进程或应用的信息;关于在服务器106上执行的对象、进程或应用的位置信息;关于在服务器106上执行的对象、进程或应用的配置信息;或与在服务器106上执行的对象、进程或应用相关联的任何其他运行时信息或其他信息。因此,在许多实施例中,服务器106上对象、进程或应用的每一个可以与运行时对象表2012通信,以及可以接收来自该运行时对象表2012的响应和数据。
在许多实施例中,运行时对象表2012可以与在服务器106上执行的应用传送服务2010通信。尽管描述了与用户2001、2002在同一机器上执行的应用传送服务2010,但在一些实施例中,应用传送服务2010可以在位于远离第一服务器106的第二服务器106上执行,并通过网络104或其他通信链路与第一服务器106通信。应用传送服务2010可包括此处所描述的任何应用传送方法和系统。在一些实施例中,应用传送服务2010可被包含在管理服务504内,而在其他实施例中,应用传送服务2010可被包含在应用管理子系统506内。在其他实施例中,应用传送服务2010可在内容服务器106上、在应用服务器106″上、或者在策略引擎406内执行。在一些实施例中,应用传送服务2010可公开隔离环境的远程过程调用接口以便该隔离环境能在该隔离环境的名称已知时返回标识符。可以在创建隔离环境的期间实现远程过程调用接口的公开。在一个实施例中,应用传送服务2010可生成隔离环境并且给它们分配标识符或进程标识符。一旦生成隔离环境,该隔离环境可以作为服务器向该隔离环境在其上执行的计算机器的操作系统进行注册。因此服务器几乎是在生成隔离环境后立即开始在该隔离环境中执行,以使得该服务器能公开通信接口。在一些实施例中,应用传送服务2010可存储在服务器106上执行或活动的隔离环境的列表、表格或其他列举。在一些实施例中,该列举可包括活动的、不活动的或暂停的隔离环境的名称,在其他实施例中,该列举可包括活动的、不活动的或暂停的隔离环境的名称以及与每个环境关联的标识符。在其他实施例中,该列举可包括每个隔离环境的位置,或可包括与每个隔离环境关联的路径。在一些实施例中,应用传送服务2010被称为RADE服务,而在其他实施中,应用传送服务2010可被称为快速应用传送服务。
在一个实施例中,应用传送服务2010与运行模块2014、2016通信使得应用传送服务2010接收对关于应用简档的信息的请求。一旦收到请求,应用传送服务2010可查询表格、列表或数据库以识别与该简档请求关联的隔离环境。在识别该隔离环境后,应用传送服务2010可将包括与该简档关联的隔离环境的列举的响应传输到运行模块2014、2016。在其中将单个隔离环境与所请求的简档关联的实施例中,应用传送服务2010可返回包括与所请求的简档关联的隔离环境的名称的响应。当该请求是在服务器106没有连接到网络或者不能访问网络时做出的时,应用传送服务2010可以实现简档的识别以及通过确定是否先前下载了所请求的简档来代理应用。如果该简档存在,则应用传送服务2010可在服务器106的注册表中记入指示与该简档关联的应用下线或者以其他方式对运行模块或用户不可用的条目。当不存在对于特定简档的隔离环境时,应用传送服务2010可通过创建包括所请求的应用的隔离环境来响应于隔离请求,从而实现该隔离环境的创建。
运行时对象表2012和应用传送服务2010都可以与一个或多个、或多个运行模块2014、2016通信。在一个实施例中,每个运行模块是在用户会话2001、2002中执行的运行模块的实例。运行模块可以被称为RADE运行模块、运行客户端、运行组件、运行对象或运行应用。在大部分实施例中,运行模块2014、2016可以与下列的任何一个通信:启动模块2018、2020、2022;应用2024、2026、2028、2030;应用传送服务2010;或运行时对象表2012。每次用户通过客户计算机器102请求执行应用时,与该用户关联的运行模块启动并拦截该请求。例如,用户输入命令到客户机102,其解释为对应用的请求。该请求被传输到服务器106,在服务器106上由在该用户的用户会话中执行的运行模块来拦截来该请求。一旦运行模块2014、2016拦截应用执行请求,运行模块2014、2016查询应用传送服务2010以确定是否存在对应于与所请求的应用相关联的简档的隔离环境。运行模块2014、2016接着使用应用传送服务2010的响应来确定是指示应用启动到之前已有的隔离环境还是为所请求的应用创建新的隔离环境。
在运行模块2014、2016确定对于特定简档存在已有的隔离环境的实施例中,运行模块2014、2016通过获得该隔离环境的路径或地址来识别该隔离环境并且调用在该隔离环境之内的启动模块。在一些实施例中,该调用可包括启动或执行用户所请求的应用的请求。在其他实施例中,该调用可包括生成已在隔离环境中执行的应用的另外的实例的请求。在其他实施例中,启动或执行应用的请求包括该应用的地址或虚拟路径,使得启动模块可以使用该地址或路径来访问以及启动或执行该应用。在许多实施例中,运行模块2014、2016可以仅访问在其用户会话之内的那些启动模块2018、2020、2022。例如,第一运行模块2014在第一用户会话2001中执行,因此第一运行模块2014只能访问在第一用户会话2001中的启动模块2018、2020。在其他实施例中,运行模块可以访问服务器106上的任何启动模块。
在运行模块2014、2016确定对于特定简档不存在已有的隔离环境的实施例中,运行模块2014、2016以暂停模式启动启动模块并接着发出对应用传送服务2010的调用。该调用可包括通过为启动模块和所请求的应用创建隔离环境来隔离所暂停的启动模块的请求。在一个实施例中,将所产生的隔离环境与简档相关联,进一步与所请求的应用相关联。一旦创建了隔离环境,在一些实施例中运行模块可在启动模块中插入钩子动态链接库并允许该启动模块变成活动的,使得该启动模块或启动模块实例在服务器106上执行。在一些实施例中,钩子动态链接库可钩住对启动模块所做的任何调用或者拦截对启动模块的所作的任何请求和由启动模块发出的任何响应。
在每个隔离环境内,存在启动模块2018、2020、2022或其实例。每个启动模块可与在隔离环境中执行的应用交互并且可以对由在该启动模块在其中执行的同一用户会话中执行的运行模块发出的或生成的请求或调用进行响应。启动模块2018、2020、2022可被称为启动器、启动应用、启动客户端、启动模块实例,或者由描述启动模块2018、2020、2022功能的任何其他标签进行引用。当创建隔离环境时,可以在该隔离环境中创建启动模块或启动模块实例。随着隔离环境的创建,启动模块可以作为运行时对象来在运行时对象表2012中进行注册,并且可以用包括与该启动模块在其中执行的隔离环境相关联的标识符的动态的GUID或标识符来进行注册。在一些实施例中,由启动模块用于在运行时对象表2012中注册的动态的标识符可包括包含隔离环境标识符、与启动模块关联的标识符和与用户会话关联的标识符的唯一组合的标识符。当运行模块或其他对象或进程请求启动模块执行应用或应用实例时,该运行模块或对象可在运行时对象表2012中识别该启动模块实例,并且使用与该启动模块关联的动态标识符来向该启动模块实例传输启动或执行特定应用的请求。在其他实施例中,启动模块包括可接收应用路径、地址或其他应用位置数据的通信接口,并使用该位置数据来执行应用的可执行文件。在一些实施例中,一个隔离环境可以通过向启动模块上的通信接口发出执行请求来在另一个隔离环境中执行应用。在该实施例中的隔离环境可以在同一用户会话中或者可以在第一和第二用户会话中。
除了公开通过其可为应用执行请求服务的通信接口,启动模块2018、2020、2022在一些实施例中可执行启动前或退出后脚本。可以在隔离环境之内或之外执行这些启动前或退出后脚本。在一些实施例中,启动前脚本可以是在启动应用之前在通信机器上执行的任何应用或指令集,而退出后脚本可以是在应用退出后在通信机器上执行的任何应用或指令集。在一个实施例中,启动前脚本可以是用于映射到远程共享,或者安装不能被隔离的软件组件(例如,PDF软打印机)的任何脚本。在一些实施例中,退出后脚本可以被用于清除由启动前脚本执行的任务。
在一些实施例中,一旦启动模块2018、2020、2022检测或确定在隔离环境中执行的进程数量已经降低到一个进程,启动模块2018、2020、2022可执行退出后脚本。在其他实施例中,启动模块2018、2020、2022向隔离环境监控模块注册,所述隔离环境监控模块跟踪在隔离环境中运行的进程数量。当隔离环境监控模块通知启动模块2018、2020、2022只有一个进程运行在该隔离环境中时,启动模块响应地执行退出后脚本,所述退出后脚本与隔离环境、与该隔离环境关联的简档、启动模块或者运行模块相关联。在一些实施例中,启动模块2018、2020、2022可以在检测到进程数量已下降到一个进程之后,在执行退出后脚本之前等待预定的时间段。其他实施例中,启动模块2018、2020、2022在执行退出后脚本之后或者在确定在隔离环境中的进程数量已经降至一个进程之后,在解构、释放或以其他方式使该隔离环境终止之前,等待预定的时间段。如果启动模块2018、2020、2022在执行退出后脚本之后但在销毁该隔离环境之前收到启动应用的请求,则启动模块2018、2020、2022可以执行任何启动前脚本并启动所请求的应用。在该实施例中,该隔离环境保持活动和完整并不会终止或以其他方式解构。
在一个实施例中,启动模块2018、2020、2022可以大体上类似服务器来运行,使得每个启动模块可以公开能够接收应用启动请求的通信接口。因此,在一个示例中,启动模块可以接收由运行模块发出的请求或命令,这里该请求或命令在一些实施例中可以是启动应用的命令。在一些实施例中,通过在服务器106上执行的进程间机制来实现暴露通信接口。在一个实施例中,进程间机制可以是使用远程过程调用或者创建能通过远程过程调用接收和传输信息的通信接口的任何机制。在一些实施例中,进程间机制可以是与在计算机器上执行的操作系统相关联的进程间机制。在一些实施例中,进程间机制可以通过生成启动模块内的通信接口以使得该启动模块能接收来自在服务器106上执行的其他对象的远程过程调用来创建通信接口。在一个实施例中,启动模块共享该启动模块在其中执行的隔离环境的地址,这样对象可以使用该隔离环境的地址与该启动模块通信。例如,如果运行模块希望向启动模块传输启动在特定地址处的应用的命令,则运行模块可以将该应用的地址和启动命令一起传输到该启动模块在其中执行的隔离环境的地址。
在一个实施例中,应用2024、2026、2028、2030可以是此处所述的任何应用或者能够在隔离环境中执行的任何应用。
用户会话2001、2002可以是此处所述的任何用户会话。在一个实施例中,当客户机102、102’的用户建立与服务器106的连接时创建用户会话2001、2002。用户可访问与该用户关联的简档。在一些实施例中,用户会话2001、2002可以描述用户连接服务器106的时间段。在其他实施例中,可以通过在其中客户机102、102’访问用户简档的时间段来限定用户会话2001、2002。在一些实施例中,用户会话2001、2002囊括、包括或包含隔离环境或运行模块。在其他实施例中,用户会话2001、2002可包含隔离环境并且与位于该用户会话之外的运行模块通信。
在一个实施例中,隔离环境2004、2006、2008被包含在用户会话内。在其他实施例中,隔离环境2004、2006、2008可以存在于用户会话之外。隔离环境2004、2006、2008可以是此处所描述的任何隔离环境。在一个实施例中,启动模块2018、2020、2022在隔离环境2004、2006、2008中执行;而在其他实施例中应用在隔离环境2004、2006、2008中执行以使得该应用被隔离。在一些实施例中,隔离环境2004、2006、2008的简化的标签可以包括沙箱(sandbox)。
图18所示的是图17所描述的系统的详细视图。在服务器106上的用户会话2001包括两个隔离环境2004、2006和运行模块2014。隔离环境A可包括第一应用2024和第二应用2026的实例和启动模块实例2018。隔离环境B可包括第三应用2028的实例和启动模块实例2020。在一个实施例中,运行时对象表2012和应用传送服务2010与运行模块2014通信。
进一步参考图18,更具体地,在一个实施例中,用户会话2001可包括此处所述的任何用户会话组件或功能。在又一个实施例中,启动模块2018、2020可以是此处所述的任何启动模块并且可以包括此处所描述的任何启动模块组件或功能。
在用户会话2001中执行的隔离环境A 2004可以包括或者隔离第一应用2024和第二应用2026。在一些实施例中,隔离环境A 2004可以与特定的简档或特定的标识符相关联。例如,图18描述的与MICROSOFT OFFICE简档相关联且具有标识符“1234”的隔离环境A 2004。尽管将隔离环境A 2004描述为具有上面提到的简档和标识符,但隔离环境A 2004可以与根据此处描述的方法和系统的任何简档或标识符相关联。类似于隔离环境A 2004,隔离环境B 2006可以与ADOBE简档相关联并可以具有标识符“5678”。简档可以包括应用、应用组或应用系列所需的本地资源、服务、文件或其他配置或环境设置的任何集合。例如,MICROSOFT OFFICE简档可包括专用于MICROSOFTOFFICE应用的本地资源、文件、设置或其他配置或应用信息。类似地,ADOBE简档可包括专用于ADOBE应用的本地资源、文件、设置或其他配置或应用信息。尽管图18描述了与MICROSOFT OFFICE或ADOBE简档关联的隔离环境,但隔离环境可以与任意数量的不同简档相关联。
在一个实施例中,隔离环境2004、2006与标识符相关联。该标识符在任何数量的实施例中可以是:ID;标签;标识元数据;识别文件;或应用、系统或服务能通过其识别隔离环境2004、2006的任何其他识别方式。在一些实施例中,该标识符可以是数字的;而在其他实施例中,该标识符可以是字母的或者字母数字的。该标识符也可以包括一系列符号、象形字、标记、图片、数字的组合或能够识别隔离环境的任何其他识别标记。在一个实施例中,该标识符被存储在与隔离环境关联的注册表设置中;而在又一个实施例中,该标识符被存储在运行时对象表2012或应用传送服务2010中并与特定的存储器地址相关联。在一些实施例中,与隔离环境2004、2006关联的标识符可以包括与隔离环境2004、2006关联的标识符和与用户会话2001关联的标识符的任何组合。在其他实施例中,该标识符可包括下列的任何组合:与服务器106关联的标识符;与客户机102的用户关联的标识符;和与在隔离环境中执行的应用关联的标识符;与运行模块关联的标识符;或者能够将一个隔离环境与另一个隔离环境相唯一区别的任何其他标识符。在其他实施例中,与隔离环境关联的标识符可以是指示该隔离环境位置的路径。在其他实施例中,可以使用下列的任何名称来唯一地命名每个隔离环境:随机生成的名称;包括隔离环境ID的名称;包括与隔离环境关联的简档的名称的名称;包括隔离环境位置的名称;包括与隔离环境在其中执行或位于其中的用户会话相关联的名称或标识符的名称;或者包括与服务器106关联的标识信息的名称。
运行时对象表2012可以是此处所述的任何运行时对象表2012。在一个实施例中,运行时对象表2012存储关于计算机上的隔离环境的标识信息。该标识信息可包括与隔离环境关联的标识符、隔离环境位置、可以找到隔离环境的路径、与隔离环境关联的简档、或能被用于表征隔离环境的内容或隔离环境的位置的任何其他信息。在一些实施例中,当启动模块2018、2020最初在隔离环境中执行时,该启动模块2018、2020可以向运行时对象表2012进行注册并且在运行时对象表2012中插入条目或者使运行时对象表2012生成条目,该条目包括与隔离环境关联的标识信息并且包括关于与该隔离环境关联的简档的信息。运行时对象表2012可将隔离环境信息存储在知识库、列表、表格、数据库或者能够被搜索或排序的任何其他存储机制中。当被查询时,运行时对象表2012可返回关于简档、隔离环境的信息或者关于在运行时对象表2012中所存储的任何信息的信息。
在一些实施例中,应用传送服务2010可以是此处所描述的任何应用传送服务2010。类似于运行时对象表2012,应用传送服务2010也可以存储关于隔离环境的信息。在一个实施例中,应用传送服务2010跟踪每个活动的隔离环境的名称。在又一个实施例中,应用传送服务2010或隔离环境管理模块或者管理器(未示出)跟踪每个活动的、暂停的、不活动的或停止的隔离环境的名称。应用传送服务2010或隔离环境管理模块可以跟踪每个隔离环境的标识符或位置。在其他实施例中,应用传送服务2010或隔离环境管理模块可以跟踪与每个隔离环境关联的简档。例如,在一个实施例中,应用传送服务2010可包含列出在每个用户会话中活动的简档的表格、列表或其他跟踪机制。因此,对在特定用户会话中活动的简档的搜索可以产生简档的列表以及由此产生的在特定用户会话中活动的隔离环境。由应用传送服务2010返回的信息可以是与简档或隔离环境关联的任何标识符并且可以被用于确定隔离环境的位置。
在一个实施例中,运行模块2014可以是此处所描述的任何运行模块2014。运行模块2014可通过查询应用传送服务2010来确定与所请求的应用关联的简档在请求的用户的会话中是否存在或是否是活动的,来响应于对应用的用户请求。应用传送服务2010向运行模块2014返回关于包括或隔离与所请求的应用关联的简档的隔离环境的名称的信息。运行模块2014可使用该信息来查询运行时对象表2012来确定隔离与所请求的应用关联的简档的隔离环境的位置或路径。在一个实施例中,运行模块2014还可以与启动模块2018、2020通信以便向合适的启动模块2018、2020返回启动用户所请求的应用的请求。例如,如果用户要请求启动MICROSOFT ACCESS,该应用是MICROSOFT OFFICE简档的一部分,则运行模块2014将查询应用传送服务2010以确定在第一用户会话2001中是否存在MICROSOFT OFFICE简档。应用传送服务2010将处理该请求并向该运行模块2014返回与隔离环境A 2004关联的信息。运行模块2014接着将使用由应用传送服务2010传输的信息来向运行时对象表2012查询关于隔离环境A 2004的位置的信息以及在一些实施例中查询关于启动模块A 2018的信息。在一些实施例中,运行时对象表2012可以返回隔离环境A 2004的位置,并且在一些实施例中可以返回关于启动模块A 2018的信息。运行模块2014可以使用由运行时对象表2012返回的信息来向启动模块A 2018发送将MICROSOFT ACCESS启动到隔离环境A 2004中的请求。
在隔离环境2004、2006中执行的应用可属于简档以使得该隔离环境2004、2006与特定的简档相关联。在一个实施例中,第一应用2024是MICROSOFT EXCEL,而第二应用2026是MICROSOFT WORD。该实施例仅说明如何可以在与MICROSOFT OFFICE简档关联的隔离环境2004中隔离两个MICROSOFT OFFICE应用。类似地,第三应用2028可以是ADOBE READER,其说明如何可以在与ADOBE简档关联的隔离环境2006中隔离ADOBE应用。
在图19中示出的是用于将应用启动到现有的隔离环境中的方法2014的一个实施例。在一个实施例中,运行模块或其他模块或组件拦截启动应用的请求(步骤2106)。运行模块识别与所请求的应用关联的简档(步骤2108)并且确定应用传送服务是否具有与所识别的简档关联的简档信息(步骤2110)。如果确定应用传送服务具有与所识别的简档关联的简档信息(步骤2011),则应用传送服务返回与隔离环境(其又与该简档关联)关联的信息(步骤2112)。一旦运行模块收到隔离环境信息,该运行模块查询运行时对象表以确定所识别的隔离环境的地址(步骤2114)。如果运行时对象表具有与所识别的隔离环境关联的地址信息,则运行时对象表将该地址信息返回到运行模块,运行模块使用该地址信息来指导启动模块将应用启动到所识别的隔离环境中(步骤2116)。当确定应用传送服务不具有对于所确定的简档的简档信息时(步骤2110),运行模块可以接着实施在图20中所述的方法2140(步骤2118)。类似地,当确定运行时对象表不包含隔离环境的地址时(步骤2114),运行模块可以接着实施在图20中所述的方法2140(步骤2118)。
参考图19,更具体地,在一个实施例中,该方法2104是由在计算机器上执行的运行模块2014、2016执行的。在又一个实施例中,该方法2104是由在计算机器上执行的隔离环境管理器执行的。在一个实施例中,运行模块2014、2016在用户会话中执行该方法2104并且在又一个实施例中,可以在用户会话之外执行该方法2104。在一些实施例中,运行模块2014、2016和用户会话可以在第一计算机器上执行,而在其他实施例中,运行模块2014、2016可在处于远离用户会话在其上执行的第一计算机器的位置处的第二计算机器上执行。
在一些实施例中,运行模块拦截由客户机102生成的启动第一应用的请求(步骤2106)。在一个实施例中,运行模块可拦截任何数量的、客户机102生成的、启动任何数量的不同的或基本类似的应用的请求。因此,在一个实施例中,运行模块可拦截启动或执行第一应用的请求并且可拦截启动或执行第二应用的第二请求;而在又一个实施例中,运行模块可拦截启动或执行第一应用的第一请求以及启动或执行第一应用的第二请求。在拦截了不只一个执行相同应用的请求的实施例中,运行模块可以实例化该应用的多个实例或者可以忽略随后的执行同一应用的请求。在一些实施例中,在用户会话中执行的另一个客户端或模块可以拦截客户机生成的启动应用的请求并且将所拦截的请求进一步地转发到运行模块。在多数实施例中,客户机生成的请求可以是由客户机102响应于来自客户机的用户的输入而生成的。该输入可以指示执行所选择的应用的命令。
一旦运行模块拦截和/或接收执行应用的请求,该运行模块可以使用关于该应用的信息来识别与该应用关联的简档(步骤2108)。在一个实施例中,运行模块可以使用应用名称来在表中查询与所请求的应用相关联的简档的名称或标识符。在又一个实施例中,客户机请求可包括识别与所请求的应用关联的简档的元数据。在其他实施例中,识别具有与该应用相同名称的简档,而在又一个实施例中,识别简档可包括查询应用传送服务2010以确定与所请求的应用关联的简档的名称。在一些实施例中,运行模块可将应用执行请求转发到另一个客户机或模块或者转发到应用传送服务2010以及请求该模块、客户机或服务向运行模块返回与所请求的应用关联的简档的名称。
在多数实施例中,运行模块可以使用与所请求的应用关联的简档的名称来向应用传送服务查询简档信息。在一个实施例中,运行模块可以请求在特定用户会话中的所有活动的简档的列举,而在又一个实施例中,运行模块可以请求在特定的用户会话中的、与所请求的应用兼容的所有活动的简档的列举。在一些实施例中,运行模块可以请求应用传送服务返回用户会话中的与所识别的简档关联的隔离环境的名称。在这样的实施例中,应用传送服务可以使用所识别的简档和在运行模块的请求中包含的用户会话信息来查询内部的列表、表格或数据库,以及在一些实施例中向运行模块返回与所请求的应用关联的简档的名称。
应用传送服务可以接收来自运行模块的、来确定与所请求的应用关联的活动简档是否存在于用户会话中(步骤2110)的查询。在一个实施例中,应用传送服务通过如上文所述进一步地查询活动简档的内部列表来对是否存在简档或简档信息做出确定。其他实施例中,应用传送服务通过列举在用户会话中的每个活动的简档的列表以及搜索整个列举以识别匹配在运行模块的请求或查询中包含的对简档的描述的简档来确定在用户会话中是否存在活动的简档。当确定用户会话中存在活动的简档或者应用传送服务具有关于与所请求的应用关联的简档的信息时,应用传送服务可以返回隔离环境信息(步骤2112)。然而,当确定不存在活动的简档或者应用传送服务不具有关于与所请求的应用关联的简档的信息时,应用传送服务可以接着调用在图20中描述的方法2140(步骤2118)。
当确定存在简档时,在一些实施例中应用传送服务可以向运行模块返回隔离环境信息(步骤2112)。在一个实施例中,返回到运行模块的隔离环境信息涉及与所请求的应用关联的活动的简档,以使得该隔离环境隔离属于该活动的简档的应用。因此,隔离环境信息涉及隔离基本上类似所请求应用的应用的隔离环境。在一些实施例中,应用传送服务可以返回隔离环境的名称,而在其他实施例中,应用传送服务可以返回与该隔离环境关联的地址或路径。在其他实施例中,应用传送服务可以返回简档的名称或者简档的位置而不是隔离环境的名称或地址。在其他实施例中,应用传送服务可以返回关于在隔离环境中的启动模块的信息。
一旦运行模块收到关于隔离环境的信息,该运行模块接着可以查询运行时对象表以确定该运行时对象表是否具有与所识别的隔离环境关联的地址(步骤2114)。在一个实施例中,当应用传送服务可以给运行模块提供关于隔离环境的位置的信息时方法2104可以不包括该步骤。在运行模块从运行时对象表寻求信息的实施例中,运行模块可以构造包括由应用传送服务识别的隔离环境的名称的查询,并且可以将向运行时对象表发出该查询。作为响应,运行时对象表可以定位与隔离环境关联的地址或路径并且将该信息转发到运行模块。在其他实施例中,运行时对象表可以用关于在隔离环境中执行的启动模块内的可执行函数的信息来响应于对隔离环境位置信息的查询。接着,运行模块可以使用该路径信息来向指示所请求的应用的路径的可执行函数传递参数。接着,启动模块可以使用应用路径信息来将所请求的应用启动到隔离环境中。
一旦运行模块接收隔离环境或者在隔离环境中的启动模块的地址或路径信息,接着运行模块可以向启动模块发出在该隔离环境中启动所请求的应用的命令(步骤2116)。作为响应,启动模块识别与所请求的应用关联的可执行函数并且在该隔离环境中执行该应用。
当在应用传送服务之内没有找到简档信息,或者没有在运行时对象表内没有找到隔离环境位置信息时,则随后运行模块可以调用在图20中所示的方法2140。该方法2140描述用于创建隔离环境的过程,并且当显示不存在对于特定简档的隔离环境时,运行模块可以使用该过程来创建隔离环境。在其他实施例中,当确定运行时对象表中不包含与简档关联的位置信息或者应用传送服务不能识别与所请求的应用关联的简档时,运行模块可能返回错误消息或者以其他方式停止执行。
在图20中示出的是用于生成隔离环境的方法2140的实施例。响应于确定应该为特定的简档或应用创建隔离环境,运行模块以暂停模式启动与特定的简档或应用关联的启动模块(步骤2142)。接着,运行模块可以请求应用传送服务来隔离该启动模块(步骤2144)并且一旦该启动模块被隔离,该运行模块可以将应用信息传递到启动模块(步骤2146)。一旦启动模块被隔离并且具有应用信息,运行模块可以允许启动模块继续执行(步骤2148)。
进一步参考图20,更具体地,在一个实施例中,运行模块以暂停模式启动启动模块(步骤2142)。在一些实施例中,运行模块以暂停模式启动启动模块的实例。在一些实施例中,启动模块实例具有与特定的简档或应用关联的特征或属性。以暂停方式启动启动模块可包括创建启动模块的实例并指引该启动模块实例来执行定时器机制,所述定时器机制阻止所有进程的执行直到收到特定命令或者达到状态为止。在其他实施例中,以暂停模式启动启动模块实例可包括设计启动模块实例但不执行该启动模块实例。
接着,运行模块可请求应用传送服务隔离该启动模块(步骤2144)。隔离启动模块可包括生成具有针对特定简档的一组本地资源的一个或多个隔离范围。例如,特定简档可能要求动态链接库(d11)文件的特定集合。在这样的情形中,隔离启动模块可包括生成包含所要求的d11文件集合的一组本地资源的隔离范围。在其他实施例中,隔离启动模块可包括生成具有专用于特定用户和特定的简档或应用的属性的应用和用户隔离层。生成应用和用户隔离层还可包括生成具有由特定用户和特定的简档或应用专用的本地资源的用户隔离范围和应用隔离范围。在其他实施例中,隔离启动模块可包括创建启动模块可在其中执行的隔离环境。
一旦应用传送服务隔离了启动模块,运行模块可以接着将应用信息传递到启动模块(步骤2146)。在一个实施例中,将应用信息传递到启动模块可包括传递应用可执行文件路径、应用可执行文件网络地址、应用可执行文件桩(stub)、应用可执行文件或能够由启动模块用来启动应用的其他应用信息之一。在其他实施例中,运行模块可向启动模块传递存储应用的路径或位置的存储器地址。在其他实施例中,运行模块可向启动模块传递具有应用的路径、位置或地址的参数。
在一个实施例中,一旦运行模块已将应用信息传递到启动模块,运行模块允许该启动模块继续执行。(步骤2148)。允许启动模块继续执行可包括向启动模块发送执行命令。在其他实施例中,允许启动模块继续执行可包括向启动模块发送停止执行启动模块内的延迟模块和继续启动模块功能的普通执行的命令。
应该理解,此处所描述的系统和方法可作为一件或多件制造产品上或在其中所实现的一个或多个计算机可读程序而被提供。所述产品可以是软盘、硬盘、光盘、数字通用光盘、闪存卡、PROM、RAM、ROM或磁带。通常,可以任何编程语言来实现计算机可读程序,可以使用的语言的一些示例包括C、C++、C#、或者JAVA。软件程序可以作为目标代码被存储在一件或多件产品上或其中。
尽管本公开已经描述了用于将应用启动到现有的隔离环境中的系统和方法的多个实施例,对本领域技术人员而言,应理解可以在其中做出形式和细节上的各种改变而不脱离本发明的由下列权利要求的限定的精神和范围。

Claims (18)

1.一种用于将应用启动到现有的在由服务器计算机器寄载的用户会话中执行的隔离环境中的方法,所述方法包括:
由在服务器计算机器上所寄载的用户会话中执行的运行模块接收在该服务器计算机器上执行应用的请求,所述请求是由客户机的用户生成的;
由运行模块识别与所述应用关联的简档;
由运行模块查询在该服务器计算机器上执行的应用传送服务以识别对应于所述简档的至少一个隔离环境;
由运行模块接收来自该应用传送服务的响应,所述响应识别执行所述用户会话的第一隔离环境,该第一隔离环境与所述应用相关联;
由运行模块向在该计算机器上的第一隔离环境中执行的启动模块发出将所述应用启动到该第一隔离环境中的命令;以及
由该第一隔离环境公开用于与在该计算机器上执行的组件通信的通信接口,所述通信接口是由进程间机制生成的。
2.根据权利要求1所述的方法,其中由运行模块接收来自该应用传送服务的响应包括接收与该第一隔离环境关联的标识符。
3.根据权利要求2所述的方法,其中接收与该第一隔离环境关联的标识符包括接收该第一隔离环境的名称。
4.根据权利要求2所述的方法,还包括由运行模块响应于收到该第一隔离环境标识符来向运行时对象表查询该第一隔离环境的地址,其中该运行模块使用该第一隔离环境标识符来查询该运行时对象表。
5.根据权利要求1所述的方法,其中启动还包括向所述通信接口传输所述应用的位置。
6.根据权利要求1所述的方法,其中识别所述第一隔离环境包括识别与该第一隔离环境关联的地址。
7.根据权利要求6所述的方法,其中识别与该第一隔离环境关联的地址包括识别包含与该第一隔离环境关联的简档版本的第一隔离环境地址。
8.根据权利要求6所述的方法,其中识别与该第一隔离环境关联的地址包括识别包含与该第一隔离环境关联的用户会话标识符的第一隔离环境地址。
9.根据权利要求1所述的方法,还包括:
未能识别对应于所述简档的隔离环境;
响应于未能识别隔离环境,由运行模块以暂停模式启动启动模块;
由运行模块向该应用传送服务发出隔离所述启动模块的命令;
由运行模块将应用信息发送到所述启动模块;以及
由运行模块向所述启动模块发出继续执行的命令。
10.一种用于将应用启动到现有的在由服务器计算机器寄载的用户会话中执行的隔离环境中的系统,所述系统包括:
服务器计算机器,其适于寄载至少一个用户会话并且与客户机通信,所述客户机生成在该服务器计算机器上执行应用的请求,所述应用与简档相关联;
应用传送服务,其适于在该服务器计算机器上执行;
启动模块,其适于在该服务器计算机器上所寄载的用户会话中执行的隔离环境中执行;和
运行模块,其适于在该服务器计算机器上所寄载的所述用户会话中执行,所述运行模块适于:
接收客户机请求,
查询应用传送服务以识别对应于所述简档的至少一个隔离环境,
从应用传送服务接收识别与所述应用关联的第一隔离环境的响应,以及
向启动模块发出将所述应用启动到该第一隔离环境中的命令,其中第一隔离环境包括用于与在该服务器计算机器上执行的组件通信的通信接口,所述通信接口是由进程间机制生成的。
11.根据权利要求10所述的系统,其中应用传送服务适于向运行模块传输与该第一隔离环境关联的标识符。
12.根据权利要求11所述的系统,其中所述标识符包括该第一隔离环境的名称。
13.根据权利要求11所述的系统,还包括运行时对象表,其适于用该第一隔离环境的地址对由运行模块生成的包括该第一隔离环境标识符的查询进行响应。
14.根据权利要求10所述的系统,其中运行模块适于向所述通信接口传输所述应用的位置。
15.根据权利要求10所述的系统,其中应用传送服务适于识别与该第一隔离环境关联的地址。
16.根据权利要求15所述的系统,其中该第一隔离环境地址包括简档版本号。
17.根据权利要求15所述的系统,其中该第一隔离环境地址包括用户会话标识符。
18.根据权利要求10所述的系统,其中运行模块还适于:
确定在该服务器计算机器上没有一个隔离环境对应于所述简档;
响应于确定没有一个隔离环境对应于所述简档,由运行模块以暂停模式启动启动模块;
由运行模块向该应用传送服务发出隔离所述启动模块的命令;
由运行模块将应用信息发送到所述启动模块;以及
由运行模块向所述启动模块发出继续执行的命令。
CN201080029718.3A 2009-05-02 2010-04-09 用于将应用启动到现有的隔离环境中的系统和方法 Active CN102460389B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/434629 2009-05-02
US12/434,629 US8090797B2 (en) 2009-05-02 2009-05-02 Methods and systems for launching applications into existing isolation environments
PCT/US2010/030515 WO2010129135A1 (en) 2009-05-02 2010-04-09 Methods and systems for launching applications into existing isolation environments

Publications (2)

Publication Number Publication Date
CN102460389A CN102460389A (zh) 2012-05-16
CN102460389B true CN102460389B (zh) 2014-10-29

Family

ID=42289250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080029718.3A Active CN102460389B (zh) 2009-05-02 2010-04-09 用于将应用启动到现有的隔离环境中的系统和方法

Country Status (5)

Country Link
US (2) US8090797B2 (zh)
EP (1) EP2425334A1 (zh)
CN (1) CN102460389B (zh)
AU (1) AU2010245173A1 (zh)
WO (1) WO2010129135A1 (zh)

Families Citing this family (294)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8375444B2 (en) 2006-04-20 2013-02-12 Fireeye, Inc. Dynamic signature creation and enforcement
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US9106694B2 (en) * 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8539582B1 (en) 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US8756293B2 (en) * 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8812451B2 (en) 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
US9680964B2 (en) * 2009-03-11 2017-06-13 Microsoft Technology Licensing, Llc Programming model for installing and distributing occasionally connected applications
US8555360B1 (en) * 2009-04-10 2013-10-08 Open Invention Network Llc System and method for on-line and off-line streaming application isolation
US11538078B1 (en) 2009-04-10 2022-12-27 International Business Machines Corporation System and method for usage billing of hosted applications
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
JP5571918B2 (ja) * 2009-07-29 2014-08-13 キヤノン株式会社 画像処理装置、画像管理装置、画像管理方法及び画像管理システム
US9092598B2 (en) * 2009-07-30 2015-07-28 Microsoft Technology Licensing, Llc Version-based software product activation
JP5440009B2 (ja) * 2009-07-31 2014-03-12 富士通株式会社 マルチクラスタシステムのプログラム更新方法及びマルチクラスタシステム
JP4929386B2 (ja) * 2009-09-07 2012-05-09 株式会社エヌ・ティ・ティ・ドコモ 通信競合管理装置
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
TW201035777A (en) * 2009-10-19 2010-10-01 Yong-He Liu Improved common motherboard and keys structure for portable computer and home computer
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation
US8370510B2 (en) * 2009-12-18 2013-02-05 Microsoft Corporation Remote application presentation over a public network connection
KR101089157B1 (ko) * 2010-03-05 2011-12-02 주식회사 안철수연구소 클라이언트 가상화를 이용한 서버의 논리적 망분리 시스템 및 방법
CN101854359B (zh) * 2010-05-19 2012-10-31 南京联创科技集团股份有限公司 基于虚拟化计算的权限控制方法
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
US8918499B2 (en) * 2010-08-09 2014-12-23 International Business Machines Corporation Method and system for end-to-end quality of service in virtualized desktop systems
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US9112769B1 (en) * 2010-12-27 2015-08-18 Amazon Technologies, Inc. Programatically provisioning virtual networks
CN102065104A (zh) * 2011-01-10 2011-05-18 深信服网络科技(深圳)有限公司 一种异地文件访问方法、装置及系统
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
CN102685768B (zh) * 2011-03-08 2016-02-03 华为技术有限公司 心跳消息的处理方法、心跳周期的获取方法及接入网设备
US9767195B2 (en) 2011-04-21 2017-09-19 Touchstream Technologies, Inc. Virtualized hosting and displaying of content using a swappable media player
US8799898B2 (en) * 2011-05-31 2014-08-05 Adobe Systems Incorporated Methods and apparatus for binding applications to a cloud computing environment
US20130167028A1 (en) * 2011-06-01 2013-06-27 Adobe Systems Incorporated Restricting media content rendering
KR20130009911A (ko) * 2011-07-15 2013-01-24 전자부품연구원 스케일러블 어플리케이션 서비스를 위한 장치 및 방법
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8918841B2 (en) * 2011-08-31 2014-12-23 At&T Intellectual Property I, L.P. Hardware interface access control for mobile applications
US8898459B2 (en) 2011-08-31 2014-11-25 At&T Intellectual Property I, L.P. Policy configuration for mobile device applications
US9430641B1 (en) * 2011-11-03 2016-08-30 Mobile Iron, Inc. Adapting a mobile application to a partitioned environment
US9594605B2 (en) * 2011-11-15 2017-03-14 Apple Inc. Client-server version control system for software applications
US8706847B2 (en) * 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8978042B2 (en) * 2012-02-15 2015-03-10 Google Inc. Method and system for maintaining game functionality for a plurality of game instances running on a computer system
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
KR101478134B1 (ko) * 2012-02-29 2015-01-26 주식회사 팬택 모바일 디바이스의 파일 관리 방법 및 이를 이용한 모바일 디바이스
JP5952612B2 (ja) * 2012-03-28 2016-07-13 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
US9319270B2 (en) * 2012-04-12 2016-04-19 FrontRange Solutions, Inc. Configuration of third party applications in a sandboxed environment
US9160807B2 (en) 2012-04-12 2015-10-13 Absolute Software Corporation System and method for deriving a name for association with a device
US9152784B2 (en) 2012-04-18 2015-10-06 Mcafee, Inc. Detection and prevention of installation of malicious mobile applications
US8997193B2 (en) * 2012-05-14 2015-03-31 Sap Se Single sign-on for disparate servers
US9710247B2 (en) * 2012-06-26 2017-07-18 Microsoft Technology Licensing, Llc Identification of host-compatible downloadable applications
US8818347B2 (en) 2012-07-10 2014-08-26 Telefonaktiebolaget L M Ericsson (Publ) Node and method for service specific management
US9361433B2 (en) * 2012-08-03 2016-06-07 Synchronoss Technologies, Inc Enterprise leasing license algorithm
US20140108589A1 (en) * 2012-10-11 2014-04-17 Sanjeev Dhanda Testing an executable binary file using an injection proxy
US8984008B2 (en) * 2012-10-19 2015-03-17 Google Inc. Re-use of binaries for multiple user accounts
CN103873666B (zh) * 2012-12-17 2016-05-25 中国电信股份有限公司 移动终端及其数据擦除方法、装置和企业应用安装方法
CN103902585A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 一种数据加载方法和系统
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US20140228014A1 (en) * 2013-02-12 2014-08-14 Mistral Mfs Oy Method, System and Computer Program for Remotely Configurable Mobile Application
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
WO2014145805A1 (en) 2013-03-15 2014-09-18 Mandiant, Llc System and method employing structured intelligence to verify and contain threats at endpoints
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
EP2782007A1 (en) * 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Launching multiple applications in containers on a processor
EP2782010A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Hierarchical resource management
EP2782038A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Resource management in a processor for trusted and untrusted applications
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US9619251B2 (en) * 2013-05-30 2017-04-11 Intel Corporation Techniques for dynamic system performance tuning
US10489175B2 (en) * 2013-06-10 2019-11-26 Amazon Technologies, Inc. Pre-configure and pre-launch compute resources
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
CN103618758B (zh) * 2013-10-31 2017-01-11 新浪网技术(中国)有限公司 Web服务器及其系统资源访问控制方法
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US20150169901A1 (en) * 2013-12-12 2015-06-18 Sandisk Technologies Inc. Method and Systems for Integrity Checking a Set of Signed Data Sections
US9117081B2 (en) 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US20150222697A1 (en) * 2014-01-31 2015-08-06 Qualcomm Incorporated Consolidated access to broadcast content available from different networks
US20150222665A1 (en) * 2014-01-31 2015-08-06 Peter Eberlein Restricting user actions based on document classification
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9202046B2 (en) 2014-03-03 2015-12-01 Bitdefender IPR Management Ltd. Systems and methods for executing arbitrary applications in secure environments
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9721021B2 (en) * 2014-05-27 2017-08-01 Quixey, Inc. Personalized search results
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US20150365469A1 (en) * 2014-06-17 2015-12-17 Google Inc. System and method for integrating web and native applications from web-based contexts
US9830448B2 (en) * 2014-06-23 2017-11-28 Waratek Limited Enhanced security for java virtual machines
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
WO2016001718A1 (en) * 2014-07-03 2016-01-07 Abb Technology Ag An apparatus and a method for processing data
CN105320853B (zh) * 2014-07-09 2021-03-02 腾讯科技(深圳)有限公司 一种信息监控方法、装置及终端
US20160036894A1 (en) * 2014-07-31 2016-02-04 Michael David Collins Server based communication between sandboxed applications
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US9876849B2 (en) 2014-11-05 2018-01-23 Google Llc Opening local applications from browsers
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9614853B2 (en) * 2015-01-20 2017-04-04 Enzoo, Inc. Session security splitting and application profiler
US9639706B2 (en) 2015-02-19 2017-05-02 International Business Machines Corporation Inter-virtual machine communication
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US9565168B1 (en) * 2015-05-05 2017-02-07 Sprint Communications Company L.P. System and method of a trusted computing operation mode
US9600682B2 (en) * 2015-06-08 2017-03-21 Accenture Global Services Limited Mapping process changes
US20160364101A1 (en) * 2015-06-15 2016-12-15 Ricardo Spear Method for controlling remote user display
US9843572B2 (en) * 2015-06-29 2017-12-12 Airwatch Llc Distributing an authentication key to an application installation
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US9686240B1 (en) 2015-07-07 2017-06-20 Sprint Communications Company L.P. IPv6 to IPv4 data packet migration in a trusted security zone
US10073720B2 (en) * 2015-07-30 2018-09-11 Airwatch, Llc Restricted application visibility
US9813504B2 (en) * 2015-08-03 2017-11-07 Citrix Systems, Inc. Virtualizing device management services on a multi-session platform
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
CN105184153B (zh) * 2015-08-26 2018-10-02 北京元心科技有限公司 智能终端及其基于多级容器的应用程序运行方法
US9749294B1 (en) 2015-09-08 2017-08-29 Sprint Communications Company L.P. System and method of establishing trusted operability between networks in a network functions virtualization environment
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10542115B1 (en) 2015-10-01 2020-01-21 Sprint Communications Company L.P. Securing communications in a network function virtualization (NFV) core network
US9811686B1 (en) 2015-10-09 2017-11-07 Sprint Communications Company L.P. Support systems interactions with virtual network functions in a trusted security zone
US9781016B1 (en) 2015-11-02 2017-10-03 Sprint Communications Company L.P. Dynamic addition of network function services
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
TW201721498A (zh) * 2015-12-01 2017-06-16 Chunghwa Telecom Co Ltd 具安全與功能擴充性的有線區域網路使用者管理系統及方法
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
CN106911648B (zh) * 2015-12-23 2019-12-24 阿里巴巴集团控股有限公司 一种环境隔离方法及设备
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US10616266B1 (en) 2016-03-25 2020-04-07 Fireeye, Inc. Distributed malware detection system and submission workflow thereof
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10860568B2 (en) 2016-04-01 2020-12-08 Arista Networks, Inc. External data source linking to queries in memory
US10642844B2 (en) 2016-04-01 2020-05-05 Arista Networks, Inc. Non-materialized tables with standing queries
US10817512B2 (en) 2016-04-01 2020-10-27 Arista Networks, Inc. Standing queries in memory
US10783147B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Query result flow control in a network switch
US10284673B2 (en) 2016-04-01 2019-05-07 Arista Networks, Inc. Interface for a client of a network device
US10783144B2 (en) 2016-04-01 2020-09-22 Arista Networks, Inc. Use of null rows to indicate the end of a one-shot query in network switch
US10116630B2 (en) * 2016-04-04 2018-10-30 Bitdefender IPR Management Ltd. Systems and methods for decrypting network traffic in a virtualized environment
EP3455775B1 (en) * 2016-05-11 2022-05-18 British Telecommunications public limited company Software container profiling
WO2017194638A1 (en) * 2016-05-11 2017-11-16 British Telecommunications Public Limited Company Software container access control
US10417142B2 (en) 2016-06-17 2019-09-17 Red Hat Israel, Ltd. Operating system integrated application isolation
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10467045B1 (en) 2016-07-07 2019-11-05 Binaris Inc On-demand isolated execution of specific tasks
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10542071B1 (en) * 2016-09-27 2020-01-21 Amazon Technologies, Inc. Event driven health checks for non-HTTP applications
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10250498B1 (en) 2016-10-03 2019-04-02 Sprint Communications Company L.P. Session aggregator brokering of data stream communication
FR3057373A1 (fr) * 2016-10-12 2018-04-13 Orange Securisation d'une base de donnees d'authentification par un reseau
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
CN108090347B (zh) * 2016-11-23 2022-01-14 阿里巴巴集团控股有限公司 一种数据处理方法和系统
US10362110B1 (en) * 2016-12-08 2019-07-23 Amazon Technologies, Inc. Deployment of client data compute kernels in cloud
US20180173552A1 (en) * 2016-12-20 2018-06-21 Invensys Systems, Inc. System and method for content - application split
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
CN108280097B (zh) * 2017-01-06 2022-09-09 阿里云计算有限公司 一种数据库系统的故障处理方法和装置
US11314870B1 (en) 2017-03-14 2022-04-26 Melih Abdulhayoglu Auto-containment of potentially vulnerable applications
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US11423140B1 (en) 2017-03-27 2022-08-23 Melih Abdulhayoglu Auto-containment of guest user applications
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10951644B1 (en) 2017-04-07 2021-03-16 Comodo Security Solutions, Inc. Auto-containment of potentially vulnerable applications
CN106991321B (zh) * 2017-04-18 2020-11-03 北京元心科技有限公司 多容器系统中无痕运行应用程序的方法及装置
US11294901B1 (en) * 2017-05-04 2022-04-05 Amazon Technologies, Inc. Isolating the performance of functions included in queries
US10657239B2 (en) * 2017-05-25 2020-05-19 Oracle International Corporation Limiting access to application features in cloud applications
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10621001B1 (en) 2017-07-06 2020-04-14 Binaris Inc Systems and methods for efficiently expediting execution of tasks in isolated environments
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
US11240207B2 (en) 2017-08-11 2022-02-01 L3 Technologies, Inc. Network isolation
US11601467B2 (en) 2017-08-24 2023-03-07 L3 Technologies, Inc. Service provider advanced threat protection
US10348488B1 (en) 2017-08-25 2019-07-09 Sprint Communications Company L.P. Tiered distributed ledger technology (DLT) in a network function virtualization (NFV) core network
US11178104B2 (en) 2017-09-26 2021-11-16 L3 Technologies, Inc. Network isolation with cloud networks
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10931669B2 (en) * 2017-09-28 2021-02-23 L3 Technologies, Inc. Endpoint protection and authentication
US11184323B2 (en) 2017-09-28 2021-11-23 L3 Technologies, Inc Threat isolation using a plurality of containers
US11374906B2 (en) 2017-09-28 2022-06-28 L3 Technologies, Inc. Data exfiltration system and methods
US11336619B2 (en) 2017-09-28 2022-05-17 L3 Technologies, Inc. Host process and memory separation
US11223601B2 (en) 2017-09-28 2022-01-11 L3 Technologies, Inc. Network isolation for collaboration software
US11552987B2 (en) 2017-09-28 2023-01-10 L3 Technologies, Inc. Systems and methods for command and control protection
US10853093B2 (en) * 2017-09-29 2020-12-01 Dell Products L.P. Application profiling via loopback methods
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11550898B2 (en) 2017-10-23 2023-01-10 L3 Technologies, Inc. Browser application implementing sandbox based internet isolation
US11170096B2 (en) 2017-10-23 2021-11-09 L3 Technologies, Inc. Configurable internet isolation and security for mobile devices
US11120125B2 (en) 2017-10-23 2021-09-14 L3 Technologies, Inc. Configurable internet isolation and security for laptops and similar devices
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
CN108875387B (zh) * 2018-05-29 2019-12-10 平安科技(深圳)有限公司 基于ad系统的数据处理方法、装置、设备及介质
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US11093620B2 (en) * 2018-11-02 2021-08-17 ThreatConnect, Inc. Ahead of time application launching for cybersecurity threat intelligence of network security events
US11126754B2 (en) * 2018-11-30 2021-09-21 BicDroid Inc. Personalized and cryptographically secure access control in operating systems
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
CN109885340B (zh) * 2019-01-10 2022-06-10 北京字节跳动网络技术有限公司 一种应用程序冷启动加速方法、装置、电子设备
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11172014B2 (en) * 2019-08-21 2021-11-09 Open Text Sa Ulc Smart URL integration using serverless service
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
WO2021092448A1 (en) * 2019-11-06 2021-05-14 Fastly, Inc. Managing shared applications at the edge of a content delivery network
CN111224995B (zh) * 2020-01-15 2022-06-14 成都安舟信息技术有限公司 基于内存分析的ssl/tls网络加密通信信息实时解密方法
US11863573B2 (en) 2020-03-06 2024-01-02 ThreatConnect, Inc. Custom triggers for a network security event for cybersecurity threat intelligence
WO2021187996A1 (ru) * 2020-03-19 2021-09-23 Айкьюпи Текнолоджи, Элтиди Способ и система блокировки потенциально нежелательного программного обеспечения
EP3896590A1 (de) * 2020-04-17 2021-10-20 Siemens Aktiengesellschaft Verfahren und systeme zum übertragen von software-artefakten aus einem quellnetzwerk zu einem zielnetzwerk
CN111917737B (zh) * 2020-07-14 2023-01-31 北京明略软件系统有限公司 一种跨网rpc调用系统及方法
CN112953996B (zh) * 2020-08-03 2022-09-27 深圳市明源云链互联网科技有限公司 服务方法及其系统
US11847205B1 (en) 2020-10-26 2023-12-19 T-Mobile Innovations Llc Trusted 5G network function virtualization of virtual network function elements embedded on a system-on-chip
CN112416308A (zh) * 2020-11-30 2021-02-26 上海汽车集团股份有限公司 一种软件优化方法、装置及软件架构
CN114070820B (zh) * 2021-11-11 2023-09-01 南京指掌易信息科技有限公司 一种域名重定向方法、装置、介质及电子设备
WO2024035430A1 (en) * 2022-08-10 2024-02-15 Visa International Service Association Isolating application and software development kit sandboxes for security protection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101069156A (zh) * 2004-09-30 2007-11-07 茨特里克斯系统公司 用于在隔离环境之间移动进程的方法和设备
US7426565B1 (en) * 2001-02-16 2008-09-16 Swsoft Holdings, Ltd. Virtual computing environment

Family Cites Families (347)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US5187790A (en) 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes 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
CA2084575C (en) 1991-12-31 1996-12-03 Chris A. Dinallo Personal computer with generalized data streaming apparatus for multimedia devices
KR930020263A (ko) 1992-03-06 1993-10-19 윌리암 에이취. 뉴콤 프로그램 로딩 및 기억방법
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
JP2576762B2 (ja) 1993-06-30 1997-01-29 日本電気株式会社 リング網のノード間情報収集方式
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
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
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
US5515508A (en) 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
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
US5557346A (en) 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for key escrow encryption
US5557765A (en) 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for data recovery
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
WO1996020448A1 (en) * 1994-12-23 1996-07-04 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
EP0826181A4 (en) 1995-04-11 2005-02-09 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
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 株式会社日立製作所 マルチメディア情報転送システム
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)
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
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
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
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US7197570B2 (en) 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US6574618B2 (en) 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US20010044850A1 (en) 1998-07-22 2001-11-22 Uri Raz Method and apparatus for determining the order of streaming modules
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
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
US6757705B1 (en) 1998-08-14 2004-06-29 Microsoft Corporation Method and system for client-side caching
US6321219B1 (en) 1998-08-14 2001-11-20 Microsoft Corporation Dynamic symbolic links for computer file systems
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
US6516315B1 (en) * 1998-11-05 2003-02-04 Neuvis, Inc. Method for controlling access to information
US6374402B1 (en) * 1998-11-16 2002-04-16 Into Networks, Inc. Method and apparatus for installation abstraction in a secure content delivery system
US7017188B1 (en) * 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7225264B2 (en) 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
WO2000030323A2 (en) 1998-11-16 2000-05-25 Into Networks, Inc. Methods and apparatus for secure content delivery over broadband access networks
US6763370B1 (en) * 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
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
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
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
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
WO2001026276A1 (en) * 1999-10-01 2001-04-12 Infraworks Corporation Method and system for providing data security in a file system monitor with stack positioning
WO2001025894A1 (en) * 1999-10-05 2001-04-12 Ejasent Inc. Snapshot virtual-templating
US6763379B1 (en) 1999-10-14 2004-07-13 Ideaflood, Inc. System, apparatus and method for presenting and displaying content on a wide area network
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
US20030236837A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Content delivery system providing accelerate content delivery
US20020065864A1 (en) 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20030236919A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network connected computing system
US20020049608A1 (en) * 2000-03-03 2002-04-25 Hartsell Neal D. Systems and methods for providing differentiated business services in information management environments
US20020049841A1 (en) * 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing 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
US20020095400A1 (en) 2000-03-03 2002-07-18 Johnson Scott C Systems and methods for managing differentiated service 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
US20020108059A1 (en) 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
US20020116452A1 (en) 2000-03-03 2002-08-22 Surgient Networks, Inc. Network connected computing system including storage system
US20020107990A1 (en) 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
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
US20020107989A1 (en) 2000-03-03 2002-08-08 Johnson Scott C. Network endpoint system with accelerated data path
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
AU2001245554A1 (en) 2000-03-13 2001-09-24 Broadfire Technologies Corporation Information management system
US6976037B1 (en) * 2000-03-27 2005-12-13 Microsoft Corporation Method and systems for DLL/COM redirection
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
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
US6598125B2 (en) 2000-05-25 2003-07-22 Exent Technologies, Ltd Method for caching information between work sessions
US20050091511A1 (en) 2000-05-25 2005-04-28 Itay Nave Useability features in on-line delivery of applications
AU2001268674B2 (en) 2000-06-22 2007-04-26 Microsoft Technology Licensing, Llc Distributed computing services platform
JP2004504681A (ja) 2000-07-17 2004-02-12 エプリケーション ネットワークス リミテッド キャッシュ分散ネットーク上に静的及び動的コンテンツをキャッシュすることによる、WWWサイトのビット・レートの節約及びQoS改善
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
EP1364296A4 (en) 2000-09-12 2004-09-15 Netmotion Wireless Inc METHOD AND DEVICE FOR PROVIDING MOBILE AND OTHER INTERRUPTED CONDUCTIVITY IN A DATA PROCESSING 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
US7051315B2 (en) 2000-09-26 2006-05-23 Appstream, Inc. Network streaming of multi-application program code
US6757894B2 (en) 2000-09-26 2004-06-29 Appstream, Inc. Preprocessed applications suitable for network streaming applications and method for producing same
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
US7062567B2 (en) 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US8831995B2 (en) * 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US6959320B2 (en) 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system 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
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
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US6918113B2 (en) 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
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
US7870535B2 (en) 2001-02-22 2011-01-11 Accenture Global Services Gmbh Distributed development environment for building internet applications by developers at remote locations
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
WO2003012578A2 (en) 2001-08-01 2003-02-13 Actona Technologies Ltd. Virtual file-sharing 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
EP1684176A3 (en) 2001-10-02 2010-05-05 Citrix Systems, Inc. Methods for distributed program execution with file-type association in a client-server network
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
US7624391B2 (en) 2001-11-05 2009-11-24 Hewlett-Packard Development Company, L.P. Device-based model for software driver delivery and upgrade
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
CA2476314A1 (en) 2002-02-07 2003-08-14 Think-Dynamics 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
CA2481687A1 (en) * 2002-04-11 2003-10-23 Linuxcare, Inc. Managing multiple virtual machines
AU2003239385A1 (en) * 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7191469B2 (en) 2002-05-13 2007-03-13 Green Border Technologies Methods and systems for providing a secure application environment using derived user accounts
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
US7496931B2 (en) 2003-12-30 2009-02-24 Symantec Corporation Portable memory storage devices containing public context application layers
WO2003107220A1 (en) 2002-06-12 2003-12-24 Fslogic, Inc. Layered computing systems and methods for insecure environments
US7165260B2 (en) 2002-06-12 2007-01-16 Fsl, L.L.C. Layered computing systems and methods for insecure environments
US7620956B2 (en) 2003-06-11 2009-11-17 Symantec Corporation Portable memory storage devices with application layers
US7512977B2 (en) 2003-06-11 2009-03-31 Symantec Corporation Intrustion protection system utilizing layers
US7549164B2 (en) 2003-06-11 2009-06-16 Symantec Corporation Intrustion protection system utilizing layers and triggers
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
US7363500B2 (en) 2002-12-03 2008-04-22 Juniper Networks, 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
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
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
WO2005029313A1 (en) 2003-08-21 2005-03-31 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
AU2004271525B2 (en) 2003-08-21 2010-01-21 Microsoft Technology Licensing, Llc Systems and methods for providing synchronization services for 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
JP2007521533A (ja) 2003-08-21 2007-08-02 マイクロソフト コーポレーション アプリケーションプログラムをアイテムベースのストレージプラットフォームとインターフェースするためのシステムおよび方法
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
EP1620781A4 (en) 2003-08-21 2008-12-03 Microsoft Corp SYSTEMS AND METHODS FOR IMPLEMENTING A DIAGRAM OF DIGITAL IMAGES FOR THE ORGANIZATION OF INFORMATION UNITS MAY BE MANAGED BY A MATERIAL / 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
US7694328B2 (en) 2003-10-21 2010-04-06 Google Inc. 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
WO2006020094A2 (en) 2004-07-20 2006-02-23 Softricity, Inc. Method and system for minimizing loss in a computer application
CN1989571A (zh) 2004-07-21 2007-06-27 皇家飞利浦电子股份有限公司 信息载体、用于读取这种信息载体的系统和装置
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
US7424719B2 (en) * 2004-08-02 2008-09-09 Hewlett-Packard Development Company, L.P. Application with multiple embedded drivers
JP5021475B2 (ja) 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
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
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
US20060069662A1 (en) 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
US8117559B2 (en) * 2004-09-30 2012-02-14 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US7752600B2 (en) 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
EP1847928A1 (en) 2004-09-30 2007-10-24 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
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
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
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
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
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
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
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
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US8078577B2 (en) * 2008-04-07 2011-12-13 Installfree, Inc. Method of bi-directional synchronization of user data
US20100100892A1 (en) * 2008-10-16 2010-04-22 International Business Machines Corporation Managing hosted virtualized operating system environments
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8352937B2 (en) * 2009-08-03 2013-01-08 Symantec Corporation Streaming an application install package into a virtual environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426565B1 (en) * 2001-02-16 2008-09-16 Swsoft Holdings, Ltd. Virtual computing environment
CN101069156A (zh) * 2004-09-30 2007-11-07 茨特里克斯系统公司 用于在隔离环境之间移动进程的方法和设备

Also Published As

Publication number Publication date
EP2425334A1 (en) 2012-03-07
US8326943B2 (en) 2012-12-04
WO2010129135A1 (en) 2010-11-11
CN102460389A (zh) 2012-05-16
US20120059876A1 (en) 2012-03-08
AU2010245173A1 (en) 2011-11-17
US8090797B2 (en) 2012-01-03
US20100281102A1 (en) 2010-11-04

Similar Documents

Publication Publication Date Title
CN102460389B (zh) 用于将应用启动到现有的隔离环境中的系统和方法
CN102656562B (zh) 用于选择桌面执行位置的方法和系统
US10848520B2 (en) Managing access to resources
US7779034B2 (en) Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US8131825B2 (en) Method and a system for responding locally to requests for file metadata associated with files stored remotely
US9965622B2 (en) Systems and methods for RADE service isolation
CN102929658B (zh) 访问目录结构中文件的方法和系统
US20070083655A1 (en) Methods for selecting between a predetermined number of execution methods for an application program
US20100281528A1 (en) Methods and systems for generating and delivering an interactive application delivery store
US9942261B2 (en) Dynamic optimizing scanner for identity and access management (IAM) compliance verification
US8949933B2 (en) Centralized management of technical records across an enterprise
Wozniak et al. Access control for a replica management database
CN116194921A (zh) 数据引擎的安全进出
Pot’vin et al. Enterprise Manager Cloud Control 12c Architecture: by Pete Sharman
Oakes Microsoft operating systems development and strategy: an assessment of the Windows 2000 Server operating system

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