CN104704448B - 本地和远程计算环境之间的反向无缝集成 - Google Patents
本地和远程计算环境之间的反向无缝集成 Download PDFInfo
- Publication number
- CN104704448B CN104704448B CN201380044275.9A CN201380044275A CN104704448B CN 104704448 B CN104704448 B CN 104704448B CN 201380044275 A CN201380044275 A CN 201380044275A CN 104704448 B CN104704448 B CN 104704448B
- Authority
- CN
- China
- Prior art keywords
- client
- window
- application
- local
- remote
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0407—Resolution change, inclusive of the use of different resolutions for different screen areas
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
描述了用于在远程(“已发布”)应用程序和其本地对应应用程序之间的透明用户界面集成的方法和系统,其提供无缝统一的用户体验,并允许开始菜单、停靠栏、任务栏、桌面快捷方式、多个窗口、窗口和应用程序切换、系统托盘元素、客户端到主机和主机到客户端文件类型关联、URL重定向、浏览器cookie重定向、凭证重定向、状态消息拦截和重定向和其它元素的集成。这些方法和系统还通过使用于产生包括文本控件、按钮、进度条、单选按钮、列表框或其它元素的所有UI元素远离接收方;给它们显现接收方的产品和OS特定UI;并将状态返回到发送方来增强在客户端和远程桌面或虚拟机之间的主题集成。这可实现更统一和透明的UI集成。此外,可使用反向无缝用户界面来集成存储资源、打印机资源和基于身份的资源。
Description
本申请要求2012年10月4日提交的标题为“Reverse Seamless IntegrationBetween Local and Remote Computing Environments”的编号为13/644,659的美国申请的优先权,该美国申请是2012年8月31日提交的标题为“Reverse Seamless IntegrationBetween Local and Remote Computing Environments”的编号为13/600,331的美国申请的继续申请,每个申请为了所有目的通过引用被并入本文。
技术领域
本公开涉及用于本地和远程计算环境之间的透明用户界面集成的方法和系统。特别是,本公开涉及用于提供具有本地显现的图形的本地执行的应用程序和远程执行的应用程序的统一桌面体验的方法和系统。
背景
在用于集成远程计算设备上的远程产生的显示或虚拟的桌面环境与在本地计算设备上的本地产生的桌面环境的一些环境中,可在远程计算设备或本地客户端计算设备上执行应用程序,以利用客户端的处理器和存储器。例如,这可针对多媒体目的、设备访问问题、本地化要求、辅助计算设备等而完成。然而,这些应用程序目前使用起来是困难或令人困惑的。
简要概述
下文介绍了本发明的简化概述,以便提供对本发明的一些方面的基本理解。这个概述并不是本发明的广泛概要。意图并不是识别本发明的关键或重要元件或描述本发明的范围。下面的概述仅以简化形式介绍本发明的一些概念作为下面提供的更详细的描述的序言。
在一个实施方式中,本文描述的方法和系统提供远程(“已发布”)应用和其本地对应应用之间的集成。在另一实施方式中,这个功能提供无缝统一的用户体验。在又一实施方式中,这个功能允许开始菜单、停靠栏、任务栏、桌面快捷方式、窗口、窗口和应用切换、系统托盘元素、客户端到主机和主机到客户端文件类型关联、URL重定向、浏览器cookie重定向、凭证重定向、状态消息拦截和重定向和其它元素的集成。
在一些实施方式中,本文描述的方法和系统通过使用于产生的所有UI元素例如文本控件、按钮、进度条、单选按钮、列表框或其它元素远离接收方;并然后给它们显现接收方的产品和OS特定UI;并将状态返回到发送方来增强在客户端和远程桌面或虚拟机之间的主题集成。这可实现更统一和透明的UI集成。此外,在一些实施方式中,国际文本可在交叉语言环境中被正确地接收或翻译成当前环境的语言。
在一些实施方式中,本文描述的方法可包括建立客户端设备和远程主机之间的连接,所述远程主机提供对在所述远程主机上远程地执行的一个或多个应用的访问权;通过所述客户端设备将关于在所述客户端设备上执行的第一应用的第一信息发送到所述远程主机;以及当所述第一应用满足一个或多个预定标准时,在与所述远程主机相关的用户界面内呈现基于所述第一应用的第一用户界面部件,所述第一用户界面部件以与所述远程主机相关的用户界面一致的外观呈现。
在一些实施方式中,第一用户界面部件包括在与所述远程主机相关的所述用户界面内直接呈现的应用窗口,而没有与所述客户端设备相关的介入应用窗口。
在一些实施方式中,所述方法还可包括隐藏由所述客户端设备产生的相应用户界面元素,以及将所述第一用户界面部件呈现在所述相应用户界面元素的位置上。
在一些实施方式中,所述一个或多个预定标准包括每个客户端托管的应用的预定已发布状态并且所述已发布状态选自包括本地应用、流式应用和远程应用的组。
在一些实施方式中,所述一个或多个预定标准包括预定的重要性级别,所述一个或多个预定标准包括所述第一用户界面部件是认证窗口、警告窗口和电池安时计之一,并且所述预定标准包括与多个远程虚拟桌面之一的关联。
在一些实施方式中,一个或多个存储计算机可执行指令的计算机可读介质,所述指令在由本地客户端设备执行时使所述本地客户端设备根据所述指令动作,所述指令包括识别对应于在所述客户端设备上执行的应用的本地真实窗口;通过虚拟桌面接收方应用来创建对应于所述本地真实窗口的影子窗口,其中所述影子窗口包括来自所述本地真实窗口的内容的复制;经由所述影子窗口接收输入;以及将所述输入代理到所述本地真实窗口。
在一些实施方式中,内容的所述复制包括来自所述本地真实窗口的所述内容的按比例缩放的版本并且所述按比例缩放的版本遵守所述虚拟桌面接收方应用的比例因子。
在一些实施方式中,所述识别包括跟踪所述本地应用窗口相对于所述虚拟桌面接收方应用的远程桌面窗口的窗口变更;以及检测与所述远程桌面窗口的边界交叉的所述本地应用窗口,并且所述指令还包括存储所述本地应用窗口的位置和尺寸;隐藏所述本地应用窗口;当所述影子窗口移动或调整尺寸时,处理对所述影子窗口的窗口变化;显现在所述远程桌面窗口的所述边界内的所述影子窗口的第一部分;以及隐藏不在所述远程桌面窗口的所述边界内的所述影子窗口的第二部分。
在一些实施方式中,所述指令还可包括检测所述影子窗口的位置何时完全处于所述远程桌面窗口的边界内;将所述本地应用窗口恢复到所述影子窗口的当前位置;以及消除所述影子窗口。
在一些实施方式中,所述隐藏所述本地应用窗口包括下列操作中的一个:改变所述本地应用窗口的透明特性、将所述本地应用窗口的Z轴次序改变为在所述远程桌面窗口之后、以及将所述本地应用窗口的位置改变为离屏。
在一些实施方式中,所述本地真实窗口对应于被防止在所述本地客户端设备上执行多个实例的本地应用;其中识别包括确定所述虚拟桌面接收方应用何时请求所述本地应用的第二实例;其中所述指令还包括在通过所述虚拟桌面接收方应用显现的远程桌面上显示所述影子窗口。
在一些实施方式中,所述本地真实窗口显现在第二远程桌面上并且所述本地真实窗口显现在所述本地客户端设备的本地桌面上。
在一些实施方式中,本文描述的方法可包括建立客户端设备和远程主机之间的连接,所述远程主机提供对在所述远程主机上远程地执行的一个或多个应用的访问权,其中所述客户端设备配置成具有对第一组一个或多个资源的访问权,且所述远程主机配置成具有对第二组一个或多个资源的访问权;通过所述客户端设备将关于在所述客户端设备上执行的第一应用的第一信息发送到所述远程主机;基于所述第一应用,在与所述远程主机相关的用户界面内呈现第一用户界面部件,所述第一用户界面部件以与所述远程主机相关的用户界面一致的外观呈现;以及当所述第一应用满足一个或多个预定标准时,给所述第一应用提供对所述第二组一个或多个资源的访问权。
在一些实施方式中,所述第二组一个或多个资源中的每个资源包括存储资源并且其中给所述第一应用提供对第二组一个或多个存储资源的访问权包括:枚举所述第二组一个或多个存储资源;将所述第二组一个或多个存储资源中的每个存储资源映射到所述客户端设备的本地可访问的存储标识符;以及基于相应的所映射的本地可访问存储标识符来重定向对所述第二组一个或多个存储资源中的每个存储资源的I/O请求。
在一些实施方式中,所述枚举由网络提供者执行,所述重定向由设备驱动器执行,所述映射由网络提供者和设备驱动器之一执行,并且所述映射和重定向由服务器消息块(SMB)应用层协议执行。
在一些实施方式中,所述第二组一个或多个资源中的每个资源包括打印资源,并且其中给所述第一应用提供对第二组一个或多个打印资源的访问权包括给所述客户端设备配置网络打印提供者、打印设备和一个或多个通用打印驱动器;将所述第二组一个或多个打印资源中的每个打印资源映射到所述客户端设备的本地可访问打印资源;以及基于相应的所映射的本地可访问打印资源来重定向对所述第二组一个或多个打印资源中的每个打印资源的打印请求。
在一些实施方式中,给所述第一应用提供对第二组一个或多个打印资源的访问权包括给所述远程主机配置通用打印服务器;给所述客户端设备配置通用打印客户端,其中所述通用打印客户端向所述客户端设备提供枚举所述第二组一个或多个打印资源中的一个或多个打印资源的网络打印机提供者服务;以及基于在打印请求中识别的所枚举的打印资源,将所述打印请求从所述客户端设备重定向到第二组打印资源中的一个打印资源。
在一些实施方式中,所述方法还可包括当所述第二组打印资源中的所述一个打印资源在防火墙后面时,通过代理将所述打印请求隧穿至所述第二组打印资源中的所述一个打印资源。
在附图和下面的描述中阐述了本发明的各种实施方式的细节。
附图说明
通过参考下面考虑了附图的描述,可获得对本发明及其优点的更完全的理解,附图中相似的参考数字通常指示相同的、在功能上类似的和/或在结构上类似的元件,且其中:
图1A是描绘包括与远程机器通信的本地机器的网络环境的实施方式的方框图;
图1B-1E是描绘对于本文描述的方法和系统有用的计算机的实施方式的方框图;
图2是描绘用于在本地机器上显示在本地机器上产生的图形数据和在远程机器上产生的图形数据的系统的一个实施方式的方框图;
图3A是描绘用于在本地机器上显示在本地机器上产生的图形数据和在远程机器上产生的图形数据的系统的另一实施方式的方框图;
图3B是用于枚举已发布应用程序并将应用程序加载请求重定向到本地机器的方法的实施方式的流程图;
图3C是用于以本地格式显示远程状态消息的方法的实施方式的流程图;
图4A是描绘在全屏远程桌面中的本地和远程应用程序窗口的集成的一个实施方式的方框图;以及
图4B是描绘在具有窗口式远程桌面的本地桌面中的本地和远程应用程序窗口的集成的另一实施方式的方框图。
图5示出传统登录状态指示器对话框(主机产生和主机呈现的对话框)。
图6示出根据例证性实施方式的登录状态指示器对话框(主机产生但由客户端呈现的对话框)。
图7是描绘在两个相邻的全屏远程桌面中的本地和远程应用程序窗口的集成的另一实施方式的方框图。
图8是用于掩蔽从远程到远程、远程到本地或本地到远程桌面的本地应用程序窗口转变的方法的实施方式的流程图。
图9是用于将按比例缩放的本地应用程序窗口集成到相称地按比例缩放的远程桌面窗口中的方法的实施方式的流程图。
图10是用于将单实例本地应用程序窗口集成到多个远程桌面的每个远程桌面中的方法的实施方式的流程图。
图11示出用于掩蔽从远程到远程、远程到本地或本地到远程桌面的本地应用程序窗口转变的方法。
详细描述
在下面的各种实施方式的描述中,在附图中标记了参考标记,它们形成附图的一部分,且在附图中以例证方式示出在其中可实施本发明的各种实施方式。应理解,可利用其它实施方式,且可做出结构和功能修改而不偏离本发明的范围。本发明能够有其它实施方式并能够以各种方式被实施或执行。此外,应理解,在本文使用的用语和术语是为了描述的目的,且不应被视为限制性的。更确切的,在本文使用的短语和术语应被给出其最广泛的解释和含义。“including(包括)”和“comprising(包含)”及其变形的使用意指包括其后列出的项目及其等效形式以及额外的项目及其等效形式。术语“安装”、“连接”、“耦合”、“定位”、“啮合”和类似术语的使用意指包括直接和间接安装、连接、耦合、定位和啮合。
本发明的一个或多个方面可体现在计算机可用或可读数据和/或计算机可执行指令中,例如在由一个或多个计算机或如本文所述的其它设备执行的一个或多个程序模块中。通常,程序模块包括当被计算机中的处理器或其它设备执行时执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、部件、数据结构等。模块可以用随后被编译用于执行的源代码编程语言编写或可以用脚本语言例如(但不限于)HTML或XML编写。计算机可执行指令可存储在计算机可读介质例如硬盘、光盘、可移动存储介质、固态存储器、RAM等上。如本领域中的技术人员将认识到的,在各种实施方式中,程序模块的功能可随意组合或分布。此外,功能可全部或部分地体现在固件或硬件等效形式例如集成电路、现场可编程门阵列(FPGA)等中。特定的数据结构可用于更有效地实现本发明的一个或多个方面,且这样的数据结构被设想在本文描述的计算机可执行指令和计算机可用数据的范围内。
为了阅读下面的各种实施方式的描述的目的,说明书的章节及其相应的内容的下面的描述可能是有帮助的:
第A章描述可能对实施本文描述的实施方式有用的网络环境和计算环境;以及
第B章描述用于集成本地和远程应用程序和桌面以提供无缝用户体验的系统和方法的例证性实施方式。
第C章描述使用虚拟通道的无缝窗口的特定例证性实施方式。
第D章描述使用反向无缝功能的例证性实施方式。
第E章描述根据例证性实施方式的接口配置细节。
第F章描述根据例证性实施方式的控制通道虚拟通道的协议。
第G章描述根据例证性实施方式的透明用户界面集成虚拟通道。
第A章:网络和计算环境
现在参考描绘了网络环境的实施方式的图1A。简要概括地讲,网络环境包括经由一个或多个网络104与一个或多个远程机器106a-106n(也总体上被称为服务器106或远程机器106)通信的一个或多个本地机器102a-102n(也总体上被称为本地机器102、客户端102、客户端节点102、客户端机器102、客户端计算机102、客户端设备102、端点102或端点节点102)。在一些实施方式中,本地机器102同时具有试图访问由服务器提供的资源的客户端节点和为其它客户端102a-102n提供对所托管的资源的访问的服务器的功能的能力。
虽然图1A示出了本地机器102和远程机器106之间的网络104,但是本地机器102和远程机器106可以在同一网络104上。网络104可以是局域网(LAN)例如公司互联网、城域网(MAN)或广域网(WAN)(例如互联网或万维网)。在一些实施方式中,在本地机器102和远程机器106之间有多个网络104。在这些实施方式中的一个实施方式中,网络104'(未示出)可以是专用网络,而网络104可以是公共网络。在这些实施方式中的另一个实施方式中,网络104可以是专用网络,而网络104'可以是公共网络。在又一实施方式中,网络104和104'可以都是专用网络。在再一实施方式中,网络104和104'可以都是公共网络。
网络104可以是任何类型和/或形式的网络,并可包括下列网络中的任一个:点对点网络、广播网络、广域网、局域网、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光网络)网络、SDH(同步数字体系)网络、无线网络和有线网络。在一些实施方式中,网络104可包括无线链路,例如红外通道或卫星频带。网络104的拓扑可以是总线、星形或环形网络拓扑。网络104可具有如本领域中的普通技术人员已知的、能够支持本文描述的操作的任何这样的网络拓扑。网络可包括利用用于在移动设备当中通信的任何一个或多个协议的移动电话网络,包括TDMA、CDMA、GSM、GPRS或UMTS。在一些实施方式中,可经由不同的协议传输不同类型的数据。在其它实施方式中,可经由不同的协议传输相同类型的数据。
在一些实施方式中,系统可包括多个逻辑分组的远程机器106。在这些实施方式的一个实施方式中,远程机器的逻辑分组可被称为服务器集群38。在这些实施方式的另一个实施方式中,远程机器106可以在地理上是分散的。在其它实施方式中,服务器集群38可作为单个实体被管理。在又一些其它实施方式中,服务器集群38包括多个服务器集群38。在每个服务器集群38内的远程机器106可以是异构的,即远程机器106中的一个或多个可根据一种类型的操作系统平台(例如都由华盛顿州雷德蒙德的微软公司制造的WINDOWS NT、WINDOWS 2003、WINDOWS 2008、WINDOWS 7和WINDOWS服务器 2008R2)来操作,而其它远程机器106中的一个或多个可根据另一类型的操作系统平台(例如Unix或Linux)来操作。
每个服务器集群38的远程机器106不需要实际上接近在同一服务器集群38中的另一远程机器106。因此,被逻辑地分组为服务器集群38的这组远程机器106可使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,服务器集群38可包括实际上位于不同的大陆或大陆、国家、州、城市、校园或房间的不同区域中的远程机器106。如果使用局域网(LAN)连接或某种形式的直接连接来连接远程机器106,则在服务器集群38中的远程机器106之间的数据传输速度可增加。
远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、器具、网络器具、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。在一些实施方式中,远程机器106提供远程认证拨入用户服务,并被称为RADIUS服务器。在其它实施方式中,远程机器106可具有应用服务器或主应用服务器的功能的能力。在又一些其它实施方式中,远程机器106是刀片服务器。在再一些其它实施方式中,远程机器106执行向用户或客户端计算机102提供对计算环境的访问的虚拟机。
在一个实施方式中,远程机器106可包括活动目录。远程机器106可以是应用程序加速器具。对于远程机器106是应用程序加速器具的实施方式,远程机器106可提供包括防火墙功能、应用程序防火墙功能或负载平衡功能的功能。在一些实施方式中,远程机器106包括器具,例如由加利福尼亚州圣约瑟的Citrix应用网络公司、或加利福尼亚州的芒廷维尤的Silver Peak系统公司、或加利福尼亚州旧金山的Riverbed技术公司、或华盛顿州西雅图的F5网络公司、或加利福尼亚州桑尼维尔的Juniper网络公司制造的系列器具中的一个。
在一些实施方式中,远程机器106代表本地机器102的用户执行应用程序。在其它实施方式中,远程机器106执行提供执行会话的虚拟机,在该执行会话内代表本地机器102的用户执行应用程序。在这些实施方式的一个实施方式中,执行会话是所托管的桌面会话。在这些实施方式的另一个实施方式中,执行会话提供对计算环境的访问,计算环境可包括应用程序、多个应用程序、桌面应用程序和一个或多个应用程序可在其中执行的桌面会话中的一个或多个。
在一些实施方式中,本地机器102与远程机器106通信。在一个实施方式中,本地机器102直接与服务器集群38中的远程机器106之一通信。在另一实施方式中,本地机器102执行程序邻近应用程序以与服务器集群38中的远程机器106通信。在又一实施方式中,远程机器106提供主节点的功能。在一些实施方式中,本地机器102通过网络104与服务器集群38中的远程机器106通信。例如,本地机器102可通过网络104请求由服务器集群38中的远程机器106a-106n托管的各种应用程序的执行,并接收应用程序执行的结果的输出用于显示。在一些实施方式中,只有主节点提供识别和提供与托管所请求的应用程序的远程机器106b相关的地址信息所需的功能。
在一个实施方式中,远程机器106提供web服务器的功能。在另一实施方式中,远程机器106a从本地机器102接收请求,将请求转发到第二远程机器106b,并使用对来自远程机器106b的请求的响应来响应本地机器102的请求。在又一实施方式中,远程机器106a获取本地机器102可采用的应用程序的细目和与托管由应用程序的细目识别的应用程序的远程机器106b相关的地址信息。在再一实施方式中,远程机器106使用web接口向本地机器102呈送对请求的响应。在一个实施方式中,本地机器102与远程机器106直接通信以访问所识别的应用程序。在另一实施方式中,本地机器102接收通过在远程机器106上识别出的应用程序的执行而产生的输出数据(例如显示数据)。
在一些实施方式中,远程机器106或服务器集群38可以运行一个或多个应用程序,例如提供瘦客户端计算的应用程序或远程显示显现应用程序。在一个实施方式中,远程机器106或服务器集群38作为应用程序执行Citrix系统公司的CITRIX ACCESS SUITE的任何部分,例如METAFRAME或CITRIX PRESENTATION服务器产品、由Citrix系统公司制造的下列产品中的任一产品:CITRIX XENAPP、CITRIX XENDESKTOP、CITRIX ACCESS GATEWAY、和/或由微软公司制造的任何MICROSOFT WINDOWS终端服务。在另一实施方式中,应用程序是由佛罗里达州罗德岱堡的Citrix系统公司开发的ICA客户端。在又一实施方式中,远程机器106可运行应用程序,其例如可以是提供电子邮件服务的应用服务器,例如由华盛顿州雷德蒙的微软公司制造的MICROSOFT EXCHANGE、web或互联网服务器、或桌面共享服务器、或协作服务器。在再一实施方式中,任何应用程序都可包括任何类型的所托管的服务或产品,例如由加利福尼亚州圣塔巴巴拉的Citrix在线部门公司提供的GOTOMEETING、由加利福尼亚州圣塔克拉拉的WebEx公司提供的WEBEX或由华盛顿州雷德蒙的微软公司提供的MicrosoftOffice LIVE MEETING。
本地机器102可执行、操作或以其他方式提供应用程序,其可以是任何类型和/或形式的软件、程序或可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户端、客户端-服务器应用程序、瘦客户端计算客户端、ActiveX控件或Java小程序或能够在本地机器102上执行的任何其它类型和/或形式的可执行指令。在一些实施方式中,应用程序可以是代表本地机器102在远程机器106上执行的基于服务器的或基于远程的应用程序。在其它实施方式中,远程机器106可使用任何瘦客户端协议、表示层协议或远程显示协议来向本地机器102显示输出,例如,所述协议是由佛罗里达州罗德岱堡的Citrix系统公司制造的独立计算体系结构(ICA)协议、由华盛顿州雷德蒙的微软公司制造的远程桌面协议(RDP)、XII协议、由AT&T贝尔实验室制造的虚拟网络计算(VNC)协议、由美国加利福尼亚州桑尼维尔和以色列Raanana的Qumranet公司制造的SPICE协议、由加利福尼亚州米尔皮塔斯的VESA制造的Net2Display协议、由B.C.伯纳比的Teradici公司制造的IP上PC协议、由加利福尼亚州圣约瑟的Wyse技术公司制造的TCX协议、由纽约州纽约市的哥伦比亚大学开发的THINC协议或由马萨诸塞州切姆斯德的Destone公司制造的Virtual-D协议。应用程序可使用任何类型的协议,且它可以是例如HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在又一些其它实施方式中,应用程序包括与互联网上语音协议(VoIP)通信(例如软IP电话)有关的任何类型的软件。在另外的实施方式中,应用程序包括与实时数据通信有关的任何应用程序,例如用于流式传送视频和/或音频的应用程序。
本地机器102和远程机器106可被部署为任何类型和形式的计算设备(例如,能够在任何类型和形式的网络上通信并执行本文描述的操作的计算机、网络设备或器具)和/或在任何类型和形式的计算设备(例如,能够在任何类型和形式的网络上通信并执行本文描述的操作的计算机、网络设备或器具)上被执行。图1B和1C描绘对实施本地机器102或远程机器106的实施方式有用的计算设备100的方框图。如图1B和1C所示,每个计算设备100包括中央处理单元121和主存储器单元122。如图1B所示,计算设备100可包括存储设备128、安装设备116、网络接口118、I/O控制器123、显示设备124a-n、键盘126和指示设备127,例如鼠标。存储设备128可没有限制地包括操作系统、软件和客户端代理120。如图1C所示,每个计算设备100还可包括额外的操作元件,例如存储器端口103、桥170、一个或多个输入/输出设备130a-130n(总体上使用参考数字130来表示)、以及与中央处理单元121通信的高速缓冲存储器140。
中央处理单元121是响应并处理从主存储器单元122取出的指令的任何逻辑电路。在很多实施方式中,中央处理单元121由微处理器单元提供,例如由加利福尼亚州芒廷维尤的因特尔公司制造的微处理器、由伊利诺斯州绍姆堡的摩托罗拉公司制造的微处理器、由加利福尼亚州圣塔克拉拉的Transmeta公司制造的微处理器、RS/6000处理器、由纽约州怀特普来恩斯的国际商业机器公司制造的处理器或由加利福尼亚州桑尼维尔的高级微设备公司制造的处理器提供。计算设备100可基于这些处理器中的任一个或基于能够如本文所述的操作的任何其它处理器。
主存储器单元122可以是能够存储数据并允许任何存储位置直接由微处理器121访问的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速翻页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接RambusDRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可基于上面描述的存储器芯片中的任一种或基于能够如本文所述操作的任何其它可用的存储器芯片。在图1B所示的实施方式中,处理器121经由系统总线150与主存储器122通信(在下面更详细地描述)。图1C描绘计算设备100的实施方式,其中处理器经由存储器端口103直接与主存储器122通信。例如在图1C中,主存储器122可以是DRDRAM。
图1C描绘了一个实施方式,其中主处理器121经由有时被称为后侧总线的次级总线直接与高速缓冲存储器140通信。在其它实施方式中,主处理器121使用系统总线150与高速缓冲存储器140通信。高速缓冲存储器140一般具有比主存储器122更快的响应时间,且一般由SRAM、BSRAM或EDRAM提供。在图1B所示的实施方式中,处理器121经由本地系统总线150与I/O设备130通信。各种总线可用于将中央处理单元121连接到任何I/O设备130,包括VESAVL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于其中的I/O设备是视频显示器124的实施方式,处理器121可使用高级图形端口(AGP)来与显示器124通信。图1C描绘计算机100的实施方式,其中主处理器121经由HYPERTRANSPORT、RAPIDIO或INFINIBAND通信技术直接与I/O设备130b通信。图1C还描绘了一个实施方式,其中本地总线和直接通信混合:处理器121使用本地互连总线与I/O设备130a通信,同时直接与I/O设备130b通信。
各种各样的I/O设备130a-130n可存在于计算设备100中。输入设备包括键盘、鼠标、轨迹垫、轨迹球、麦克风和绘图板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。如图1B所示的I/O控制器123可控制I/O设备。I/O控制器可控制一个或多个I/O设备,例如键盘126和指示设备127(例如鼠标或光笔)。此外,I/O设备还可为计算设备100提供存储和/或安装介质116。在又一些其它实施方式中,计算设备100可提供USB连接(未示出)以接收手持USB存储设备,例如由加利福尼亚州Los Alamitos的Twintech工业公司制造的设备的USB闪存驱动器系列。
再次参考图1B,计算设备100可支持任何适当的安装设备116,例如用于接纳软盘例如3.5英寸、5.25英寸盘或ZIP盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB设备、硬盘驱动器或适合于安装软件和程序的任何其它设备。计算设备100还可包括用于存储操作系统和其它有关软件并用于存储应用程序软件程序(例如与客户端代理120有关的任何程序)的存储设备,例如一个或多个硬盘驱动器或独立磁盘冗余阵列。可选地,任何安装设备116也可用作存储设备。此外,操作系统和软件可从可启动介质(例如可启动CD例如KNOPPIX、作为来自knoppix.net的GNU/Linux分布可用的GNU/Linux的可启动CD)运行。
此外,计算设备100可包括网络接口118,以通过各种连接与网络104连接,所述连接包括但不限于标准电话线、LAN或WAN链路(例如802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(例如ISDN、帧中继、ATM、千兆位以太网、SONET上的以太网)、无线连接或上述连接中的任何一种或全部的某种组合。可使用各种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、以太网、ARCNET、SONET、SDH、光纤分布式数据接口(FDDI)、RS232、IEEE 802.11、IEEE802.11a、IEEE 802.11b、IEEE 802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施方式中,计算设备100经由任何类型和/或形式的网关或隧穿协议例如安全套接字层(SSL)或传输层安全(TLS)或由佛罗里达州罗德岱堡的Citrix系统公司制造的Citrix网关协议与其它计算设备100'通信。网络接口118可包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合于通过接口将计算设备100连接到能够通信并执行本文描述的操作的任何类型的网络的任何其它设备。
在一些实施方式中,计算设备100可包括或连接到多个显示设备124a-124n,每个显示设备可具有相同或不同的类型和/或形式。因此,任何I/O设备130a-130n和/或I/O控制器123可包括任何类型和/或形式的适当硬件、软件或硬件和软件的组合以通过计算设备100支持、实现或提供多个显示设备124a-124n的连接和使用。例如,计算设备100可包括任何类型和/或形式的视频适配器、视频卡、驱动器和/或库以通过接口连接、通信、连接或以其他方式使用显示设备124a-124n。在一个实施方式中,视频适配器可包括多个连接器以通过接口连接到多个显示设备124a-124n。在其它实施方式中,计算设备100可包括多个视频适配器,每个视频适配器连接到一个或多个显示设备124a-124n。在一些实施方式中,计算设备100的操作系统的任何部分可配置成使用多个显示设备124a-124n。在其它实施方式中,一个或多个显示设备124a-124n可由例如经由网络连接到计算设备100的一个或多个其它计算设备(例如设备100a和100b)提供。这些实施方式可包括设计和构造成使用另一计算机的显示设备作为计算设备100的第二显示设备124a的任何类型的软件。本领域中的普通技术人员将认识到和领会计算设备100可配置成具有多个显示设备124a-124n的各种方法和各种实施方式。
在另外的实施方式中,I/O设备130可以是在系统总线150和外部通信总线(例如USB总线、苹果桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附着小计算机系统接口总线)之间的桥。
在图1B和1C中描绘的种类的计算设备100一般在操作系统的控制下操作,操作系统控制任务的调度和对系统资源的访问。计算设备100可以运行任何操作系统,例如MICROSOFT WINDOWS操作系统的任何版本、Unix和Linux操作系统的不同发布版本、Macintosh计算机的MAC OS的任何版本、任何嵌入式操作系统、任何实时操作系统、任何开源操作系统、任何专用操作系统、移动计算设备的任何操作系统、或能够在计算设备上运行并执行本文描述的操作的任何其它操作系统。一般的操作系统包括但不限于都由华盛顿州雷德蒙的微软公司制造的WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWSNT 3.51、WINDOWS NT 4.0、WINDOWS 7、WINDOWS CE、WINDOWS XP和WINDOWS VISTA、由加利福尼亚州库珀蒂诺的苹果公司制造的MAC OS、由纽约州阿曼克的国际商业机器公司制造的OS/2、由犹他州盐湖城的Caldera公司发行的免费可得到的操作系统或任何类型和/或形式的Unix操作系统等。
计算设备100可以是任何工作站、台式计算机、膝上型计算机或笔记本计算机、服务器、手持计算机、移动电话或其它便携式远程通信设备、媒体播放设备、游戏系统、移动计算设备、或能够通信并具有足够的处理器能力和存储器大小来执行本文描述的操作的任何其它类型和/或形式的计算、远程通信或媒体设备。例如,计算设备100可包括由加利福尼亚州库比蒂诺的苹果公司制造的IPOD系列设备中的设备、由日本东京的索尼公司制造的PLAYSTATION 2、PLAYSTATION 3或PERSONAL PLAYSTATION PORTABLE(PSP)设备、由日本京都的Nintendo有限公司制造的NINTENDO DS、NINTENDO GAMEBOY、NINTENDO GAMEBOYADVANCED或NINTENDO REVOLUTION设备、或由华盛顿州雷德蒙的微软公司制造的XBOX或XBOX 360设备。
在一些实施方式中,计算设备100可具有不同的处理器、操作系统和与设备一致的输入设备。例如,在一个实施方式中,计算设备100是由Palm公司制造的TREO 180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或Pro智能电话。在这些实施方式的一些中,TREO智能电话在PalmOS操作系统的控制下操作并包括手写笔输入设备以及五向引导器设备。
在其它实施方式中,计算设备100是移动设备,例如启用JAVA的蜂窝电话或个人数字助理(PDA),例如都由伊利诺斯州绍姆堡的摩托罗拉公司制造的i55sr、i58sr、i85s、i88s、i90c、i95cl、i335、i365、i570、I576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或im1100、由日本京都的Kyocera制造的6035或7135、或由韩国首尔的三星电子有限公司制造的i300或i330。在一些实施方式中,计算设备100是由芬兰的诺基亚公司或由瑞典伦德的索尼爱立信移动通信AB制造的移动设备。
在又一些其它实施方式中,计算设备100是黑莓手持或智能电话,例如由ResearchIn Motion有限公司制造的设备,包括Blackberry 7100系列、8700系列、7700系列、7200系列、Blackberry 7520、Blackberry PEARL 8100、8700系列、8800系列、Blackberry Storm、Blackberry Bold、Blackberry Curve8900和Blackberry Pearl Flip。在再一些其它实施方式中,计算设备100是智能电话、口袋式PC、口袋式PC电话、或支持Microsoft Windows移动软件的其它手持移动设备。而且,计算设备100可以是任何工作站、台式计算机、膝上型计算机或笔记本计算机、服务器、手持计算机、移动电话、或能够通信并具有足够的处理器能力和存储器大小来执行本文描述的操作的任何其它类型和/或形式的计算或远程通信设备。
在一些实施方式中,计算设备100是数字音频播放器。在这些实施方式的一个中,计算设备100是数字音频播放器,例如由加利福尼亚州库珀蒂诺的苹果公司制造的AppleIPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE系列设备。在这些实施方式的另一个中,数字音频播放器可以同时起便携式媒体播放器和大容量存储设备的作用。在其它实施方式中,计算设备100是数字音频播放器,例如由新泽西州Ridgefield Park的三星电子美国公司制造的数字音频播放器选择MP3播放器、或由伊利诺斯州绍姆堡的摩托罗拉公司制造的Motorola m500或m25数字音频播放器。在又一些其它实施方式中,计算设备100是便携式媒体播放器,例如由Creative技术有限公司制造的Zen Vision W、Zen Vision系列、Zen便携式媒体中心设备或Mp3播放器的数字MP3系列。在再一些其它实施方式中,计算设备100是支持包括但不限于MP3、WAV、M4A/AAC、WMA Protected AAC、AIFF、可闻audiobook、Apple无损音频文件格式和.mov、.m4v及.mp4MPEG-4(H.264/MPEG-4AVC)视频文件格式的文件格式的便携式媒体播放器或数字音频播放器。
在一些实施方式中,计算设备100包括设备的组合,例如与数字音频播放器或便携式媒体播放器组合的移动电话。在这些实施方式的一个中,计算设备100是组合数字音频播放器和移动电话的Motorola RAZR或Motorola ROKR系列。在这些实施方式的另一个中,计算设备100是在由加利福尼亚州库珀蒂诺的苹果公司制造iPhone智能电话系列中的设备。
在一个实施方式中,计算设备102a可从远程机器106请求资源,同时向客户端102b提供远程机器106的功能。在这样的实施方式中,计算设备102a可相对于从远程机器106(其可被称为服务器)接收的数据被称为客户端,且计算设备102a可相对于第二客户端102b被称为服务器。在另一实施方式中,客户端102可代表客户端102的用户从远程机器106请求资源。
如图1D所示,计算设备100可包括多个处理器,并可提供用于同时执行多个指令或执行关于一个以上数据的一个指令的功能。在一些实施方式中,计算设备100可包括具有一个或多个核的并行处理器。在这些实施方式的一个中,计算设备100是共享存储器并行设备,其具有多个处理器和/或多个处理器核,并以单个全局地址空间的方式访问所有可用的存储器。在这些实施方式的另一个中,计算设备100是具有多个处理器的分布式存储器并行设备,每个处理器只访问本地存储器。在这些实施方式的又一个中,计算设备100同时具有被共享的一些存储器和可只由特定的处理器或处理器的子集访问的一些处理器。在这些实施方式的再一个中,例如多核微处理器的计算设备100将两个或多于两个独立处理器组合到常常是单集成电路(IC)的单封装中。在这些实施方式的又一个中,计算设备100包括具有CELL BROADBAND ENGINE结构并包括高能力处理器元件和多个协作处理元件的芯片,功率处理器元件和多个协作处理元件由内部高速总线链接在一起,内部高速总线可以被称为元件互连总线。
在一些实施方式中,处理器提供同时对多个数据执行单个指令(SIMD)的功能。在其它实施方式中,处理器提供同时对多个数据执行多个指令(MIMD)的功能。在又一些其它实施方式中,处理器可在单个设备中使用SIMD核和MIMD核的任何组合。
在一些实施方式中,计算设备100可包括图形处理单元。在图1E中描绘的这些实施方式的一个中,计算设备100包括至少一个中央处理单元121和至少一个图形处理单元。在这些实施方式的另一个中,计算设备100包括至少一个并行处理单元121和至少一个图形处理单元。在这些实施方式的又一个中,计算设备100包括任何类型的多个处理单元,多个处理器单元中的一个包括图形处理单元。
在一个实施方式中,资源可以是程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或使本地计算设备102的用户可使用的其它资源。资源可经由多种访问方法被分发到本地计算设备102,包括但不限于直接在本地计算设备102上的常规安装、经由用于应用程序流式传送的方法分发到本地计算设备102、向本地计算设备102分发通过在第三计算设备106b上的资源的执行而产生并经由表示层协议传递到本地计算设备102的输出数据、向本地计算设备102分发通过经由在远程计算设备106上执行的虚拟机的资源执行或来自连接到本地计算设备102的可移动存储设备例如USB设备的执行或经由在本地计算设备102上执行并产生输出数据的虚拟机的执行而产生的输出数据。在一些实施方式中,本地计算设备102将通过资源的执行而产生的输出数据传输到另一客户端计算设备102b。
在一些实施方式中,本地计算设备102的用户连接到远程计算设备106并察看在远程桌面环境的本地版本的本地计算设备102上的显示,其中包括在远程计算设备106上产生的多个数据对象。在这些实施方式的一个中,至少一个资源由远程计算设备106(或由第二远程计算设备106b)提供给用户并在远程桌面环境中显示。然而,可以存在通过选择或由于策略或技术要求而由用户在本地计算设备102上执行的资源。在这些实施方式的另一个中,本地计算设备102的用户将更喜欢提供对用户可采用的所有资源的访问的集成桌面环境,而不是由单独的机器提供的资源的单独桌面环境。例如,用户可在令人困惑和难以有成果地使用的多个图形显示之间找到引导。或者,用户可能希望使用由一个机器所提供的一个应用程序结合由另一机器提供的另一资源而产生的数据。在这些实施方式的又一个中,可通过与集成远程资源和本地资源的显示的远程桌面环境交互来控制对资源的执行、窗口移动、应用程序最小化/最大化、调整窗口尺寸和执行资源的终止的请求。在这些实施方式的又一个中,在单个桌面环境中示出应用程序或经由集成桌面环境可访问的资源,包括在本地计算设备102上执行的那些资源和在远程计算设备106上执行的那些资源。
在一个实施方式中,来自远程计算设备106的数据对象集成到由本地计算设备102产生的桌面环境中。在另一实施方式中,远程计算环境106维持集成桌面。在又一实施方式中,本地计算设备102维持集成桌面。
在一些实施方式中,显示单个远程桌面环境204。在这些实施方式的一个中,远程桌面环境204被显示为全屏桌面。在其它实施方式中,显示多个远程桌面环境204。在这些实施方式的一个中,在一个或多个显示设备124上以非全屏模式显示一个或多个远程桌面环境204。在这些实施方式的另一个中,在单独的显示设备上以全屏模式显示远程桌面环境。在这些实施方式的又一个中,在一个或多个显示设备124上以全屏模式显示一个或多个远程桌面环境。
第B章:用于集成本地和远程应用的系统和方法及提供无缝用户体验的桌面
现在参考图2,方框图描绘用于在本地机器所产生并显示的用户界面元素中显示在本地机器上产生并显示的图形数据的标识、以及在远程机器上产生并在本地机器上显示的图形数据的标识的系统的一个实施方式。在简要概括地讲,系统200包括本地计算设备102上执行的第一代理202、在远程计算设备106上执行的第二代理204、在远程计算设备106上执行的第一进程206和在本地计算设备102上执行的第二进程218。第一代理202从第二代理204接收第一进程206的标识符和由第一进程206产生的第一窗口207的标识。第一代理202使第二窗口212与第一进程206的标识符关联,第二窗口212在本地机器102上由第一代理202产生。响应于第二窗口212与第一进程206的标识符的关联,在本地机器102上执行的壳214在任务栏按钮组230中显示以下内容:i)第二窗口212的标识;以及ii)第三窗口216的标识,第三窗口216由第二进程218产生并显示在本地机器102上。
在一些实施方式中,在计算设备上执行的进程(例如在远程计算设备106上执行的第一进程206或在本地计算设备102上执行的第二进程218)产生输出数据和窗口属性数据,并与在计算设备上执行的壳通信以根据窗口属性数据来显示输出数据。在一些实施方式中,这个第一进程206也可被称为远程应用程序。在其它实施方式中,第一代理202从第二代理204接收图形数据和窗口属性数据,并在包括多个数据对象的桌面环境中控制(direct)所接收的图形或窗口属性数据的显示。在这些实施方式的一个中,数据对象是在桌面环境中显示的窗口。在这些实施方式的另一个中,数据对象是存储属性数据的数据结构,且在桌面环境中可以有或可以没有相关的可见表示。在这些实施方式的又一个中,数据对象是存储与用户界面元素相关的数据(视觉状态、相关功能的标识、图形数据的位置、标题栏内容等)的数据结构,且窗口是用户界面元素的图形表示。在这些实施方式的再一个中,在机器上执行的壳214在桌面环境中提供用户界面元素的显示。这个壳可被不同地称为查找器、图形用户界面(GUI)、窗口或X窗口界面、或任何其它类似的术语。在这些实施方式的另一个中,壳214根据与数据对象相关的属性数据显示与数据对象相关的图形数据。在这些实施方式的又一个中,第一代理202与壳214通信以控制远程产生的数据的本地显示。
现在参考图2,且更详细地,第一代理202在本地计算设备102上执行。虽然被称为第一代理,但在一些实施方式中,第一代理202可被称为本地客户端、本地客户端进程、本地客户端代理或任何其它类似的术语。在一个实施方式中,本地计算设备是如上面关于图1A-1E描述的计算设备。在另一实施方式中,本地计算设备是客户端设备102,其连接到服务器106以访问本地计算设备102的用户可利用的一个或多个资源。在又一实施方式中,第一代理202是表示层协议代理的一部分。在再一实施方式中,第一代理202与表示层协议代理通信。
第二代理204在远程计算设备106上执行。如同第一代理一样,在一些实施方式中,第二代理可被称为远程代理、远程客户端、远程进程、服务器代理、服务器进程或任何其它类似的术语。在一个实施方式中,远程计算设备是如上面关于图1A-1E描述的计算设备。在另一实施方式中,第二代理204是表示层协议代理的一部分。在又一实施方式中,第二代理204与表示层协议代理通信。
在一些实施方式中,第一代理202包括用于从第二代理204接收与在远程机器106上产生的桌面环境相关的数据的接收器。在这些实施方式的一个中,例如第一代理202包括接收器(其可作为例子被提供为动态链接库部件),其从第二代理204接收窗口创建和窗口进程数据用于在显示在远程机器106上产生的窗口的本地版本时使用。在一些实施方式中,第一代理202可通过一个或多个连接接收数据(例如输出数据208和窗口属性数据210)。在一个实施方式中,一个或多个连接可被复用到一个或多个虚拟通道中。这样的复用可允许不同的虚拟通道具有不同的带宽限制或不同的优先级,同时仍然是单个传输层连接的部分。这可减小所需的传输层开销并提供SSL或VPN隧道容量,同时仍然允许第二代理204和第一代理202之间的单通道压缩、缓冲和通信优先级的管理。在一些实施方式中,这样的虚拟通道可专用于特定的内容类型或目的。例如,第一高优先级虚拟通道可专用于输出数据208的传输,而第二低优先级虚拟隧道可专用于任务栏缩略图的传输,这将在下面更详细讨论。在一些实施方式中,虚拟通道可以被打开或关闭,而不需要废除或重新建立传输层连接,它们通过该传输层连接进行通信。
在一个实施方式中,壳214是向计算设备的用户提供用户界面的软件。在一个实施方式中,壳可以用第三方壳补充或代替。在MICROSOFT WINDOWS中,默认壳是浏览器,其确定桌面的配置(例如任务栏、通知区域、开始菜单等)。虽然被称为壳,但如上面讨论的,壳也可被称为图形用户界面或GUI、查找器、浏览器、窗口界面或任何其它类似的术语。
在一些实施方式中,第一代理202包括用于与壳214通信以修改桌面的显示的功能。在这些实施方式的一个中,第一代理202包括将指令发送到产生并维持在桌面环境中的数据的显示的操作系统中的部件的发送器。在这些实施方式的另一个中,第一代理202包括给第一代理202提供用于存储窗口属性数据或将显示指令传输到操作系统的功能的部件;例如第一代理202可包括用于维持或修改任务栏数据的动态链接库部件。在一些实施方式中,发送器与在第一代理202中的接收器通信,接收器从第二代理204接收窗口属性数据210和输出数据208。在这些实施方式的一个中,在第一代理202内的接收器从第二代理204接收数据并将所接收的数据转发到发送器,发送器基于所转发的数据将指令发送到操作系统。在其它实施方式中,第一代理202包括用于存储从第二代理204接收的数据(例如作为例子的窗口属性数据)的部件。
在一些实施方式中,窗口属性数据210或输出数据208可包括表示第一窗口207或第一进程206的图标。在另一实施方式中,窗口属性数据210或输出数据208可包括产生窗口的应用程序或进程的图标。在很多实施方式中,第一代理202可接收第一进程206或第一窗口207的图标或图标的位图,用于在任务栏226或其它用户界面元素内显示为窗口属性数据210的本地显示。因此,当任务栏按钮组与本地计算设备102的用户交互时,任务栏按钮组可显示所接收的包括第二窗口212、第一窗口207或第一进程206的标题的图标和/或文本。简要参考前文,在图4A中示出一个这样的实施方式的示例屏幕截图,图4A示出远程进程的记事本图标的显示。如图4A所示,在这些实施方式中,任务栏按钮组可显示远程应用程序的图标和本地应用程序的缩略图。
回头参考图2,在另一实施方式中,第一代理202可接收第一窗口的输出数据的静态屏幕截图或位图,用于在任务栏按钮组中显示。在一些实施方式中,这样的屏幕截图或位图可按比例减小。例如,输出数据可包括400x 400像素的窗口,但第二代理204可发送40x40像素的缩略图用于在任务栏按钮组中显示。这可减小带宽要求。这样的静态屏幕截图可被周期性地发送或对用户命令做出响应时发送。例如,在一个实施方式中,第一代理202可检测与任务栏按钮组的用户交互、与3D或翻转3D界面或alt-tab或类似命令的交互。响应于这样的交互的检测,在一个实施方式中,第一代理202可请求窗口的输出数据208的刷新或请求输出数据208的重画,接收这样的刷新或重画的输出数据208,并可在任务栏按钮组或其它用户界面元素中显示最近接收的输出数据。在另一实施方式中,响应于交互的检测,第一代理202可请求如上面讨论的输出数据的新的、重画的或刷新的静态缩略图。
在一些实施方式中,任务栏226可包括用于显示应用程序图标或缩略图的功能。在一些实施方式中,这样的缩略图可根据本地窗口的内容由任务栏226呈现,而在其它实施方式中,缩略图图像可由另一元素(例如壳214或本地桌面环境220)产生、或可从存储器元件接收。类似于这后一选择,应用程序图标可作为位图存储在存储器元件中,且任务栏226可从存储器元件取回应用程序图标用于显示。因此,在一个实施方式中,任务栏226可包括用于从存储器元件取回图像或位图并显示图像或位图的功能,而不知图像或位图是图标还是缩略图。以另一方式描述,可存储窗口输出的缩略图,如同它是应用程序图标一样,且任务栏226可用于显示缩略图,如同它是任何其它应用程序图标一样。这可允许缩略图在只有显示应用程序图标的能力的传统系统上显示。
利用任务栏的操作系统的一些版本可使用一个或多个标识符来将任务栏中的按钮分组。例如,由微软公司制造的Windows 7使用为每个窗口设置的AppID来确定如何将对应于每个窗口的任务栏按钮分组。在一些实施方式中,这些AppID可由应用程序制造商明确设置。例如,Microsoft Word的AppID可由Microsoft明确设置。当操作系统检测到具有对应于Microsoft Word的AppID的两个任务栏按钮时,操作系统可将这些按钮分组成单个任务栏按钮组。在其它实施方式中,AppID可被隐含设置。一种这样的方法涉及创建窗口的进程的文件系统路径。例如,如果应用程序在C:\Program Files\My Company\MyApplication.exe处,则系统可将这个文件系统路径转换成字符串以用作AppID。如果应用程序产生多个窗口,则它们每个将具有相同的AppID,并可被适当地分组。
操作系统的一些其它版本仅仅使用文件系统路径用于任务栏按钮分组。例如,同样是微软公司的Windows XP或Windows Vista仅使用上面讨论的后一种文件系统路径的方法来确定任务栏按钮分组。这对来自远程应用程序的应用程序输出的本地显示呈现两个困难。第一个困难是,最初产生窗口的远程应用程序可能具有与本地客户端不同的文件系统路径,特别是在使用服务器侧虚拟化技术时更为明显。第二个困难是,本地客户端可产生用于应用程序输出的窗口,且因此操作系统可能将到本地客户端的路径考虑为正确的文件系统路径。因此,如果本地客户端为两个不同的远程应用程序产生两个窗口,则操作系统可将它们解释为都与本地客户端应用程序相关,并从而在同一任务栏组中显现它们,而不考虑它们代表两个不同的远程应用程序。
为了避免这种问题,在一些实施方式中,远程应用程序可发送包括应用程序的文件系统路径的远程窗口配置信息。本地客户端可通过用预先确定的本地路径代替路径的一部分来修改这个文件系统路径。例如,远程应用程序可位于D:\Application服务器\RemoteApplications\Program Files\My Company\My Application.exe处。当接收到时,本地客户端可修改这个路径以用例如表示本地系统驱动器的全局唯一的标识符和到相应的程序文件夹的路径代替“Program Files”之前的第一部分。这个新文件系统路径可因此包括本地路径和远程路径的组合,并因此可被称为混合文件系统路径。
简要参考任务栏分组的技术细节,不同的操作系统使用用于将任务栏分组的不同机制。例如,在很多实施方式中,上面讨论的Windows 7通过与组的关联允许任务栏按钮的任意分组。然而,Windows XP和Vista等其它操作系统使用代表任务栏的列表,其带有被标记为按钮组的条目分离代表按钮的条目。例如,如果列表包括“组1、按钮A、组2、按钮B、组3、按钮C、按钮D、按钮E”,则将有三个组,前两组每个有一个按钮,而第三组有三个按钮。默认地,系统可配置成隐藏起来以避免在任务栏按钮组中以一个按钮显示,并隐藏具有多个按钮的组中的按钮。通过使这些隐藏的条目不被示出,上面的任务条按钮组将显示为“按钮A、按钮B、组3”,其中组3的按钮代表三个活动窗口。
在一些实施方式中,可通过编辑这个列表或改变按钮和组的关联来执行将按钮从一个组移动到另一组。在一个实施方式中,本地客户端可产生用于应用程序输出的新窗口。在一些实施方式中,这个新窗口可被创建为对应于本地客户端的按钮组的部分。本地客户端可使用上面讨论的任何方法确定新窗口的任务栏按钮组标识符。在一些实施方式中,本地客户端可搜索任务栏以确定包括类似标识符的现有的按钮组是否存在。例如,如果用于记事本应用程序的按钮组已经存在且新窗口具有对应于记事本应用程序的任务栏按钮组标识符,则本地客户端可确定正确的按钮组已经存在。本地客户端可接着将任务栏列表中的这个按钮条目移动到按钮组内。如果本地客户端确定没有正确的按钮组存在(例如,如果没有相应的应用程序正在本地运行或如果没有为同样的远程应用程序的另一窗口创建按钮组),则本地客户端可基于任务栏按钮组标识符创建在任务栏列表中的新按钮组,并将对应于新窗口的按钮移动到这个最新创建的按钮组。
在本地应用程序和远程应用程序及桌面之间的透明UI集成
在一些实施方式中,集中地管理、配置和提供或甚至发布将在本地客户端上执行而不是经由远程会话执行的应用程序可能是合乎需要的。这允许用户利用本地处理能力,同时仍然允许管理员集中地管理许可和配置。例如,管理员可配置并发布可在本地计算机上执行以利用本地处理器而不引起网络延迟的CAD应用程序。在一些实施方式中,发布可由管理控制台UI、图形UI或低级软件开发工具包(SDK)执行。
在一些实施方式中,已发布应用程序管理系统可包括用于加载和管理已发布应用程序的命令行界面。这样的命令行界面可包括已发布应用程序和/或其工作目录的可选参数。在很多实施方式中,环境变量也可在命令行和工作目录中被使用。可从加载已发布应用程序的客户端估计环境变量。在一些实施方式中,命令行可支持任何数量的任意参数。
在一些实施方式中,可在发布的时间预先配置已发布应用程序和文件类型关联。当管理员配置将被提供到客户端和/或在客户端上本地地执行的应用程序时,管理员或发布系统可配置与已发布应用程序的文件类型关联,使得文档的类型的初始加载触发特定的相关应用程序的加载。类似地,与应用程序相关的一个或多个图标可被提供到远程系统用于显示在快捷方式、开始菜单或其它元素中。类似地,在一些实施方式中,本地客户端的用户可独自发布应用程序。如上面讨论的,独自发布可包括用户选择要执行的本地安装的应用程序,同时与常驻桌面(live in desktop)或其它远程桌面或虚拟机显示器集成。在这些实施方式的很多实施方式中,当独自发布时,客户端可给远程系统提供图标和与本地安装的应用程序的文件类型关联,使得远程系统可包括在由远程系统产生的UI元素(例如开始菜单或任务栏内)的图标,并可使用文件类型关联以通过相关文件或文档的选择来触发本地安装的应用程序的加载。
在另一实施方式中,可在应用程序的运行时间枚举应用程序的图标和文件类型关联。这些可经由虚拟通道或作为已经建立的通信通道的部分从客户端发送到远程系统。这可被完成以例如当文件类型关联需要在不同的应用程序(例如本地浏览器和远程浏览器)之间被仲裁时向管理员同时提供控制和方便。当已发布应用程序图标和文件类型关联在发布时间被预先配置时,它们可被明确地设置或从安装有应用程序的可信任虚拟桌面器具被枚举、或从范例客户端机器被枚举、或以任何其它类似的方式被得到。
在一些实施方式中,通过向远程系统提供已发布应用程序的图标,这些已发布应用程序可出现在开始菜单、停靠栏、桌面快捷方式、或加载由远程系统产生的用户界面的其它应用程序中。在一些实施方式中,如果已发布应用程序在所连接的客户端处不是可用的,则它可例如通过使图标变灰、通过在图标上绘制X、通过在应用程序图标的右下角中显示更小的标准不可用资源覆盖图标(例如具有对角斜线标记的圆圈)、或经由某个其它类似的指示器而被显现为不可用的。
在一些实施方式中,点击远程桌面或应用程序加载器可触发在本地客户端上的应用程序的加载。在其它实施方式中,可使用在虚拟桌面应用程序会话中的命令行界面来加载已发布应用程序。远程会话的主机可在主机到客户端加载期间对已发布应用程序和传递到应用程序的参数(如果有的话)执行安全验证。在一些实施方式中,快捷方式可以是锁定的和/或内容是加密的以防止修改和请求在客户端处加载任意进程。因为客户端可能不必信任服务器,所以在一些实施方式中可以有单独的客户端侧安全策略/锁定。
在一些实施方式中,客户端托管的应用程序可包括本地安装的应用程序、流式传送的/离线应用程序、AppV虚拟化应用程序、ICA或RDP显示的远程应用程序或在不同的操作系统下的应用程序。在另一实施方式中,当从客户端加载时,这些应用程序的配置上下文可被相应地修改。
简要参考图3B,其中示出了用于枚举已发布应用程序并将应用程序加载请求重定向到本地机器的方法350的实施方式的流程图。在简要概括地讲,在步骤352,远程桌面或虚拟桌面器具、主机或服务器可接收一个或多个在本地执行的应用程序或已安装的应用程序的细目。在步骤354,远程桌面或虚拟桌面器具、主机或服务器可提供在本地和远程地执行或已安装的应用程序的集成细目。在步骤356,远程桌面或虚拟桌面器具、主机或服务器可接收请求以加载本地或远程地执行的应用程序。在步骤358,响应于该请求,远程桌面或虚拟桌面器具、主机或服务器可将请求重定向到本地壳或远程壳之一以开始应用程序的加载。
UI元素的透明集成
当使用本地应用程序和远程应用程序及桌面时,由本地和远程应用程序桌面产生并显现给用户的用户界面(UI)常常是不一致的并具有不同的界面外观。例如,在一些实施方式中,第一操作系统(例如苹果的Mac OSX操作系统)的用户可察看由第二操作系统(例如微软公司的Windows操作系统)提供的远程应用程序。作为结果,应用程序窗口和界面元素可具有不一致的窗口风格、按钮、滚动条等。此外,有时用户界面元素是强制性的、窃用焦点、不匹配它们集成到的UI的语言。因此,在一些实施方式中,通过使用客户端的界面外观无缝地集成服务器产生的UI元素与客户端可能是优选的。在其它实施方式中,通过使用服务器的外观和体验无缝地集成客户端产生的UI元素与远程桌面可能是优选的。例如,在这两个实施方式之间的选择可以动态地改变,这是因为窗口或桌面被制成全屏的。
在一个实施方式中,客户端可将关于系统度量、系统颜色和用于给文本数据编码的代码页的信息发送到服务器,供服务器在远程会话中适用。这些信息也可包括视觉主题或其它元素。在一个实施方式中,客户端的操作系统可绘制显示远程应用程序的图形输出数据的本地窗口的标题栏和边界,允许在这个窗口和由客户端系统产生的其它窗口之间的一致外观。在另一实施方式中,显示远程应用程序的图形输出数据的本地窗口的其它元素仍然可由远程操作系统提供或从例如菜单栏和其它非客户端区的逻辑视频缓冲区(LVB)拷贝。
在又一实施方式中,可为了一致的外观,本地或远程产生所有UI元素。这些元素可包括文本控件、按钮、进度条、单选按钮、列表框或任何其它类型和形式的用户界面元素。这些元素可然后使用接收方的产品和OS特定UI被显现,并将状态返回到发送方以实现更统一和透明的UI集成。根据使用情况,发送方和接收方可以是客户端或服务器,例如可以是本地或远程桌面和应用程序。
服务器到客户端UI重定向
在很多远程桌面系统中,当本地客户端的用户登录到远程桌面服务器时,状态消息被显示给用户。在第一阶段期间,当本地客户端正连接远程桌面服务器时,第一组状态消息可由应用程序或代理在本地机器上显示。这样的第一组状态消息可包括指示连接正被建立、安全证书被验证等的消息。在连接之后,第二阶段可出现,在此期间,用户的配置文件被载入,虚拟机或桌面被初始化等。第二组状态消息可由远程桌面的操作系统或应用程序产生并显示,并经由远程桌面被提供到客户端。如上面讨论的,在远程桌面由与用户的操作系统不同的操作系统提供的场合,这些第二组消息的UI可能看起来与用户的操作系统所产生的第一组消息不一致。
因此,在一个实施方式中,第二组状态消息的文本可被拦截并重定向到客户端,客户端可通过使用客户端侧应用程序、代理或库部件以统一的方式向用户显现状态消息,以用一致的方式显现消息,与在连接的第一阶段期间显现的第一组状态消息一致。这些可能对用户显得较不突兀。
在一些实施方式中,第一和/或第二组状态消息可包括:
请等待…
请等待组策略客户端…
请等待本地会话管理器…
欢迎
准备你的桌面…
请等待用户配置文件服务…
请等待组策略客户端…
请等待本地会话管理器…
请等待系统事件通知服务…
准备你的桌面…
然而,在其它实施方式中,可为用户产生并显示其它消息。在一个实施方式中,只有用户界面的字符串部分(例如欢迎文本)可被传递到客户端。在另一实施方式中,没有状态或确认可返回到服务器。
简要参考图3C,示出用于以本地格式显示远程状态消息的方法360的实施方式的流程图。简要概括地讲,在步骤362,主机虚拟或远程桌面可从客户端接收请求以开始远程桌面会话。在步骤364,主机可拦截或钩挂由认证部件创建的状态消息。在步骤366,主机可将状态消息、消息的文本、和/或资源标识符、或状态消息的其它标识符传输到客户端用于本地显示。在步骤368,客户端可使用客户端的图形部件本地地产生并显示状态消息。
在很多实施方式中,上面讨论的技术可应用程序于更复杂的UI重定向,其涉及复杂UI的单独元素以及异步和同步重定向二者,并将单独的结果返回给发送方。
许可困扰和许可错误消息
在一些实施方式中,许可相关的UI可被重定向到客户端。这样的许可相关的UI可包括关于许可证的期满、消息的认证、延长许可证的购买等消息。困扰消息同时指对许可证信息的请求和许可证的期满或即将发生的期满的通知以及其它非错误相关的状态信息。不是在服务器产生这样的消息,而是服务器代理可拦截这些消息并将文本字符串和/或与这些消息有关的其它信息发送到客户端,客户端可接着以与本地OS产生的其它UI元素一致的风格产生消息、对话框或其它UI元素。
会话重新连接相关的UI
在很多实施方式中,用户可从远程会话断开并重新连接到同一远程会话,而服务器不需要重新初始化虚拟机或桌面。这可为了漫游目的而完成,例如其中在瘦客户端或台式机上的远程托管桌面上工作的用户切换到膝上型计算机并希望重新连接到现有的远程会话,而不暂停虚拟机或桌面或不需要关闭和重新加载应用程序。在这样的实施方式中,使用本文讨论的消息重定向技术,关于现有会话的状态的基于服务器的消息可被重定向到客户端操作系统,不管是在台式机上还是在膝上型计算机上,都能使得客户端操作系统可在本地显现UI元素。
掩蔽提示和指示器UI
掩蔽在很多实施方式中指系统管理员连接到用户的远程桌面、虚拟机或虚拟桌面会话的能力。这样做可能是为了维护或教导目的、监控目的或其它原因。这样的连接可以是只能察看、或可给管理员提供移动鼠标光标、执行应用程序和输入数据的能力。在很多实施方式中,当会话被次级用户或管理员掩蔽时,给第一用户显现指示掩蔽正发生的用户界面元素,例如系统托盘弹出或指示器或其它元素。在一些实施方式中,当掩蔽被请求时,可给第一用户显示对话框或其它用户界面元素,使得用户可同意掩蔽他或她的会话的权限。这可被完成以允许用户在技术支持专家连接之前关闭秘密或敏感文件以对系统设置进行调节。使用本文讨论的技术,不是显示如服务器所产生的这些用户界面元素,而是使服务器可拦截信息、状态、权限对话或其它元素并将信息、状态、权限对话或其它元素重定向到客户端,使得客户端的操作系统可产生相应的用户界面元素。
早期认证(网络级认证)UI
网络级认证可包括在远程会话被创建之前对在堆栈级处的认证的安全UI提示。这可被完成以防止拒绝服务攻击或密码暴力破解。因为这样的认证在会话被建立之前发生,所以服务器产生的UI元素可能不是可用的。因此,在会话被加载且一旦通信被建立就接着将用户证书重定向到服务器之前在客户端上产生用户界面可能是优选的。
智能审计器UI
在很多实施方式中,客户端和/或服务器可提供记录会话或记录用户与远程会话交互(例如键盘和鼠标输入)的能力。为了提供记录正在进行中的确认和通知,提供用户界面元素(例如记录灯或“播发信号”灯)以向用户通知会话正被记录可能是合乎需要的。在很多实施方式中,使用本文讨论的技术,开始记录的服务器可在服务器上拦截记录状态消息并将状态重定向到客户端,使得客户端可以产生与客户端侧操作系统风格一致的相应的用户界面元素。
第三方UI
利用本文讨论的技术,可被分解成可重定向元素并被考虑为与无缝用户体验的偏差或其他方式的困扰的任何第三方UI也可以用一致且较不突兀的方式被拦截、重定向和显现在客户端上。同时,可隐藏服务器产生的UI,所以它对用户是不可见的。例如,由微软公司制造的Outlook应用程序频繁地产生用户界面元素以向用户通知指示或任务、在删除连接请求之前请求确认、或执行其它任务。这些查询、状态信息对话或其它元素可在服务器上被拦截并被重定向到客户端,使得客户端可产生一致风格的消息。
客户端到服务器UI重定向
类似于上面讨论的技术,在很多实施方式中,拦截由客户端产生的状态消息或其它UI元素并将这些元素重定向到服务器用于产生和显示可能是合乎需要的。这可完成,其中客户端侧用户界面元素可以在外观上是不一致的或令人困扰的(例如在另一风格的全屏远程产生的桌面上出现的以一种OS风格本地产生的弹出窗口)或在上下文中是令人困扰的(例如在非电池供电的服务器上托管的远程桌面上出现的来自本地用户的膝上型计算机的低电池指示器)。下面详细描述几个例子。
常驻桌面
在很多实施方式中,用户可在全屏或非窗口显示器中察看远程桌面或虚拟机。这可被称为常驻桌面,指示用户的体验“常驻”在远程或虚拟桌面中而不是它们的本地桌面中。因为常驻桌面覆盖在本地UI元素(例如本地任务栏或系统托盘元素、停靠栏、菜单和其它元素)上,所以,如果本地应用程序或客户端代理需要显示用户界面元素,那么这样的用户界面元素可能被隐藏在常驻桌面的后面。因此,在一些实施方式中,这些用户界面元素可被拦截并重定向到远程桌面或虚拟机会话,以便可使用服务器的外观和体验来显现元素。因此,这些元素将接着出现在托管的桌面中且是用户可见的。
简要参考图4A和4B,其中示出了描绘本地和远程应用程序窗口的集成的实施方式的方框图。图4A描绘在全屏远程桌面中的集成,而图4B描绘在窗口远程桌面中的集成。简要概括地讲,集成桌面可包括本地应用程序窗口400和远程应用程序窗口402。在全屏模式中,显示可包括远程桌面环境406,而在窗口模式中,显示可包括本地桌面环境220。在全屏模式中,在远程主机上产生的远程任务栏404可包括表示本地和远程进程的按钮,例如本地应用程序窗口按钮408和远程应用程序按钮410。类似地,在窗口远程桌面的很多实施方式中,本地桌面环境220可包括具有本地应用程序窗口按钮408和远程应用程序按钮410的本地任务栏412。如上面讨论的,当在全屏模式中时,本地应用程序窗口按钮408可被重定向到远程主机并由远程主机产生。这可完成,因为本地任务栏412可隐藏在远程桌面环境406和/或远程任务栏404后面或之下。类似地,当在窗口模式中时,远程应用程序窗口按钮410可被重定向到客户端并由客户端产生。这可完成,因为远程任务栏404可被隐藏或不传输到客户端。
反向无缝
在被称为反向无缝应用程序的技术的几个实施方式中,本地应用程序窗口可与全屏远程桌面无缝地集成,好像它们远程地运行一样。在一些实施方式中,反向集成窗口的窗口图形仍然由本地客户端产生。这提出在本地和远程地产生的UI之间的不同界面外观的相同问题。因此,在一个实施方式中,通过使用本文讨论的重定向技术,这些客户端窗口的用户界面元素例如窗口标题或菜单栏、滚动条或其它元素可被拦截并重定向到服务器用于产生。可仍然从本地逻辑视频缓冲区(LVB)读取窗口元素以显示本地应用程序输出。
例如,在一个实施方式中,一些消息的直接反向无缝Systray集成可能对最终用户是困扰的。如上面讨论的,在全屏虚拟或远程桌面会话的Systray中的“低电池”消息可被拦截以意指远程虚拟机的电池正在耗尽,即使虚拟机没有电池也是这样。因此,拦截并重定向这样的消息用于以另一格式显现可能是合乎需要的。例如,修改的消息或UI元素可被显示以明确地指示膝上型计算机电池电量低。
在整个这个公开中描述的反向无缝(RS)可用于确保在客户端机器上运行的某些应用程序看起来集成到远程全屏桌面中,正如在远程桌面本身中运行的常规应用程序一样。反向无缝集成同时涵盖很多视觉的和功能上的不同方面,例如开始菜单和桌面快捷方式、窗口、Alt-Tab、Systray、任务栏、客户端到主机和主机到客户端FTA、URL、浏览器Cookies和凭证重定向等。它意味着“反转”很多现有的ICA技术。支持反向无缝的一个基本原理是通过允许“问题”应用程序在本地运行来实现100%应用程序兼容性,且仍然是统一桌面体验的部分。这允许用户无缝地利用客户端的能力,对付难的多媒体使用情况、设备接入问题、特殊地点要求等。
本地化的改善
在很多实施方式中,客户端和服务器环境可使用不同的语言配置。例如,服务器可配置成提供英语消息和通知,而客户端用西班牙语操作。在本文讨论的系统和方法的一个实施方式中,发送者可规定在UI元素中的消息字符串的资源ID。当拦截并重定向这些元素时,可提供资源ID,允许接收方使用本地资源表来取回并呈现消息字符串的替换语言版本作为静态翻译(例如基于表格的)。在很多实施方式中,发送者也可发送实际文本。当资源ID对接收方是未知的或未被提供时,接收方可例如经由本地或远程字典或语言翻译实用程序来利用实际文本的动态翻译。这种方法提供更一致的用户体验。
在很多实施方式中,可在服务器到客户端和客户端到服务器方向上频繁地同时执行UI元素的重定向。此外,不同的UI元素可能需要异步或同步操作,且在一些情况下结果可能需要返回到发送者。例子可包括具有确认和取消按钮的对话框。在发送者处产生的对话框需要被拦截并重定向到接收方,但被维持。当用户选择在相应的接收方产生的对话框上的按钮时,结果可被拦截并重定向回到发送者产生的对话框,允许操作根据用户的希望继续进行。
窗口模式切换
如上面讨论的,在很多实施方式中,用户可能有在窗口操作和全屏窗口模式或常驻桌面之间切换的能力。这可能需要用户界面元素的不同重定向用于最佳最终用户体验。例如,如果用户将远程连接从窗口切换到全屏模式,则在本地显现在客户端处的重定向的UI可能不再是可见的,因为它将隐藏在全屏桌面后面。因此,在一些实施方式中,UI可集成到远程会话中作为反向无缝窗口。在其它实施方式中,重定向可被暂停或重定向以后退到基于服务器的呈现。可选地,从全屏到窗口模式的切换可触发以前在服务器上呈现的重定向。
漫游和重新连接
在很多实施方式中,远程桌面或机器会话可包括用于自动客户端重新连接(ACR)的功能。这可在存在从会话完全断开的情况时被执行,并可包括到断开的会话的重新连接。类似地,在很多实施方式中,远程桌面或机器会话可包括用于漫游的功能,允许用户手动地或自动地从另一客户端机器重新连接到断开的会话。一些重定向的UI元素可被异步地发送到原始客户端机器,而其它UI元素可与未决的用户动作同步。在一些实施方式中,以前发送的异步UI元素可能未被重新创建,使得它们将不在新客户端上被看到。这可被完成,例如以防止以前重定向的低电池指示器出现在非电池供电的台式机的重新开始的会话上。在很多实施方式中,如果在断开之前没有从原始客户端接收到响应,则可重新创建并重定向以前发送的同步/阻断UI元素。例如,如果在断开之前对话框被显现给用户,则对话框可被重新创建并重新传输到客户端用于重新产生和显示。
传递(pass through)和掩蔽式传递
在很多实施方式中,用户可察看多个嵌套的远程桌面或虚拟机会话。例如,第一计算设备的用户可察看第二计算设备的远程桌面,第二计算设备本身显示第三计算设备的远程桌面。在一些实施方式中,来自最上游的客户端(例如第三计算设备)的UI元素可被重定向到客户端并呈现在客户端上,它们被预期显示在例如最下游的客户端(例如第一计算设备)的客户端上。例如,在其中用户正察看全屏或长住桌面的其它实施方式中,没有本地UI可被显现。因此,可在远程桌面会话(例如靠近用户的客户端上游的客户端)中执行呈现。在很多实施方式中,可通过用户、管理员或应用程序制造商所规定的策略来控制确切的行为。
类似于上面讨论的情形,当第一计算设备的用户(例如技术支持专家)掩蔽第二计算设备时,这类似于第一计算设备连接到第二计算设备的远程会话。如果第二计算设备本身正察看第三计算设备的远程桌面或虚拟机,则在一些实施方式中,由第三计算设备产生的UI元素可被重定向到第二计算设备,而不是传递到第一计算设备。这允许用户即使在被掩蔽时仍然察看这些项目。然而,掩蔽者可能不能够察看UI元素或与UI元素交互。
因此,在很多实施方式中,第三计算设备可配置成将UI元素重定向到第二和第一计算设备,允许掩蔽者和被掩蔽的用户察看这些元素并与这些元素交互。在其它实施方式中,可禁止重定向,使得UI元素产生在第三计算设备处被执行并对第二计算设备和作为扩展对第一计算设备显现为应用程序输出图形。
现在参考图3A,示出了用于UI重定向的系统的实施方式的方框图。下面的描述主要讨论了服务器到客户端UI重定向,但本领域中的技术人员可容易认识到,从客户端到服务器也可出现为重定向,在这种情况下,除了客户端和服务器的角色反转以外,适用相同的概念。简要概括地讲,服务器或远程计算设备106可重定向来自操作系统制造商或第三方所提供的进程206的用户界面元素、操作系统UI元素,例如开始菜单300或systray或其它元素(未示出)或任何其它元素。在一些实施方式中,第二代理204可调用到UI重定向部件308或从重定向部件308读取,重定向部件308可包括库、数据库或其它逻辑。
在例如第一进程206由第三方制造商提供的一些实施方式中,可使用API钩经由作为微软公司的Windows操作系统的部分被提供的系统库(例如Windows UI自动API或user32.dll)使由第一进程206产生的UI的单独元素重定向。这样的API调用可包括MessageBox、MessageBoxEx、CreateDialog、DialogBox、SetDlgItemInt、SetDlgItemText或提供关于格式、风格和/或用户界面元素的内容的信息的任何其它API。在一些实施方式中,可接着使用由UI重定向部件308提供的UI重定向部件API来重定向钩挂的API。在一个实施方式中,可例如经由API调用,例如经由ShowWindow(hWnd,SW_HIDE)来隐藏在由进程或操作系统产生并代表钩挂的消息框、对话或其它用户界面元素的会话中的本地窗口。这可被完成,以便防止它们的图形在远程计算设备106上产生,这些图形将必须被传输到本地计算设备102用于显示。
在一些实施方式中,UI重定向部件308可进行会话的类型(例如控制台会话、ICA会话、RDP会话或任何其它类型的会话)的进一步识别。在其它实施方式中,UI重定向部件308可做出策略决定,例如重定向是否被启用或禁用;重定向是否在如上面讨论的传递模式中被启用;重定向是否在掩蔽期间被启用;或正确地重定向并产生UI元素所需的任何其它策略决定。响应于这些策略,UI重定向部件308可使远程计算设备106和/或本地计算设备102的操作系统定向以执行以下操作:
·在本地和原本地呈现UI。在一个实施方式中,这可包括对第二代理204或第二代理204的钩挂部件或UI重定向部件308产生错误代码,因而通过操作系统、进程或其它用户界面发生器触发后退到本地和原本呈现。
·在本地呈现UI。在一个实施方式中,这可包括经由第二代理204或由第二代理204定向的图形引擎产生UI元素,而不经由网络重定向UI元素。这可被完成以提供在远程计算设备上产生的UI元素的统一主题。
·在透明UI集成虚拟通道上重定向UI元素。在一个实施方式中,这可包括经由在第二代理204和第一代理202之间或在远程计算设备106和本地计算设备102之间的虚拟通道重定向UI元素以允许本地计算设备102或本地计算设备102的操作系统使用其本地界面外观呈现UI元素。
在一些实施方式中,对UI重定向部件API的一些调用可导致异步/无阻碍调用(例如,远程简单文本UI元素的调用),而其它调用可以是同步/阻碍的(例如,需要来自用户的响应的远程的是/否对话按钮)。在很多实施方式中,UI重定向部件API可支持每远程会话UI重定向(上下文)的多个同时的实例。在另一实施方式中,API的客户端可在不同的安全上下文下和进入和离开会话空间而运行。
可以用多种不同的方式实现上面讨论的透明UI集成虚拟通道。在一些实施方式中,虚拟通道可包括一般虚拟通道、动态虚拟通道或静态虚拟通道。可响应于系统的可移植性要求而执行虚拟通道的选择。动态虚拟通道可提供对大数据消息例如大于5KB的那些消息的自动分组分段/重组;对每会话UI重定向(上下文)的多个同时实例的消息的自动复用/解复用。一般虚拟通道可提供用于托管的高级特征;提供会话通知;满足安全要求;执行在连接侧之间的公共状态管理;以及缓存优化。
在一些实施方式中,虚拟通道可使用提供灵活的集成主机到客户端的协议。这样的协议可包括具有状态结果的异步和同步调用。协议可包括在UI容器例如窗口内的不同UI元素的字段和/或标识符。这些元素可包括文本字符串、进度条、按钮或任何其它类型和形式的用户界面元素。协议还可包括定义不同的UI元素类型的类ID和/或定义UI元素的不同实例的资源ID。在其它实施方式中,协议还可包括请求ID以识别唯一的UI重定向上下文/容器并使请求与响应匹配。在又一些其它实施方式中,协议可提供不同动作(例如在上下文内的任意UI元素的添加、更新、移除或任何其它动作)的标记或请求标签。如上面讨论的,为了提供语言翻译和本地化,协议可包括对不同语言地点和基于资源ID的翻译的支持。在很多实施方式中,协议可包括对大数据的分组分段和重组以及不同上下文的复用或解复用(例如分段标记、序列或通道ID或任何其它信息)的支持。
在很多实施方式中,第一代理202可包括类似于UI重定向部件308的相应UI重定向部件308'。在客户端侧上,在很多实施方式中,UI重定向部件308'可实现上面描述的透明UI集成协议。在一个实施方式中,UI重定向部件308可包括用于在不同上下文或虚拟通道实例上接收并发送虚拟通道的库或DLL。
在很多实施方式中,客户端虚拟通道部件、第一代理202或UI重定向部件308'可将UI呈现授权给由壳214或第一代理202提供的UI呈现平台抽象层。这个抽象层可具有平台公共界面,但具有不同的实现,其取决于本地操作系统。平台抽象层可用于原本地呈现UI,因此确保与客户端的界面外观的无缝集成。
在另一实施方式中,平台抽象层可将呈现授权给在客户端上运行的应用程序或进程,或可使用呈现库来在具有统一的界面外观的客户端的进程空间中呈现UI。在又一些其它实施方式中,平台抽象层可用于使用资源表和文本UI元素的资源ID来执行文本到地方语言的直接翻译。在一些实施方式中,如上面讨论的,虚拟通道传输可包括UI元素的实际文本,其可由客户端在资源ID未被提供或是未知的情况下使用。在又一实施方式中,可使用本地或远程字典动态地翻译文本。
视觉和功能应用程序特征的选择性集成
在已发布应用程序的很多实现中,与集成所有本地应用程序相反,可能有需要应用程序的选择性集成的可用性和安全性考虑因素。这个选择性集成可影响应用程序窗口、系统托盘、文件类型关联操纵或其它UI元素。例如,在很多实施方式中,只有下面的窗口被预期集成到远程桌面或虚拟桌面会话(有时被称为虚拟桌面器具或VDA会话)中:
(1)来自从该远程或虚拟桌面会话加载的已发布应用程序进程的窗口。
(2)来自从远程或虚拟桌面会话经由文件类型关联加载的已发布应用程序进程的窗口。
(3)属于来自#1或#2的进程的子进程的任何窗口。
同样的原理可应用程序于在远程或虚拟桌面会话中的systray集成或已发布应用程序的其它UI元素集成。
在很多实施方式中,任何其它本地客户端窗口将保留在客户端桌面上,且将不集成到远程桌面或虚拟桌面会话中。在一些实施方式中,这可包括来自认证窗口的特殊窗口或来自远程或虚拟桌面客户端应用程序的窗口的状态消息。然而,基于策略配置,一些窗口或系统托盘项目(例如认证提示、用户访问控制升高提示、膝上型计算机的电池安时计等)可被允许通过远程桌面来显示。
在多监视器装备中,在很多实施方式中,单独的远程或虚拟桌面会话可从同一客户端加载并被分配到监视器的不同子集(有时被称为多VDA情形)。可为用户提供客户端UI以将监视器分配到远程或虚拟桌面会话。在一些实施方式中,可为本地桌面保留监视器的子集。在另一实施方式中,已发布应用程序及其子进程可与它们从中加载的其父远程会话或虚拟桌面会话相关。这个关联可包括窗口和systray集成、文件类型关联(FTA)操纵和其它UI元素。可以用不同的方式管理窗口关联:
○掩蔽从VDA到VDA、VDA到本地或本地到VDA桌面的应用程序转变。换句话说,系统可防止用户越过VDA会话边界拖动窗口。
○允许完全转变,允许用户越过监视器和VDA会话拖动窗口。
○允许部分地但不是全部拖出屏幕,只要鼠标停留在父VDA会话中。也可执行剪切。在一个实施方式中,当已发布应用程序窗口移动时,系统可设置或限制其窗口区,使得它被VDA会话边界正确地剪切。在另一实施方式中,已发布应用程序可被设置以被识别为VDA会话窗口的子窗口。在另一实施方式中,VDA会话窗口的剪切兄弟窗口属性可被设置成使得已发布应用程序窗口由客户端操作系统自动剪切。
在一些实施方式中,为了正确地管理窗口关联,客户端可维持进程及其窗口的父子关系的完整等级结构。这对于当已发布应用程序进程直接由远程主机加载时或当已发布应用程序经由CreateProcess API或其它接口直接加载另一进程时的情况可能是简单的。然而,在已发布应用程序经由文件类型关联加载时这可能更复杂,在这种情况下,所加载的应用程序可变成远程壳的子进程,或在它经由部件对象模型加载并变成所托管的服务管理器实例的子进程时的情况下。为了检测正确地父子关系,在一些实施方式中,用于加载已发布应用程序的API可被钩挂或拦截以监控应用程序的加载。
在一些实施方式中,对于单实例应用程序例如微软公司提供的Windows媒体播放器可能需要特殊操纵。在一个这样的实施方式中,如果已经作为在客户端上的已发布应用程序被加载,则系统可以不允许在主机上的应用程序的实例的加载。
在一些实施方式中,为了允许已发布应用程序的正确工作区域用于最大化/最小化和恢复窗口定位的目的,VDA桌面的工作区域边界可从主机被发送到客户端。因此,已发布应用程序可接着通过正确地确认VDA的任务栏尺寸和位置来最大化,其相对于本地桌面的任务栏可具有不同的位置和/或尺寸。
在很多实施方式中,本地发布的应用程序窗口可由客户端代理或远程桌面客户端的服务从本地桌面的任务栏移除,并在断开/注销时从远程VDA会话恢复。这可完成以帮助创建当VDA是活动的时已发布应用程序不是本地的虚假外观。
在一些实施方式中,当VDA进入窗口模式中时,已发布应用程序窗口可被最小化并从VDA移除。在一个实施方式中,任务栏条目可停留在VDA任务栏上,而在另一实施方式中,它们可被移除。当VDA返回到全屏模式时,已发布应用程序可恢复以重新开始正常操作。
好于本地体验
在例如远程桌面的虚拟主题不同于客户端桌面的视觉主题的一些实施方式中,本文讨论的方法和系统可提供表示具有本地客户端主题的远程VDA的窗口并因此使它们与已发布应用程序无缝地混合的机会。首先,在服务器侧实施方式中,窗口标题、边界、字体、尺寸、颜色的客户端侧设置或类似主题设置可传输到服务器并在会话中被使用。其次,在客户端侧实施方式中,本地客户端可产生远程应用程序窗口的窗口标题和边界,而不是从本地视频缓冲区绘制这些元素。
这也可允许由本地桌面执行的操作系统的较新版本的特征应用于运行较老或不同版本的操作系统的远程桌面应用程序的窗口。例如,微软公司的Windows 7包括各种UI动画和特征,其包括咬合侧面、摇动、玻璃等。通过创建远程桌面的所有窗口作为如上面讨论的标题栏和边界的本地窗口,这些本地窗口可利用全部这些特征,即使远程桌面正执行较老版本的Windows(例如Windows XP或完全是另一操作系统)时也是这样。类似地,相同的技术可相反应用以允许远程桌面的操作系统的特征应用于本地窗口。在一个这样的实施方式中,可对在本地客户端上的一个或多个已发布应用程序的每个窗口在远程桌面或虚拟机上创建代理窗口。这些代理窗口的图形(包括标题栏和边界)可被传输到本地客户端,并与由本地应用程序产生的窗口内容混合。因此,在较老的操作系统(例如Windows XP)上运行的本地发布的应用程序可具有较新的操作系统(例如Windows 7)的界面外观。
反向无缝应用程序漫游
在一些实施方式中,如果远程桌面或虚拟机注销或关闭,则现有的已发布应用程序窗口也可经由对本地客户端的窗口管理器的API调用被关闭,且与这些窗口相关的进程可以适当方式退出。这可被完成以使这些窗口来自远程机器的错觉永久存在。
在其它实施方式中,在用户触发的VDA断开时,已发布应用程序窗口可作为本地窗口在客户端上保持打开,实际上使这些窗口孤立。这可被完成以允许用户继续离线地工作。在很多实施方式中,用户可在从相同或不同的客户端断开之后重新连接。此外,在很多实施方式中,已发布应用程序窗口可在重新连接之前被关闭或是不可用的(如果从新客户端重新连接)。在又一些其它实施方式中,重新连接可经由自动客户端重新连接(ACR)系统快速和悄然产生。因此,可应用窗口的特定行为。用于在重新连接之后重新集成现有的已发布应用程序或重新加载它们的这些行为可包括:
(1)无重新集成;
(2)静默和自动的重新集成;
(3)通过提示和可选地重新加载已发布应用程序来让用户决定;
(4)在漫游到新客户端期间以适当方式关闭在以前的客户端处的已发布应用程序;或
(5)可能结合关闭在以前的客户端处的已发布应用程序在漫游期间在新客户端处重新加载已发布应用程序。
在很多实施方式中,用户可配置的策略可用于确定应用哪个行为。
双向文件类型关联(FTA)集成
在一些实施方式中,文件类型关联可针对已发布应用程序从客户端传递到主机、或从主机传递到客户端、或从客户端传递到客户端。在很多实施方式中,客户端可代替所有文件类型关联(例如在ShellExecute/ShellExecuteEx和CreateProcess API的注册或直接钩挂中的壳开放命令)以指向远程桌面客户端或客户端代理。远程桌面客户端或客户端代理可接着将这些命令重定向到远程桌面或虚拟桌面主机,其可执行文件类型关联仲裁。在本地和远程计算环境之间的仲裁的等级结构可包括:
(1)已发布应用程序的已发布文件类型关联(可以是客户端本地的、流式的、ICA、RDP等)。
(2)已发布应用程序的客户端枚举的文件类型关联(可以是客户端本地的、流式的、ICA、RDP等)。
(3)在VDA会话中的文件类型关联(可以是客户端本地的、流式的、ICA、RDP等)。
通常在这些实施方式中,除非应用程序被发布为已发布应用程序,否则即使它拥有文件类型关联,客户端应用程序未被使用。这通过保持应用程序与父VDA相关并锁定本地环境而允许一致的管理。在很多实施方式中,基于策略配置,例外是可能的。
在一些实施方式中,当用户点击VDA中的文件且它按照上面的(1)或(2)被重定向到已发布应用程序时,主机到客户端文件类型关联重定向出现。在其它实施方式中,当用户与一个已发布应用程序交互并按照上面的(3)加载与VDA托管的应用程序相关的嵌入式内容时,客户端到主机文件类型关联重定向出现。例如,在一个这样的实施方式中,打开在微软公司所提供的Outlook电子邮件程序的已发布拷贝中的.doc附件可加载Microsoft Word的VDA托管的拷贝。
在一些实施方式中,当用户与一个已发布应用程序交互并按照上面的(1)和(2)加载与另一已发布应用程序相关的嵌入式内容时,客户端到客户端文件类型关联重定向可出现。例如,打开Outlook电子邮件程序的已发布拷贝中的.doc附件可加载Microsoft Word的已发布拷贝。甚至在这样的客户端到客户端文件类型关联重定向中,重定向仍然由VDA仲裁。在很多实施方式中,这不包括提供集中式管理的未发布客户端应用程序以及由其它非父VDA所发布的应用程序。例如,如果没有Microsoft Word或父VDA托管的Microsoft Word的已发布拷贝,.doc文件的加载将失败,即使有Microsoft Word的本地未发布拷贝。
在一些实施方式中,可在主机和客户端或主机的代理和/或客户端之间经由已建立的远程桌面会话的虚拟通道传递上面讨论的文件类型关联。
双向URL集成
在很多实施方式中,使用与上面讨论的与文件类型关联重定向类似的技术,统一资源链接(URL)也可在主机和客户端之间重定向。在这些实施方式中,已发布应用程序和主机VDA可位于不同的网络环境当中,其中包括不同的地理环境。因此,用户可能希望由于以下几个原因包括URL重定向:
○基于地点和/或用户特权的web或ftp站点上的访问限制;
○基于地点由网站分发的不同内容,例如基于国家或查询的起源分发不同的结果的搜索引擎;
○闪存加速在例如WAN上的高时延链路工作得不好;
○远程音频/视频扩展(RAVE)不支持RealNetworks公司所制造的RealMedia或苹果计算机公司所制造的QuickTime的格式的内容;以及
○在使用表示协议的客户端或主机计算机或显示器处的Microsoft Silverlight支持的缺乏。
在一些实施方式中,双向URL重定向可包括应用程序到web浏览器重定向。例如,如果用户点击在由Microsoft Outlook的已发布拷贝呈现的电子邮件窗口中的URL链接,且URL可被重定向到远程VDA并在远程或虚拟桌面中执行的浏览器中被打开。这可使用类似于上面描述的文件类型关联重定向的壳开放命令来完成。
在其它实施方式中,URL重定向可包括web浏览器内重定向。例如,如果用户在远程或虚拟桌面中执行的web浏览器中浏览网页并点击从网页提到的另一链接,则链接可被重定向到在客户端上运行的已发布web浏览器并由已发布web浏览器打开。在这样的实施方式中,并不涉及壳。更确切地,在这些实施方式中,浏览器可在本地操纵链接。在一个实施方式中,URL可由浏览器助手对象或插件拦截。不同的插件可能是不同浏览器所需的。在另一实施方式中,可通过钩挂对由远程或虚拟桌面的操作系统提供的Windows HTTP服务(WinHTTP)API的调用来拦截URL。
在很多实施方式中,可响应于一个或多个策略来执行URL重定向。这些策略可基于安全区、白名单和黑名单或任何其它信息,其具有最小化最常见的要求的配置的基本原理。策略在一些实施方式中可由URL匹配、灵活模式匹配、通配符或任何其它类型和形式的策略应用实现。例如,在策略的一个实施方式中,白名单可存在于客户端侧上,使得只有所列出的URL由来自客户端的已发布web浏览器操纵。任何其它web内容将被重定向到在VDA内的浏览器。在策略的另一实施方式中,黑名单可存在于VDA侧上,使得所列出的URL被发送到已发布浏览器并从客户端侧被操纵。任何其它web内容将在VDA会话内被处理器。在一些实施方式中,在不同协议例如HTTP、MMS、FTP或任何其它协议中的URL可被拦截并重定向。
在一些实施方式中,在重定向错误或在访问内容时的错误(例如由重定向到的浏览器接收的404错误)的情况下,后退(fallback)功能可包括由另一浏览器重新访问内容。这也可以是有帮助的,其中不同的浏览器可接收不同的错误消息,例如由于在防火墙或公司网内部。在客户端侧后退的一个实施方式中,当URL在白名单中但本地客户端加载失败时,系统可通过将URL重定向回到远程VDA浏览器而后退到VDA加载。在另一类似的实施方式中,当URL不在白名单中但却在VDA浏览器上加载失败时,系统可通过将URL重定向回到客户端上的已发布浏览器而后退到本地客户端加载。类似地,在服务器或远程侧后退的一个实施方式中,当URL不在黑名单中但却在VDA浏览器上加载失败时,系统可通过将URL重定向回到已发布浏览器而后退到本地客户端。在另一实施方式中,当URL不在黑名单中但却在本地客户端加载失败时,系统可通过将URL重定向回到远程VDA浏览器而后退到VDA加载。
在一些实施方式中,web cookie和凭证也可在已发布应用程序和虚拟或远程桌面之间同步。此外,cookie可被沙盒化,使得它们不影响其它浏览器会话,包括多VDA情形。
用户认证重定向
在很多实施方式中,将认证证书从主机重定向到客户端或从客户端重定向到主机以允许一个系统作为另一系统的用户执行应用程序可能是合乎需要的。例如,用户可被客户端环境认证为身份A,或可使用匿名用户账户,如在信息亭(kiosk)型环境中的。用户可接着加载远程或虚拟桌面会话并认证为身份B。默认地,已发布应用程序将在A的上下文中运行。然而,在很多实施方式中,已发布应用程序需要在B的上下文中运行,以便访问与在VDA中运行的应用程序类似的域资源。
在解决方案的一个实施方式中,系统可使用在SSPI(安全支持提供者器接口)上的Kerberos。在向VDA认证之后,在VDA上的服务器代理调用SSPI以取回被称为SSPI数据的不透明字节阵列中的服务票和加密鉴别码。SSPI数据可接着在远程通信会话的虚拟通道上被发送到客户端代理。客户端可调用SSPI并向其传递从服务器代理得到的SSPI数据。SSPI可认证用户并返回登录凭证。客户端可接着使用登录凭证来在B的上下文中加载已发布应用程序。在一些实施方式中,客户端可以在与VDA相同的域中或在VDA的可信任域中。在很多实施方式中,在VDA的用户上下文下加载已发布应用程序可在每个应用程序基础上经由策略来配置。
服务器驱动器和打印机映射
在正常情况下,已发布应用程序可访问本地客户端驱动器以及共享网络驱动器。然而在很多实例中,这些已发布应用程序也可能需要访问VDA的驱动器,这类似于在VDA中运行的应用程序。因此在本文讨论的系统的一个实施方式中,来自父VDA的服务器驱动器可被枚举并在相应的客户端发布的应用程序的上下文中是可访问的。这可通过服务器驱动器的细目、服务器驱动器到网络驱动器或其它可访问驱动器的映射、以及读和写请求到所映射的驱动器的重定向来完成。在一个实施方式中,服务器消息块(SMB)协议可用于映射远程服务器驱动器。
类似地,已发布应用程序可访问本地打印机和网络打印机。然而,VDA可访问映射到服务器的打印机,其中包括客户端不可访问的本地和网络打印机。在一个实施方式中,VDA打印机可被枚举并映射到客户端,使得客户端可经由远程桌面通信的虚拟通道来定向打印业务。这个实施方式可包括安装网络打印提供者、打印服务和通用打印驱动器(UPD)、以及将VDA打印机映射到客户端中并重定向打印业务。
在另一实施方式中,通用打印(UP)客户端可安装在客户端机器上,且UP服务器安装在VDA上。VDA可提供由VDA可访问的网络打印机的列表,以便便于在客户端处发现网络打印机。在一些实施方式中,UP服务器也可安装在客户端上。在很多实施方式中,客户端可使用UP服务器来打印到网络打印机。因为没有本地打印机通过这个实现被创建,所以在客户端上不需要管理员特权,且没有额外的打印机驱动需要被安装。
上面讨论的方法和系统的额外实施方式包括在紧接着在这个描述后面的附录中。这些实施方式打算仅用作例证性例子。本领域中的技术人员可容易设想不偏离本公开的范围的类似的实施方式。
应理解,上面描述的系统可提供那些部件中的任一个部件或每个部件的多个,且这些部件可设置在单独机器上或在一些实施方式中设置在分布式系统中的多个机器上。上面描述的系统和方法可使用编程和/或工程技术被实现为方法、装置或制品以产生软件、固件、硬件或其任何组合。此外,上面描述的系统和方法可被提供为体现在一个或多个制品上或一个或多个制品中的一个或多个计算机可读程序。如本文使用的术语“制品”旨在包括从一个或多个计算机可读设备、固件、可编程逻辑、存储器设备(例如EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子设备、计算机可读非易失性存储设备单元(例如CD-ROM、软盘、硬盘驱动器等)可访问并嵌入其中的代码或逻辑。从经由网络传输线、无线传输介质、通过空间传播的信号、无线电波、红外信号等提供对计算机可读程序的访问的文件服务器可访问制品。制品可以是闪存卡或磁带。制品包括硬件逻辑以及嵌入计算机可读介质中的由处理器执行的软件或可编程代码。通常,可以用任何编程语言例如LISP、PERL、C、C++、C#、PROLOG、或以如JAVA的任何字节码来实现计算机可读程序。软件程序可存储在一个或多个制品上或中作为对象代码。
在描述了用于提供所托管的应用程序的无缝缩略图的方法和系统的某些实施方式后,现在将对本领域中的技术人员变得明显的是,可使用包括本发明的概念的其它实施方式。
第C章:无缝窗口虚拟通道协议的例证性实施方式
下文介绍了使用虚拟通道协议的无缝窗口集成的例证性实施方式。在这个第C章内的特定限制性语言的使用不应归咎于本文描述的其它实施方式。例如,虽然某些术语“必须”出现在这个实施方式中,但是在本文描述的其它实施方式中那些项目可以是可选的或仅仅是例证性的。
无缝窗口接口(有时也被称为透明窗口接口或无缝)是客户端侧系统的附加部件,例如由Citrix系统公司制造的XenApp和XenDesktop的Citrix接收器。无缝虚拟通道协议使用窗口信息来增强客户端,使每个远程应用程序出现在客户端设备上的单独可调整大小的窗口中。用户不能分辨本地和远程应用程序之间的差异;所有应用程序都以相同的方式呈现。因此,用户界面被称为是在本地和远程执行的应用程序之间是“无缝的”。
当用户需要在多个服务器上托管的规则商业操作或远程应用程序期间同时使用本地和远程应用程序时,无缝性可能在混合环境中是特别有益的。
当主机代理开始时,它发送具有一些必要的主机信息(即,版本、桌面分辨率)的TWI_PACKET_START分组。
客户端使用TWI_PACKET_C2H_START_ACK分组做出响应,确认TWI_PACKET_START并给客户端提供版本/能力信息。这个分组指示客户端想要使用的连接模式是无缝的或是标准的。基于主机版本号和所支持的无缝协议版本号,客户端确定是否可能实现无缝模式。
如果客户端想要实现无缝连接,则它将TWI_PACKET_C2H_START_ACK分组中的动作字段设置为零,并发送具有一些必要的客户端信息的TWI_PACKET_C2H_CLIENTINFO/TWI_PACKET_C2H_CLIENTINFOEX分组。
当客户端接收到TWI_PACKET_C2H_START_ACK分组且动作字段被设置为零(指示客户端想要切换到无缝模式)时,主机代理发送TWI_PACKET_OPEN请求以指示模式切换和具有一些额外的通用信息(在主机上的窗口设置)的TWI_PACKET_SYSINFO分组。
当客户端接收到TWI_PACKET_OPEN分组时,它重置所有内部数据结构并启用无缝窗口处理。
在无缝连接期间,对于在客户端设备上的所有顶级窗口,主机代理发送窗口信息,例如窗口位置、尺寸、风格和窗口文本。此外,前景窗口信息(即,前景窗口ID)被发送。
根据这个信息,客户端在客户端设备上创建具有相同的尺寸/位置的窗口。根据连接的服务器类型,窗口创建标记如下面指示的被设置:
·在使用较老的服务器类型的实施方式中,所有无缝窗口都在客户端上被创建为无框架的和无标题的。
·在使用较新的服务器类型的实施方式中,所有无缝窗口都被创建有框架和标题的风格。然而,框架和标题尺寸为零,实际上给客户端对窗口的完全控制。由于任务栏系统菜单的兼容性,可设置标题风格标记。
为了支持客户端侧窗口操纵(移动/调整大小),客户端可通过拦截WM_NCHITTEST消息来仿真框架/标题元素。
在很多实施方式中,客户端试图在本地执行一些操作(窗口移动/调整大小),稍后将更新信息发送到主机。
前景窗口变化可发生在客户端和主机上,所以一组规则用于平衡前景窗口变化。
在客户端上的Z次序是主机Z次序的超集(客户端总是具有比主机更多的窗口)。通过再现在窗口当中的所有者/所有关系、窗口风格的TOP_MOST标记和前景窗口平衡来在客户端上呈现主机Z次序。
在一些实施方式中,系统允许用户通过按下热键组合(例如Shift+F2)或通过使用连接中心来在无缝和全屏模式之间切换。注意,在这种情况下全屏模式不是原始全屏模式,而更确切地是模拟。如果用户连接在标准全屏模式中打开,则所有图形输出直接转到屏幕。如果用户连接最初在无缝模式中打开并接着切换到模拟全屏模式,则图形输出通过影子位图,且直到此时才被拷贝到屏幕。
当用户发出改变模式命令(上面提到的热键组合或通过使用连接中心)时,在一些实施方式中,客户端发出TWI_PACKET_C2H_PAUSE分组,请求主机代理暂停操作。如果客户端已经在模拟全屏模式中,则它发送TWI_PACKET_C2H_RESUME分组,请求主机代理重新开始操作。
在注销时,主机代理将本身切换到暂停模式且不将信息发送到客户端。在重新连接时,主机代理再次发送TWI_PACKET_START分组,将主机代理状态报告为“已经运行,重新连接”。
焦点平衡
焦点改变事件可出现在打开客户端的两侧上和主机上。因此,客户端和主机代理必须使用一组规则来协商焦点(前景窗口)。
例如,在具有无缝客户端和两个所连接的服务器的一个实施方式中,用户可在三个远程应用程序中工作,其中两个应用程序在第一服务器上而一个在第二服务器上且一个本地程序在客户端上运行。下面详述五个焦点的转变情况:
首先,由于在应用程序窗口内部的鼠标点击,焦点从第一远程窗口(第一服务器)转变到第二远程窗口(第一服务器)。在这个转变中,主机代理(第一服务器)检测前景窗口变化并将它报告给客户端。客户端改变本地桌面,将适当的窗口置于前景。
其次,由于客户端发起的事件(例如Alt+Tab或在任务栏上的鼠标点击),焦点从第一远程窗口(第一服务器)转变到第二远程窗口(第一服务器)。在这个转变中,客户端接收WM_KILLFOCUS/WM_SETFOCUS消息形式的操作系统通知并将它报告给主机代理(第一服务器)。主机代理(第一服务器)改变它的本地桌面,将适当的窗口置于前景。
第三,焦点从第一远程窗口(第一服务器)转变到本地程序。在这个转变中,客户端接收WM_KILLFOCUS消息形式的操作系统通知并将它报告给主机代理(第一服务器)。因为主机程序没有在服务器上的相应窗口,主机代理(第一服务器)将它自己的窗口设置为前景以吸收焦点。为了避免在客户端设备上的主机代理窗口的出现,这个窗口在可见桌面区域外部被创建。
第四,焦点从本地程序转变到第一远程窗口(第一服务器)。在这个转变中,客户端接收WM_SETFOCUS消息形式的操作系统通知并将它报告给主机代理(第一服务器)。主机代理(第一服务器)改变它的本地桌面,将适当的窗口置于前景。
第五,焦点从第一远程窗口(第一服务器)转变到第三远程窗口(第二服务器)。在这个转变中,有在客户端设备上运行的无缝客户端的两个实例,每个服务器一个实例。这些无缝客户端中的每个独立于另一个,且不了解彼此(对多个连接上的顶层控制由连接中心执行,但它不涉及焦点平衡)。两个客户端都将另一客户端所创建的窗口处理为本地程序;也就是说,从第一客户端观点看,焦点转到本地程序;从第二客户端观点看,焦点从本地程序转到第三远程应用程序。
回波抑制和同时的焦点改变事件
焦点改变事件甚至可同时在主机和客户端上被激活。例如,主机程序将请求焦点改变,且用户将试图同时改变焦点窗口。在这种情况下,根据最后处理的请求来设置焦点。
在低速连接时,在用户动作和实际焦点改变事件之间可能有明显的延迟。在某些情况下,它可引起焦点振荡或未控制的焦点振荡(快速翻动)。无缝客户端使用回波抑制来避免焦点振荡。
在主机代理检测到前景窗口变化时,它总是比较新前景窗口与最近的客户端请求。如果焦点改变事件由于客户端请求而出现,则不需要将它报告给客户端且主机代理简单地忽略该事件。
客户端使用相同的技术,它将总是比较新前景窗口ID与最近的主机代理请求,且将不向主机报告任何主机发起的事件。
通知区域支持
在服务器的一些实施方式上,无缝主机代理可创建类类型Shell_TrayWnd的窗口。应用程序与这个窗口通信以使用通知区域服务。这个窗口操纵所有通知消息并将其转发到客户端。
如果客户端操作系统是Win9x/NT4或较新的版本,则客户端响应于从主机接收的消息来利用本地通知区域进行显示、创建或改变主机通知区域图标。在这些Systay图标上的任何鼠标活动都由客户端转发到主机。
如果客户端操作系统是NT3.51或更新的版本,则客户端为来自主机的每个主机通知区域图标创建或改变请求创建唯一可识别的图标。这些图标被创建为最小化窗口,所以它们看起来类似于标准的NT3.51图标窗口。进程通知
TWI_PACKET_CREATEP和TWI_PACKET_DELETEP分组支持会话中进程创建和终止的通知。虽然首先这可能看来更好地适合于控制虚拟通道,但是进程和窗口数据的紧密耦合使在无缝虚拟通道中完成进程通知变得更有效。此外,进程管理功能也可被添加在控制虚拟通道中,且接收方可按需要重新使用来自无缝虚拟通道的进程(和窗口)信息。
进程数据
TWI_PACKET_CREATEP分组提供会话进程的信息,不管它们是否拥有无缝窗口或图标。无缝窗口或图标可借助于分别在TWI_PACKET_CREATEW_V2和TWI_PACKET_ICON_V2分组中的进程ID字段来识别它们的进程所有权。
无缝桌面
当远程全屏桌面在无缝模式中时,则无缝虚拟通道可被启用,且在远程桌面中的每个窗口具有本地无缝窗口表示,其中包括桌面窗口本身和任务栏。
当TWI模式或RTWI模式ICA客户端配置设置针对已发布桌面被设置到打开时,无缝桌面模式在客户端处被启用。
单独地,无缝桌面模式在用户看来就像具有单个本地窗口表示的常规(非无缝)远程桌面一样。然而,无缝桌面模式用作作为对它的扩展而构建的多个特征的基础。例如:
1.客户端托管的应用程序和反向无缝:客户端上运行的应用程序单独在控制VC上被协商。在本文档中详述反向无缝。
2.对桌面的远程多触摸支持:需要多触摸协议的额外协议,其还没有被定义。但无缝桌面模式将允许粒状多触摸能力和每窗口输入。
3.对桌面的窗口监控:允许ICA客户端在远程桌面中的每个窗口上使用无头部(模拟)API。
反向无缝
客户端托管的应用程序(CHA)是在远程客户端机器上运行的并且也被称为反向无缝(RS)应用程序的一种类型的应用程序。
支持反向无缝的基本原理是通过允许“问题”应用程序在本地运行且仍然是统一桌面体验的部分来实现100%应用程序兼容性。这允许用户无缝地利用客户端的能力,解决困难的多媒体使用情况、设备访问问题、特殊地点要求等。
反向无缝确保在客户端机器上运行的某些应用程序看起来集成到远程全屏桌面中,正如在远程桌面本身中运行的常规应用程序一样。反向无缝集成涵盖很多视觉的和功能上的不同方面,例如开始菜单和桌面快捷方式、窗口、Alt-Tab、Systray、任务栏、客户端到主机和主机到客户端FTA以及URL重定向等。它意味着“反转”很多现有的远程桌面展示技术。
当RTWI模式ICA客户端配置设置被设置为打开时,反向无缝桌面模式被启用。反向无缝桌面模式是在前面的章节中描述的无缝桌面模式的扩展。当HOST AGENT FLAGSREVERSE SEAMLESS和TWI_CLIENT_FLAG_REVERSE_SEAMLESS标记由客户端和主机在无缝VC协议上协商时,则反向无缝命令被支持。
在一些实施方式中,主机协商的标记可用于确认主机支持反向无缝特征。这个标记与由客户端使用来告诉主机它支持反向无缝特征的TWI_CLIENT_FLAG_REVERSE_SEAMLESS一起起作用。当主机和客户端都支持这个能力时,反向无缝桌面模式被启用且反向无缝命令被支持。
每当主机能力标记被设置时,HOST_AGENT_FLAGS_STR_UTF8_CAPABLE标记也必须被设置。换句话说,由反向无缝协议命令和相应的元素传输的所有字符串和多字符串都使用UTF8。
类似地,TWI_CLIENT_FLAG_REVERSE_SEAMLESS标记用于确认客户端支持反向无缝特征。这个标记与由主机使用来告诉客户端它支持反向无缝特征的HOST_AGENT_FLAGS_REVERSE_SEAMLESS一起起作用。当主机和客户端都支持这个能力时,反向无缝桌面模式被启用且反向无缝命令被支持。
每当这个标记被设置时,TWI_CLIENT_FLAG_STR_UTF8_CAPABLE标记也必须被设置。换句话说,由反向无缝协议命令和相应的元素传输的所有字符串和多字符串都使用UTF8。
在一些实施方式中通过混合CHA的本地窗口与来自远程无缝桌面的无缝窗口并操纵Z次序来实现反向无缝。在正常情况下,表示远程桌面的无缝窗口在Z次序的底部处,然后是本地CHA窗口和来自远程桌面中的应用程序的无缝窗口(包括远程桌面的任务栏)的任何组合。
客户端可在多个远程桌面连接可能被加载的多监视器情形中运行,每个远程桌面占据所有监视器的一部分。从同一端点加载的每个远程桌面完全与其它远程桌面和本地桌面本身隔离。换句话说,从特定的桌面加载的CHA的窗口和Systray项目只集成在那个桌面中。
在一些环境中,未被发布为CHA的本地客户端应用程序也可与一个或多个远程桌面(例如膝上型计算机的电池安时计)集成。确切的行为可以是应用程序特定的或策略控制的。
无缝客户端结构和接口
与特定的远程会话相关的无缝操作(例如窗口操纵和焦点管理)可在细导线虚拟驱动器内部或在单独的无缝虚拟驱动器中实现。处理所有远程会话的所有顶级无缝功能,例如应用程序加载、客户端桌面设置、监控和无缝用户界面(UI)(连接中心)可被实现为客户端UI(WFCRUN)的一部分。
在一些实施方式中,无缝客户端也可使用用于所有内部客户端通信(包括无缝操作)的新的增强进程内通信(IPC)机制。由连接中心支持的公共顶级无缝功能可使用增强IPC机制来得到包括无缝专用信息的会话信息并执行包括无缝专用命令的命令。
连接中心也可提供用于与其它客户端UI部件通信的外部IPC。
窗口控制消息
在一些实施方式中,可从主机发送分组以将反向无缝窗口设置到前景。在其它实施方式中,主机可将分组发送到客户端以设置与反向无缝窗口有关的控制信息,例如显示或隐藏窗口、最大化、最小化或恢复窗口或任何其它类似的属性。
在又一些其它实施方式中,可响应于来自客户端的请求从主机发送分组以规定来自主机处的命令处理(例如系统托盘交互)的状态或返回代码。响应可指示成功、失败,并在一些实施方式中可包括成功或失败代码。
在又一些其它实施方式中,分组可被发送到客户端以将系统托盘消息传输到反向无缝或已发布应用程序。系统托盘消息可以是在主机环境中的系统托盘图标上的壳动作的结果。这些消息可包括唯一的序列号来识别消息。
在又一些其它实施方式中,主机可将分组发送到客户端以配置客户端的壳工作区域。在多监视器环境的情况下,可提供多个工作区域元素,每个代表特定监视器的配置。
类似地,在一些实施方式中,可从客户端发送分组以创建在主机会话中的反向无缝(RS)窗口存在(stub)表示,将它集成在主机的任务栏中,等等。这个命令可在客户端托管的应用程序(CHA)创建新RS窗口时被发送到主机。
在一些实施方式中,在客户端处的CHA和RS特征逻辑使用会话GUID来区分到同一会话的重新连接与到新会话的连接。客户端也可使用GUID来唯一地识别在多个同时的会话从同一客户端加载的情形中的会话,并例如在到断开的会话的重新连接之后将任何孤立的CHA及其RS窗口重新集成到相应的会话中。
在其它实施方式中,可将分组从客户端发送到主机以改变在主机会话中的反向无缝窗口的属性,在又一些其它实施方式中,客户端可将分组发送到主机以消除在主机会话中的反向无缝窗口的存根表示,将它从主机的任务栏移除、等等。当从主机会话断开或注销时,在一些实施方式中,在主机会话中的反向无缝窗口的存根表示自动被消除,而没有从客户端发送的显性分组。
在一些实施方式中,客户端可将分组发送到主机以通知主机反向无缝窗口已被设置到前景。在其它实施方式中,客户端可将分组发送到主机作为与CHA相关的新进程在客户端处已被创建的通知。该进程在这个分组被发送的时间可以有或没有与它相关的RS窗口。多个进程可与单个CHA的加载相关,在这种情况下多个分组被发送。在一些实施方式中,在客户端处的CHA和RS特征逻辑使用会话GUID来区分到同一会话的重新连接与到新会话的连接。客户端也使用GUID来唯一地识别在多个同时的会话从同一客户端加载的情形中的会话,并例如在到断开的会话的重新连接之后将任何孤立的CHA及其RS窗口重新集成到相应的会话中。借助于相同的创建窗口和创建进程消息来实现重新集成。
在其它实施方式中,客户端可将分组发送到主机以通知主机与CHA相关的进程在客户端处已被删除或终止。在一些实施方式中,在发送这样的通知之前,客户端可发送请求以消除与每个反向无缝窗口相关(如果有的话,则与同一进程ID相关)的窗口存根表示。在很多实施方式中,当从会话断开或注销时,在主机会话中的CHA的进程信息可被自动删除,而没有来自客户端的通知。
在又一些其它实施方式中,客户端可将分组发送到主机以设置与反向无缝窗口有关的控制信息,例如显示或隐藏窗口、最小化、最大化或恢复窗口等。在又一些其它实施方式中,客户端可将分组发送到主机作为反向无缝系统托盘图标的命令。该命令可包含壳通知数据,并可由客户端产生的序列号或ID唯一地识别。序列号可在来自主机的任何响应中被镜像。这允许多个未决的请求和异步或无序响应。通知可包括提示框图标、图标位图、状态消息、与图标或消息的交互或其它信息。在一些实施方式中,当鼠标事件或悬停在主机会话中出现在反向无缝系统托盘图标的划界矩形中时、当反向无缝图标被选择或使用键盘被激活时或当那些动作出现在提示框通知中时,可发送通知消息。
第D章:反向无缝功能描述
核心反向无缝功能
在一些实施方式中,在点击在虚拟桌面、远程桌面中的反向无缝应用程序快捷方式或虚拟桌面器具(通常被称为VDA)会话开始菜单时,应用程序可从客户端设备运行,但将显示在VDA会话内,好像在会话内部运行一样。
反向无缝应用程序窗口可位于VDA上的远程窗口之上、之下或之间。在很多实施方式中,反向无缝应用程序窗口遵循与在VDA上的远程窗口相同的规则。在一些实施方式中,也可使用来自VDA会话的命令行来加载反向无缝应用程序。
已发布反向无缝应用程序的快捷方式可被置于VDA会话中的用户开始菜单中。来自实际应用程序的图标可用于快捷方式图标。如果已发布反向无缝应用程序不可从客户端得到,则它们可使用视觉方法(例如使图标变灰、在图标上画X或其它方法)被指示为不可用。
应用程序/VDA关联
在一些实施方式中,下面的窗口集成到VDA会话中:
1.来自从该VDA加载的反向无缝应用程序进程的窗口。
2.来自经由FTA从VDA加载的反向无缝应用程序进程的窗口。
3.属于来自#1或#2的进程的子进程的任何窗口。
任何其它本地窗口都可保留在客户端本地桌面上。只要本地窗口未被设置为总是在顶部上,那么这包括来自与客户端代理或会话接收方应用程序有关的用户界面的特殊窗口。
RS窗口最小化和最大化行为
在一些实施方式中,如果适用的话,最小化反向无缝应用程序窗口将窗口最小化到VDA会话中的任务栏。点击任务栏条目应恢复窗口。
类似地,最大化反向无缝应用程序窗口将在VDA会话中最大化窗口,覆盖适当的可用工作区域。它应被最大化到正确的监视器,正如会话中的任何其它远程窗口一样。
任务栏集成
在一些实施方式中,反向无缝应用程序的多个实例将遵守VDI桌面的任务栏设置。也就是说,应用程序分组、排序和其它特征对于反向无缝应用程序应以与它对于VDA会话内的本地应用程序完成的相同的方式起作用。然而,在很多实施方式中,特定的规则可应用于下面描述的窗口的分组。
1.RS与RS应用程序窗口,RS与VDA托管的应用程序窗口
在一些实施方式中,来自同一RS应用程序进程的窗口可在单个任务栏条目中被分组,但即使被期望,也不严格地预期将具有来自在VDA上的相应应用程序的远程窗口的RS窗口分组。这可包括具有到在MicrosoftWindows 7VDA任务栏上的VDA托管的应用程序的固定(pinned)的快捷方式的RS应用程序窗口的分组。
2.到RS发布的应用程序的固定的快捷方式
在一些实施方式中,RS发布的应用程序在VDA的开始菜单中是可用的,且在Windows 7VDA任务栏上也将是可固定的。在一些实施方式中,到RS发布的应用程序的固定的快捷方式可与RS应用程序窗口或VDA托管的应用程序或到VDA托管的应用程序的固定的快捷方式分组在一起。3.RS应用程序窗口到Win7VDA任务栏的固定
在一些实施方式中,在VDA任务栏内可能不允许RS应用程序窗口的固定。在这些实施方式中,在Windows 7VDA上的RS应用程序窗口的默认任务栏任务可被限制到仅仅“关闭窗口”任务。在其它实施方式中,在与VDA托管的应用程序窗口分组在一起期间,VDA托管的应用程序的目的地列表将被重新使用,且对它的任何动作将只适用于VDA应用程序。
URL重定向
在一些实施方式中,URL可被重定向为都服从策略配置的从客户端到VDA和从VDA到客户端。反向无缝应用程序可将web内容重定向到安装在VDA会话中的应用程序。例如,如果作为反向无缝应用程序运行的媒体播放器应用程序显示URL链接,则点击链接可加载在VDA会话内安装的web浏览器。
在一些实施方式中,当URL被重定向时,URL加载的目标可兑现默认浏览器设置(即,多个安装的web浏览器中的哪个web浏览器将被默认使用)。
将通过URL匹配来实现策略。下面的列表将被创建以指导重定向行为:
1.在客户端侧上的白名单:只有所列出的URL由来自客户端的反向无缝浏览器操纵。任何其它web内容将被重定向到在VDA内的浏览器。
2.在VDA侧上的黑名单:所列出的URL被发送到反向无缝浏览器并从客户端侧被操纵。任何其它web内容将在VDA会话内被处理。
策略也可包括灵活模式匹配以允许通配符、对FTP URL的支持或其它特征。在一些实施方式中,重定向可包括在浏览器或基于web的应用程序内的URL重定向。在另一实施方式中,用于这个内部重定向的系统可包括浏览器助手对象,而在又一实施方式中,内部重定向可包括WinHTTP调用的较低级拦截。
在一些实施方式中,在产生例如来自web浏览器的404错误的错误时,重定向可包括后退功能以允许源浏览器试图访问URL。这可由于不同的网络可接入性而成功,或与直接拒绝服务比较可对最终用户导致可能更有意义的错误消息。这个后退可如下发生:
a.客户端:URL在白名单中但本地客户端加载失败。通过表示协议后退到VDA加载。URL不在白名单中但通过表示协议在VDA上的加载失败。后退到本地客户端加载。
b.VDA:URL不在黑名单中但在VDA上的加载失败。后退到本地客户端通过表示协议加载。URL在黑名单中但通过表示协议的本地客户端加载失败。后退到VDA加载。
文件打开/保存对话行为
在一些实施方式中,来自反向无缝应用程序的保存/另存为和打开对话可默认到本地客户端的文件系统以实现对本地内容或管理员可能配置的任何其它默认位置(例如,由VDA托管的应用程序也可访问的网络共享)的访问。
反向FTA
在一些实施方式中,经由在VDA会话内部的文件类型关联,反向无缝应用程序是可访问的。在这些实施方式中,一个或多个客户端文件类型关联被修改以指向VDA。仲裁和关联然后出现在VDA处。在VDA中,仲裁的FTA优先级如下:
1)反向无缝FTA
a.由管理员明确发布的作为发布反向无缝应用程序的部分的FTA。
b.从客户端取回的FTA。只有与反向无缝发布的应用程序相关的FTA将被取回。只有当(1a)未由管理员明确发布时才取回并使用这些客户端FTA。
2)在本地存在于VDA中的FTA。这可包括由在线插件在双跳情形中提供的FTA、或用于本地安装在应用程序中的应用程序的FTA。
在一些实施方式中,存在于不与反向无缝应用程序相关的客户端中的FTA将不在VDA中被传输和映射。在很多实施方式中,PTA加载的反向无缝应用程序将与VDA会话相关,且它们从该VDA会话加载。
Cookie和凭证重定向
在一些实施方式中,来自VDA/用户配置文件的cookie、凭证等可被提供到反向无缝应用程序。对于Web/HTTP Cookie,在一些实施方式中,它们将只从VDA重定向到客户端,而不是在另一方向上。在其它实施方式中,cookie和凭证可从客户端到主机或双向地被提供。
客户端进程控制
在一些实施方式中,VDA具有监控反向无缝应用程序进程的能力。用户或管理员可在故障或暂停的情况下从VDA终止这些进程。
在一个实施方式中,桌面察看器控制应用程序可提供用于控制和监控进程的用户界面。在其它实施方式中,VDA托管经由系统托盘中的图标、开始菜单项目或其它手段可发起的用户界面。反向无缝应用程序在虚拟通道上被枚举并在VDA托管的UI中被表示用于远程管理。在一些实施方式中,在VDA中的存根进程(stub process)可被创建以表示每个反向无缝应用程序,且这些进程可集成在VDA的本地任务管理器内。
系统托盘集成
在一些实施方式中,如果反向无缝应用程序利用系统托盘,则应用程序图标或其它元件可集成到VDA上的系统托盘内。在一些实施方式中,反向无缝应用程序和潜在的子进程可集成到VDA系统托盘内。基于策略,其它可以不被集成。例如在一些实施方式中,本地客户端电池安时计可以不体现到VDA的Systray,以避免造成使用户可能认为VDA的电池电量低的混淆。然而,基于用户或管理员要求,这样的策略是可配置的。类似地,利用系统托盘的其它UI元素例如工具提示和提示框也可被集成。
剪切和粘贴
在一些实施方式中,响应于安全或配置策略,可通过共享或拷贝剪贴板或剪贴板虚拟通道来集成在反向无缝应用程序和在VDA会话内的那些应用程序之间的剪切/粘贴功能。
打印屏幕
在一些实施方式中,系统可包括用于捕获屏幕图像的功能,例如由微软公司所提供的Windows操作系统的各种版本提供的打印屏幕功能。这些所捕获的图像经由下面的功能可包括来自反向无缝应用程序及其内容的图像:
1.RS应用程序窗口和VDA桌面
如果由最终用户例如使用本地客户端键盘来执行,则在VDA会话中执行的打印屏幕功能可捕获反向无缝应用程序窗口及其内容。这适用于打印屏幕和Alt打印屏幕(在特定窗口上)。
然而,如果VDA托管的应用程序使用API来擦掉屏幕内容,则它将不知道RS应用程序窗口的存在,且将不能够取回它:它将只取回VDA的桌面的内容和所有VDA托管的应用程序。这允许已发布应用程序的额外安全性。
2.在VDA托管的窗口上的Alt打印屏幕
客户端可使用键盘钩子来将事件重定向到相应的主机窗口。响应于重定向的事件,可在剪贴板虚拟通道上取回内容。
快速加载/桌面集成
在一些实施方式中,到开始菜单中的反向无缝应用程序的快捷方式可被拷贝到VDA上的桌面。在其它实施方式中,快捷方式也可移动到任务栏快速加载区域。在又一些其它实施方式中,快捷方式可“固定”在任务栏上。
RS应用程序发布
在一些实施方式中,用户界面可在管理员控制台中被提供以集中地创建并管理VDA的反向无缝应用程序。在其它实施方式中,具有对反向无缝应用程序的可选参数的命令行,并且它的工作目录可可选地用于发布应用程序。可在命令行和工作目录中使用环境变量。将从加载反向无缝应用程序的客户端评估环境变量。在很多实施方式中,命令行可支持任何数量的任意参数。在其它实施方式中,由Citrix系统公司制造的命令单(command-let),例如PowerShell命令单可用于集中地创建并管理反向无缝应用程序。
在一个实施方式中,可在发布时间预先配置图标和FTA。如果管理员控制台在客户端上运行或可直接访问它,则图标和FTA可从客户端机器被选择或取回。否则,可设置默认图标和FTA。在另一实施方式中,RS应用程序图标和FTA可在运行时间从客户端取回并被填充到VDA的开始菜单。
断开和注销
在一些实施方式中,在用户触发的VDA断开时,反向无缝窗口可作为本地窗口保持在客户端上打开。然而,重新连接到会话可从同一或不同的客户端发生,且RS应用程序可能必须在此期间关闭、或是不可用的(如果是新客户端)、且重新连接可在ACR上快速发生。因此,在一些实施方式中,客户端和主机在重新连接时可以不重新映射反向无缝窗口。在其它实施方式中,客户端和主机可悄然重新映射窗口。在又一些其它实施方式中,客户端和主机可向用户显现用户界面以允许他们选择哪些应用程序应被重新映射或重新加载。
类似地,如果VDA注销或关闭,则现有的反向无缝窗口也可关闭且进程以适当方式退出。
VDA窗口模式
在一些实施方式中,当VDA进入窗口模式时,反向无缝应用程序窗口可被最小化并从VDA移除。任务栏条目可停留在VDA任务栏上,且任务栏按钮可保存默认行为。当VDA回到全屏模式时,反向无缝应用程序可恢复,且正常操作重新开始。
在一个实施方式中,如果用户试图将反向无缝窗口从全屏VDA会话边界移动到不同的监视器内,则客户端将试图停止这种移动。这个行为可根据用户设置的策略而变得可配置。
掩蔽应用程序转变
在一些实施方式中,可使用用于掩蔽从VDA到VDA、从VDA到本地、或从本地到VDA桌面的应用程序转变的技术。例如,图7是描绘在两个相邻的全屏远程桌面中的本地应用程序窗口和远程应用程序窗口的集成的实施方式的方框图。本地应用程序窗口400与远程桌面环境406集成。本地应用程序窗口400’与远程桌面环境406’集成。在远程环境内的本地应用程序集成包括窗口、Systray、FTA操纵等。无缝用户体验也可能需要对相关VDA的本地应用程序窗口的限制。例如,在图7中将本地应用程序窗口400向右拖动并越过显示设备124’和远程桌面环境406’的边缘应具有与将窗口400拖动到没有监视器的空间相同的视觉效果:本地应用程序窗口400不应出现到远程桌面环境406’内。类似地,在图7中将本地应用程序窗口400’向左拖动并越过显示设备124和远程桌面环境406的边缘应具有与将窗口400’拖动到没有监视器的空间相同的视觉效果:本地应用程序窗口400’不应出现到远程桌面环境406内。监视器和远程桌面环境的其它组合也是可能的。为了实现期望的用户体验,根据一个方面,接收方可操纵应用程序的窗口区(经由SetWindowRgn),使得可见窗口区总是在相关VDA的范围内。接收方可掩蔽从VDA完全移出。有时设置任意第三方应用程序的窗口区可能对窗口有不希望有的影响(例如定制主题的损失),且调整真实窗口的尺寸有时是不可能的,且甚至可能破坏用户体验。因此,在另一方面中,当本地应用程序的真实窗口在用户控制(例如鼠标拖动或键盘)下几乎离开VDA的范围时,接收方可隐藏真实窗口,在复制真实窗口的图形的本地客户端设备上创建“影子”窗口,并接着调整影子窗口的尺寸或操纵它的可见区以保持影子窗口在VDA的范围内。接收方拥有影子窗口的特性,并从而有执行必要的变更的权限。接收方可从影子窗口到真实本地应用程序窗口代理键盘、鼠标或触摸事件。当影子窗口完全被带回到VDA窗口的范围内时,则接收方可恢复真实窗口并消除影子窗口。这使用户体验变得无缝,因为将本地窗口拖到VDA的边缘具有与将窗口拖到没有监视器的空间相同的视觉效果。
图11示出当本地应用程序窗口从远程到远程、从远程到本地、或从本地到远程桌面转变时,本地应用程序窗口的掩蔽。在图11中,隐藏的应用程序窗口1101部分地从第二/远程桌面1105转变到第一/远程桌面1103。窗口1101在第一桌面1103上被隐藏,如由隐藏区1111所示的。在桌面边界1107处,可见影子窗口1109出现在第二/远程桌面1105中作为可见区1113。在不同的实施方式中,桌面1103或桌面1105可以是本地桌面。
图8示出用于掩蔽如上面描述的从远程到远程、从远程到本地、或从本地到远程桌面的本地应用程序窗口转变的方法的实施方式的流程图。最初,在步骤801中,接收方跟踪本地应用程序相对于相关(远程)桌面窗口的窗口运动。本地应用程序可集成到VDA窗口(远程桌面)中。在另一情况下,本地应用程序可不集成到任何VDA中,例如,它存在于本地桌面中且应被防止转变到任何远程桌面中。在步骤803中,接收方检测本地应用程序窗口到相关(远程)桌面窗口的边界的接近度。在步骤805中,接收方存储本地应用程序窗口的位置和尺寸。在步骤807中,接收方隐藏本地应用程序窗口。隐藏可通过各种方法来完成:改变窗口特性、操纵Z次序使得该窗口在VDA窗口后面、将窗口移出屏幕、等等。在步骤809中,接收方在本地客户端设备上创建影子窗口,其复制真实窗口的图形并具有与在被隐藏之前的真实窗口相同的初始位置。作为一个例子,可使用PrintWindow API来完成图形的复制。在步骤811中,接收方将用户输入焦点转变到影子窗口内。在步骤813中,接收方将用户输入从影子窗口代理到真实本地应用程序窗口内。用户输入可包括键盘、鼠标、触摸、笔、激活的可访问性(菜单项目)事件等。在步骤815中,接收方操纵对影子窗口的窗口变化,例如位置、尺寸、前景(Z次序)等。作为用户输入的结果,接收方可调整影子窗口的尺寸或操纵它的可见区以总是将它保持在相关(远程)桌面窗口的范围内。作为一个例子,SetWindowRgn API可用于操纵窗口区。在步骤817中,接收方检测影子窗口位置何时完全在相关(远程)桌面窗口的边界内。在步骤819中,接收方将真实窗口恢复(例如,使其变得可见)到影子窗口的当前位置,且在步骤821中,接收方消除影子窗口。
按比例调整
在一些实施方式中,如果使用桌面察看器且启用按比例调整,则可使最大化的反向无缝应用程序窗口匹配VDA分辨率。在其它实施方式中,本地应用程序可在按比例缩放的VDA窗口内一致地按比例调整。在一些情况下,可使用“掩蔽”窗口的技术(上面描述的),由此,影子窗口根据VDA窗口的当前比例因子被拉伸/收缩。
图9是用于将按比例缩放的本地应用程序窗口集成到相称地按比例缩放的远程桌面窗口内的方法的实施方式的流程图。在步骤901中,接收方检测远程桌面窗口的比例缩放。在步骤903中,接收方创建对应于与按比例缩放的桌面窗口相关的所有本地应用程序窗口的影子窗口。在步骤905中,接收方隐藏与按比例缩放的桌面窗口相关的本地应用程序。接收方然后为每个影子窗口执行步骤907-911。在步骤907中,接收方根据相应的本地应用程序窗口的尺寸乘以桌面窗口的比例因子来调整大小。在步骤909中,接收方通过基于桌面窗口的比例因子拉伸或收缩来复制相应的本地应用程序窗口的图形。在步骤911中,接收方操纵对影子窗口的窗口变化,并将用户输入代理到本地应用程序窗口内,这类似于在图8中描述的方法。
视觉和功能应用程序特征的集成
有可用性和安全性考虑因素,其可能需要RS应用程序的选择性集成,这与集成所有本地应用程序相反。选择性集成影响应用程序窗口、Systray、FTA操纵等。下面的窗口可集成到VDA中:(1)来自从该VDA加载的RS应用程序进程的窗口;(2)来自经由FTA从VDA加载的RS应用程序进程的窗口;以及(3)属于来自#1或#2的进程的子进程的任何窗口。同样的原理适用于在VDA中的RS应用程序的Systray集成。
通常,任何其它本地客户端窗口都可保留在客户端桌面上且将不集成到VDA桌面中。这包括来自Citrix UI(例如Citrix接收方、PNA/在线插件、Dazzle、连接中心、认证窗口等)的特殊窗口。但基于策略配置,某些窗口/Systray项目可被允许通过远程桌面(例如Citrix接收方认证提示、UAC升高提示、膝上型计算机的电池安时计等)来显示。
在多监视器装备中,单独的VDA可从同一客户端加载并被分配到监视器的不同子集(多VDA情形)。可为用户提供客户端UI以将监视器分配给VDA。此外,可为本地桌面保留监视器的子集。RSS应用程序及其子进程将总是与它们的父VDA相关,它们从父VDA加载。这个关联包括窗口和Systray集成、FTA操纵等。
可以用不同的方式管理窗口关联。例如,在一个方面中,接收方可通过使窗口从VDA边界弹起而掩蔽从VDA到VDA、从VDA到本地、或从本地到VDA桌面等的应用程序转变。在另一方面中,接收方可允许完全转变(拖出屏幕)。在另一方面中,接收方可允许部分但不是完全拖出屏幕,只要鼠标停留在父VDA中即可。这可以是最自然的行为,但也执行剪切,类似于通过下列方法中的任一个方法的本地桌面行为:1)当RS应用程序窗口移动时,设置/限制它的窗口区,使得它由VDA边界正确地剪切;2)将RS应用程序窗口设置为VDA窗口的子窗口,并将剪切窗口属性设置到VDA窗口,使得RS应用程序由Windows OS自动剪切。可选地,可使用前面描述的窗口掩蔽技术。
为了正确地管理窗口关联,客户端可维持进程及其窗口的父子关系的等级结构。这对于当RS应用程序进程直接由ICA客户端加载时或当RS应用程序经由CreateProcess直接加载另一进程时的情况很简单。然而,当RS应用程序经由FTA加载,即,经由ShellExecute/ShellExecuteEx加载时更复杂,在这种情况下所加载的应用程序变成explorer.exe的子程序,或在当它经由COM加载并变成svchost.exe实例的子程序时的情况下。为了检测正确的父子关系,可在父RS应用程序进程中使用ShellExecute、ShellExecuteEx和类似API的钩挂。钩挂通常包括两个阶段:将钩挂模块/DLL引入外部进程中,后面是实际低级API钩挂。不同的机制可用于到外部进程中的模块/DLL引入。例如,微软AppInit_DLL注册表项可配置成包含将被载入到每个进程地址空间中的DLL的名称。这个方法需要管理员特权来设置注册表项,其可能在一些使用情况下不是合乎需要的。作为另一例子,可使用CreateRemoteThread API,其不需要管理员特权并且是由大部分调试程序使用来附着到外部进程的方法。作为又一例子,SetWindowsHookEx API可用作引入机制。一旦钩挂模块/DLL被引入,它就可对API例如ShellExecute、ShellExecuteEx等执行实际低级API钩挂。钩挂意味着钩挂模块/DLL例如通过操纵在调用表中的函数地址来用不同版本的API代替原始API。随后,当应用程序进程进行原始API调用时,它实际上结束调用在钩挂模块/DLL中实现的替代API。应用程序进程不知道钩挂。钩挂模块/DLL也可保存原始API的地址,所以如果必要,它也具有调用原始API的灵活性。例如,如果确定某些条件不被满足,或如果钩挂仅为了进程自测而完成,则钩挂模块/DLL可让应用程序进程调用原始API。例如,SetWindowsHookEx的钩挂可用于确定在两个进程之间的父子关系,其后钩挂模块将仍然调用原始SetWindowsHookEx API以让父RS应用程序进程继续进行子进程的创建,因而不干扰正常进程创建。
单实例应用程序
在一些实施方式中,单实例应用程序例如Windows媒体播放器可以用与其它应用程序不同的方式被操纵。目前,当用户从第二VDA加载同一单进程实例应用程序(例如WMP)时,WMP从第一VDA被“窃用”并插入第二VDA中。这可能不是理想的用户体验,并且破坏了反向无缝的错觉。因此,一些实施方式可使用在以前的VDA(不再在焦点上)内的任何数量的“影子”窗口以给予用户应用程序是多实例的印象。特定的影子窗口可代表真实窗口的动态图形、或可代表以前窗口内容的快照(在转变到新VDA和不同的文件/内容的载入之前)。
图10示出用于将单实例本地应用程序窗口集成到多个远程桌面的每个中的方法的实施方式的流程图。最初,在步骤1001中,接收方检测在第一(远程)桌面窗口内的单实例本地应用程序的存在或加载。在步骤1003中,接收方存储单实例应用程序窗口的最后位置、尺寸和(可选地)快照。在步骤1005中,接收方监测在第二(远程)桌面窗口内的同一单实例本地应用程序的加载,并可从第一(远程)桌面窗口移除真实窗口。在步骤1007中,接收方例如通过基于以前存储的窗口属性集成到第一(远程)桌面窗口内来创建对应于单实例本地应用程序窗口的影子窗口,显现以前存储的快照或动态地复制相应的本地应用程序窗口的图形,并操纵对影子窗口的窗口变化且将用户输入代理到本地应用程序窗口内,这类似于图8所示的方法。在步骤1009中,接收方检测关闭单实例应用程序的企图。如果待关闭的窗口在步骤1011中被确定为影子窗口,则在步骤1013中接收方关闭影子窗口并移除它与相应的(远程)桌面窗口的集成。如果待关闭的窗口在步骤1011中被确定为真实本地应用程序窗口,则在步骤1014-1015中如果有至少一个影子窗口,则接收方移除真实窗口与相应的(远程)桌面窗口的集成,将它集成在另一(远程)桌面窗口中的最近的影子窗口的位置中,并关闭最近的影子窗口。如果在步骤1014中没有检测到影子窗口,则在步骤1017中接收方终止单实例应用程序。
为了允许RS应用程序的适当工作区域(最大化/最小化/恢复窗口定位),VDA桌面的工作区域从主机发送到客户端。例如,RS应用程序将通过正确地确认VDA的任务栏尺寸和位置来最大化,这与可具有不同的位置和/或尺寸的本地桌面的任务栏相反。
此外,本地RS应用程序窗口可由ICA客户端有目的地从本地桌面的任务栏移除,并最终在从远程VDA断开/注销时恢复。为了实现此功能,我们可使用在任务栏分组Parra特征的研究期间发现的一些低级技术。这使当VDA是活动的时RS应用程序不是本地的错觉完整。
当VDA进入窗口模式时,RS应用程序窗口可被最小化并从VDA移除。任务栏条目可停留在VDA任务栏上,或它们也可被移除。当VDA回到全屏模式时,RS应用程序应恢复以重新开始正常操作。
好于本地体验
反向无缝提供代表具有本地客户端主题的远程VDA的窗口并因而将它们与RS应用程序无缝地混合的机会。这具有两个级别:(1)基本主题支持:窗口标题、边界、字体、尺寸、颜色等的客户端侧设置远离服务器并在会话中被使用;以及(2)使用本地客户端窗口标题和边界,与从本地视频缓冲区绘制相反。
此外,将Win7特征置于XP VDA桌面内的一些方面:咬合侧面、摇动效果等同样适用于RS应用程序和在远程VDA中运行的应用程序,因为VDA的所有窗口可被创建为本地无缝窗口。
使用不同的反向无缝设计,其中对于每个RS应用程序,我们在VDA中创建真实可见代理窗口并且也远离图形,也有代表具有VDA的界面外观的RS应用程序窗口的机会,类似于(1)、(2)和(3),但在相反的方向上。例如,在XP上运行的RS应用程序可具有Win7VDA的界面外观。
反向无缝应用程序漫游
如果VDA注销或关闭,现有的反向无缝窗口也将关闭,且该进程应以适当方式退出。远程设备可发送WM_CLOSE消息,但可能不强制关闭RS应用程序。在用户触发的VDA断开时,反向无缝窗口可停留在客户端上作为本地窗口。RS应用程序变得实际上被孤立。然而,行为应考虑下列事实:重新连接可从同一或不同的客户端发生,RS应用程序可与此同时被关闭或是不可用的(如果从新客户端断开),且重新连接可快速和悄然在ACR上发生。
在重新连接之后,用于重新集成现有的RS应用程序或重新加载它们的选项包括:(1)无重新集成;(2)悄然和自动重新集成;(3)通过提示和可选地重新加载RS应用程序来让用户决定;(4)在漫游到新客户端期间在前面的客户端处以适当方式关闭RS应用程序;(5)在漫游期间在新客户端处重新加载RS应用程序(结合前面的(4)完成此操作)。特定的行为可由策略和用户偏好控制。
双向Cookie和凭证集成
在可适用的场合,web cookie和凭证可在RS应用程序和VDA之间同步。此外,cookie可被沙盒化,所以它们不影响其它浏览器会话,包括多VDA情形。
作为VDA用户运行RS应用程序
用户可针对客户端环境被认证为身份A或可使用匿名用户账户(例如在信息亭型环境中)。用户接着加载VDA并认证为身份B。默认地,可由ICA客户端进程加载的RS应用程序将在A的上下文中运行。然而,存在下列情形,其中RS应用程序需要在身份B的上下文中运行以便访问域资源(就像在VDA中运行的应用程序一样)。
根据一个方面,接收方可使用在SSPI(安全支持提供者器接口)上的Kerberos。在向VDA认证之后,在VDA上的ICA RS代理调用SSPI以得到被称为SSPI数据的在不透明字节阵列中的服务票和加密鉴别码。SSPI数据可接着在ICA上被发送到客户端。客户端调用SSPI并向其传递SSPI数据。SSPI认证用户并返回登录凭证。客户端可接着使用登录凭证来在身份B的上下文中加载RS应用程序。然而,这可能要求客户端在相同的域中或在可信任域中。在VDA的用户上下文下加载RS应用程序可在每应用程序基础上策略地被配置。
服务器驱动映射
RS可能能够访问本地客户端驱动器以及共享网络驱动器。然而RS应用程序也可能需要访问VDA的驱动器,正如在VDA中运行的应用程序一样。因此,可使用类似于客户端驱动器映射(CDM)的服务器驱动映射(SDM),但在相反的方向上。
来自父VDA的服务器驱动可被枚举且只在相应的客户端RS应用程序的上下文中可访问。驱动映射可包括三个阶段:枚举、映射和重定向。一个实施方式将现有的主机CDM设计拷贝到客户端SDM设计中。这涉及网络提供者、具有网络服务特权的驱动映射服务和重定向器驱动器。映射功能也可由重定向器驱动器包含,因而消除对服务的需要。新VC协议对重定向以及主机代理访问VDA的驱动是需要的。可选的实施方式使用SMB(服务器消息块)来映射并远离服务器驱动。SMB可能需要单独的TCP连接。SDM针对RS应用程序也可包括服务器特殊文件夹重定向和服务器的我的电脑虚拟化。
服务器打印机映射
RS应用程序可访问本地打印机和一些网络打印机。VDA可访问映射到服务器的打印机和在ICA上的“自动创建的”客户端打印机。RS应用程序可以不访问映射到VDA的打印机,包括只从VDA可访问的网络打印机。
根据一个实施方式,选项包括完全反转现有的ICA打印解决方案并将VDA打印机映射到客户端。这个选项可能需要安装网络打印提供者、打印服务和通用打印驱动器(UDP),然后将VDA打印机映射到客户端并重定向在ICA上的打印业务。这可能需要管理特权来安装以及通过本地服务代理映射打印机。
根据另一实施方式,选项可包括使用从Citrix系统公司可得到的通用打印(UP)客户端和UP服务器。UP客户端和服务器可被提供有XenApp(XA)和XenDesktop(XD)主机。在反向无缝部署中,UP客户端可安装在ICA客户端机器上。VDA可提供由VDA可访问的网络打印机的列表,以便便于在客户端处的网络打印机发现,所述客户端可包括UP服务器本身。客户端可接着使用UP服务器来打印到网络打印机。UP客户端与网络打印机提供者相伴。没有将驱动器安装在客户端上或在安装期间或在打印映射期间有管理特权的要求,因为没有本地打印机被创建。通过安全网关的连接也将被支持。
Mac客户端应用程序、其它非Windows客户端的反向无缝集成
RS功能可被携带到非Windows客户端,例如Mac、LINUX、iPad等。Mac应用程序窗口可使用混合窗口模式(桌面加上无缝)被RS集成到全屏远程VDA窗口中。此外,类似于如何执行远程Windows应用程序的Mac Doc集成,可对本地Mac应用程序执行Windows任务栏集成(在远程VDA中)。
第E章:界面配置细节
在一些实施方式中,当用户不能区分开安装在他正使用的桌面上的应用程序与从他自己的客户端PC加载的应用程序时,本文描述的系统和方法提供对安装在客户端设备上的应用程序的支持,客户端设备以所谓的反向无缝模式在已发布桌面上运行。这样的应用程序总是在ICA客户端机器上运行,但ICA在VDA上以无缝方式(包括在任务栏中的集成和Alt+Tab切换)显示它的窗口。这些应用程序可被称为反向无缝应用程序或RS应用程序。
在很多实施方式中,RS应用程序可由管理员经由控制台UI或软件开发工具箱(SDK)发布,类似于桌面托管的应用程序发布。在一些实施方式中,控制台UI和SDK将允许规定RS应用程序的文件类型关联(FTA)而不从客户端设备导入FTA数据。
在一个实施方式中,服务器可在会话准备阶段接收RS应用程序的列表并可在远程桌面的开始菜单中创建到这些应用程序的快捷方式。在一些实施方式中,为了支持RS应用程序从同一或不同的客户端重新连接到断开的会话,服务器可维持在断开之前什么应用程序正运行的索引,并试图在重新连接的客户端上重新加载它们。
在一些实施方式中,可经由应用程序对象的属性来区分开常规托管的应用程序与反向无缝应用程序。属性可识别在桌面上托管的应用程序、反向无缝应用程序、在终端服务器上托管的应用程序、流式应用程序、或任何类似的标识符。
在一些实施方式中,在客户端到主机加载期间,主机可对已发布应用程序和传递到它们的参数(如果有的话)执行特殊安全验证。类似地,在其它实施方式中,主机可在主机到客户端加载期间验证RS(客户端托管的)已发布应用程序和传递到它们的参数(如果有的话)。在一个实施方式中,管理员可发布具有可选参数的RS(客户端托管的)应用程序。完全的验证将由默认主机完成:加载未发布的应用程序的请求可响应于安全策略而被拒绝。在一些实施方式中,将默认地拒绝加载具有在发布期间规定的模式之外的参数的应用程序的请求。
在一些实施方式中,RS应用程序可以在远程VDA的开始菜单中是可用的。VDA会话的命令行也可支持RS应用程序的脚本表示。在这些实施方式中,脚本可激活RS加载器代理并将请求发送到客户端,类似于在开始菜单上的快捷方式。
在一些实施方式中,可在一些实施方式中禁用参数验证以避免限制由用户配置的脚本。在另一实施方式中,禁用参数验证可以只影响参数的验证而不影响已发布应用程序本身的验证。已发布应用程序本身将因此总是在将加载请求发送到客户端之前被验证。
在一些实施方式中,由于安全考虑因素,从客户端机器导入一组文件类型关联可能不是合乎需要的。在这样的情况下,控制台UI或SDK可提供使文件扩展名与自由形式的RS应用程序相关的方法。因此,文件类型关联可在一些实施方式中基于默认FTA被注册,而在其它实施方式中,关联可通过提供关于来自命令行的扩展名的信息来被注册。这两种行为可由两个不同的参数集合实现并可应用程序于桌面托管的应用程序和反向无缝应用程序。
在一些实施方式中,用户一登录,RS应用程序就出现在远程桌面上的开始菜单中。类似地,远程桌面应具有被写到注册表的RS应用程序的FTA,使得内容加载将调用RS应用程序。为了实现这些功能,在一些实施方式中,当新会话被创建时,客户端代理可从已发布应用程序管理器取回应用程序的列表和与每个应用程序相关的FTA。这个信息可在会话准备阶段期间被提供到主机。在一些实施方式中,一旦管理器将应用程序的列表发送到主机或客户端的代理,这些应用程序就可在会话被建立时存储在主机或客户端代理的存储器内高速缓冲存储器中。
第F章:控制通道虚拟通道协议
在一些实施方式中,可经由所建立的远程桌面会话的控制虚拟通道传递从客户端到主机和从主机到客户端的通信。虚拟通道在一些实施方式中可作为虚拟驱动器或通过使用用户上下文代理和/或虚拟通道接口经由助手DLL来实现。这些通信可包括会话事件,其为向主机或客户端通知会话状态(包括锁定、断开、注销或其它状态)或从主机提供到客户端的全局唯一会话ID的命令。在一些实施方式中,主机可紧接着在能力协商之后或在之后的任何时间发送会话事件。
在一些实施方式中,会话事件通知可包括捆绑请求消息。如果主机具有用于处理会话事件的能力,则这些消息可被发送。在其它实施方式中,控制通信可包括捆绑响应消息。如果主机具有用于处理会话事件的能力并接收到捆绑请求消息,则这些消息可被发送。类似地,在其它实施方式中,如果主机具有用于处理会话事件的能力且客户端已发送捆绑请求,则控制通信可包括捆绑委托命令。用于处理会话事件的能力可因此独立于客户端和主机的其它能力而被协商,允许独立地使用这些特征。
类似地,在很多实施方式中,通信可包括用于执行客户端托管的应用程序并处理与客户端托管的应用程序有关的命令的能力的通知。客户端托管的应用程序(CHA)是在远程客户端机器上运行的应用程序。这些应用程序有时被称为反向无缝(RS)应用程序。
支持反向无缝应用程序的基本原理是通过允许“问题”应用程序在本地运行来在远程表示系统中实现100%应用程序兼容性,且仍然是统一桌面体验的部分。这允许用户无缝地利用客户端的能力,对付难的多媒体使用情况、设备接入问题、特殊地点要求等。
反向无缝(RS)确保在客户端机器上运行的某些应用程序看起来集成到远程全屏桌面中,正如在远程桌面本身中运行的常规应用程序一样。反向无缝集成涵盖视觉和功能上的很多不同方面,例如开始菜单和桌面快捷方式、窗口、Alt-Tab、Systray、任务栏、客户端到主机和主机到客户端FTA以及URL重定向等。
经由控制虚拟通道在客户端和主机之间发送的命令在一些实施方式中可用于通知其它设备关于用于执行客户端托管的应用程序、枚举在客户端环境处可用的应用程序、验证在客户端环境处可用的应用程序的可用性、请求并传输来自客户端的应用程序属性(例如图标或文件类型关联或其它信息)的枚举的能力。
对这些请求的响应在一些实施方式中可包括应用程序的一个或多个属性,其中包括应用程序ID。这可被发送以允许客户端和主机关于多个应用程序异步地通信,可能有无序响应,没有模棱两可或混淆。在其它实施方式中,序列ID可用于同一目的。在一个实施方式中,主机可发送正序列ID以表示主机加载的请求,且客户端可发送负序列ID以表示客户端发起的请求。序列ID可以是唯一的,虽然在很多实施方式中,它们可在处理对请求的响应完成之后被重新使用。
在一些实施方式中,响应也可包括应用程序的图标。在一个实施方式中,不同尺寸的多个图标可从客户端发送到主机,允许在必要时在主机上按比例调整。在一些实施方式中,默认图标可用于应用程序。
经由虚拟命令通道发送的命令在一些实施方式中也可包括请求CHA或资源(例如URL)的加载的命令。主机可在这些实施方式中紧接着在能力协商之后或在以后的任何时间发送这些命令。请求CHA的加载的命令可包括直接加载请求,其可在用户点击主机的开始菜单、桌面中的CHA快捷方式或其它界面元素时或当显性加载在主机会话中的命令行上被触发时出现。在其它实施方式中,请求CHA的加载的命令可包括文件类型关联加载,例如其中用户经由主机所提供的虚拟或远程桌面环境点击文档。在又一些其它实施方式中,请求CHA的加载的命令可包括URL,例如其中用户点击在电子邮件或在由主机执行的程序上察看并经由表示协议显示在客户端处的其它文档中列出的URL。
文件类型关联也可经由控制虚拟通道回送到客户端,例如当用户与一个CHA交互作用并加载与另一CHA相关的嵌入式内容时。例如,在Microsoft Outlook的CHA拷贝中打开.doc文档的附件可加载MicrosoftWord的CHA拷贝。文件类型关联可仍然由主机仲裁。因此,在这些实施方式中,客户端可将请求发送到具有文件类型的主机。主机可使用以相关应用程序为目标的加载响应做出响应。主机还可发送加载请求,镜像来自具有被解析到相关应用程序的文件类型的客户端的加载请求。客户端可接着加载应用程序和文档,并使用状态代码对主机做出响应。在一些实施方式中,在超时定时器过期之后,客户端使用状态代码做出响应的失败可被解释为故障。
客户端托管的应用程序请求/响应序列号
在一些实施方式中,ICACC_CHA_APP_LAUNCH_REQUEST_DATA结构可在主机和客户端应用程序和URL加载请求被共享。ICACC_CHA_APP_LAUNCH_REQUEST_DATA结构的序列号字段规定上面讨论的请求序列号。在一些实施方式中,当主机产生请求时,序列号必须是正值,而当客户端产生请求时,序列号必须是负值。然而,在如上面讨论的回送加载期间,主机在其加载请求中镜像原始客户端产生的序列号,其为负。在很多实施方式中,序列号必须是唯一的,但可在处理对请求的响应完成之后被重新使用。相同的序列号在响应中被镜像。在多个请求的情况下,序列号允许接收方(客户端或主机)发送异步和可能无序响应。
客户端托管的应用程序FTA解析
在一些实施方式中,一些CHA的FTA是管理员配置的。CHA的其余部分的FTA是客户端枚举的。主机拥有解析FTA的过程:
·CHA优先于主机应用程序。
·对于CHA FTA,如果管理员配置的或客户端枚举的FTA适用于多于一个CHA,则优先权被给予其FTA是管理员配置的CHA。
·如果管理员为多于一个CHA错误地配置同一FTA,则具有FTA的在枚举顺序中的第一个CHA被选择。
·客户端保证客户端枚举的FTA是唯一的,这默认在Windows OS客户端系统上发生。这是成立的,除非FTA在CHA枚举过程期间在客户端环境中被重新分配(例如,如果CHA在此期间被安装)。这是稀有的竞争情况,且如果它出现,则将优先权给予具有FTA的在枚举顺序中的第一个CHA。
会话GUID
在很多实施方式中,全局唯一标识符可用于识别每个远程主机会话。新GUID可针对每个新远程主机会话产生并可在会话断开/重新连接之间持续。在这样的实施方式中,在客户端处的CHA特征逻辑使用会话GUID来区分到同一会话的重新连接与到新会话的连接。CHA特征也使用GUID来唯一地识别在下列情形中的会话:多个同时的会话从同一客户端发起,且例如在重新连接到断开的会话之后将任何孤立的CHA重新集成到相应的会话中。
URL重定向白名单和黑名单
URL重定向白名单策略可经由虚拟命令通道从远程主机传递到客户端。在一个实施方式中,URL白名单是URL的多字符串,其规定客户端被允许在其本地环境中加载URL。该列表可包含完整的URL或通配符。不匹配URL白名单的任何URL可被重定向用于在主机处加载。
类似地,在这些实施方式中,主机可具有单独的URL黑名单,其规定不被允许在主机处加载并被重定向用于在客户端处加载的URL。URL黑名单仅在主机侧且不传递到客户端。然而,主机将不是已经在白名单中的任何条目从黑名单添加到白名单。因此,主机确保被发送到客户端的URL白名单总是URL黑名单的超集(即,相同或更大)。这被完成以防止在重定向中的无限循环。
在很多实施方式中,URL白名单和黑名单是相同的,但URL白名单也可以是适当的超集(更大),以便包括被允许在客户端和主机处加载的URL,即,不需要重定向。在一些实施方式中,客户端使用白名单且主机使用黑名单,以便最小化配置,因为大部分URL优先选择在主机处加载。在很多实施方式中,黑名单和白名单可包括用于URL中的模式或字符串匹配的通配符。
第G章:透明用户界面集成虚拟通道
在一些远程桌面系统中,客户端可在主机服务器的桌面(例如由Citrix系统公司制造的XenApp主机服务器)上重复地显示其登录状态指示器对话框(也被称为对话)。这些在客户端上显现为最上面的窗口。虽然登录状态指示器对话不窃用焦点,但是它们却停留在所有窗口的顶部上,并且如果用户想要在连接建立正在进行中继续与具有焦点的窗口交互,则需要将其向旁边拖出。有存在的两种登录状态指示器对话。第一登录状态指示器对话由客户端显现。第二登录状态指示器对话由服务器在连接的建立期间显现。当服务器对话以它看起来好像它是单个登录状态指示器对话一样被显示给用户时,客户端登录状态指示器对话关闭。
因此,当显现登录状态指示器对话时,通过在客户端上使用单个对话以显现所有登录状态指示器消息可提供更令人愉快的用户体验,而不考虑它们是起源于客户端还是服务器。新方案将显现不是最上面的窗口的对话,使得它可被覆盖而不必将它向旁边拖出,并被呈现在客户端上。
在一些实施方式中,增强的登录状态指示器体验被显示给用户,而不考虑客户端接收方部件是否正运行。当部件不存在时,指示器仍然提供尽可能接近地类似于理想对话的一致的加载体验。为了实现这个目标,在一些实施方式中,用于显现对话状态指示器对话的部件功能可在库中被提供,使得当部件不运行时客户端直接调用这个功能,以便同一代码可在任一情况下显示对话。功能可被提供为公共库或DLL的部分。图5示出传统登录状态指示器对话(主机产生的和主机呈现的)。图6示出根据例证性实施方式的登录状态指示器对话(主机产生的但由客户端呈现的)。
登录状态指示器的视觉外观是对话框,其指示连接正被建立。在一些实施方式中,这个对话框应只在连接花费超过4秒钟来连接时才显示。如果用户想要关于有关建立连接的当前状态是什么的更多的细节,他们可点击“更多信息”按钮。登录状态指示器对话也包含当用户被允许取消连接时用户可用的“取消”按钮。在连接过程期间的某个点,用户不被允许取消连接且必须等待它完成。包括视觉外观以及4秒超时和“更多信息”功能的用户界面行为由登录状态指示器显示机制定义。
虚拟通道目的
为了执行实现状态指示器通道的要求所需的有线数据传输的工作,新虚拟通道将被创建以在客户端和主机之间传递文本消息和其它UI部件元数据(不是位图)。如前面提到的,所使用的虚拟通道将是透明用户界面集成虚拟通道。这个通道的第一次使用将是用于从主机到客户端的登录状态指示器消息。虽然任何文本消息可在新虚拟通道上被发送,但是与本说明书相关的变化只与登录状态指示器消息有关。在登录状态指示器消息外部的服务器上产生的任何其它消息将不被发送到客户端以在本地被呈现,并将继续在服务器上被呈现。登录状态指示器消息特别是指当连接在客户端和主机之间建立时显示的那些消息。未被考虑为登录状态指示器消息的消息的例子包括许可困扰消息、许可错误消息和窗口登录提示。
客户端可用性
为了使客户端接收登录状态指示器消息,它必须载入虚拟通道驱动器。如果客户端载入状态指示器通道,则服务器将打开通道并试图将所有登录状态指示器消息发送到客户端,例外是客户端将向用户显示消息。如果服务器成功地打开VC,则服务器将不显示任何登录状态指示器消息。如果客户端不载入状态指示器通道,则服务器可继续以非集成方法显现登录状态指示器消息。
性能
为了处理对性能的任何潜在的影响,在一些实施方式中,登录状态指示器消息可异步地在新虚拟通道上被发送。这意味着服务器将不知道客户端是否不接收消息。也有可能在所有登录状态指示器消息显示在客户端上之前连接可变得完全建立。
本地化
在很多实施方式中,使用客户端通过OS被配置来显示的语言将登录状态指示器对话呈现在客户端计算机上。协议允许标题和题名的消息ID从服务器发送到客户端,使得客户端可在本地取回消息。协议也允许标题和题目文本从主机发送到客户端。只有当客户端不能使用消息ID在本地定位消息时,这个文本才由客户端使用。如果客户端使用从服务器发送的文本显示标题和/或题目,那么这个文本将用如在服务器上规定的本地语言并可以是与在客户端机器上使用的语言不相同的语言。
掩蔽
在由管理员或其他用户掩蔽的情况下、或当第一用户可察看第二用户的远程会话时,在大部分情况下,用户将不被掩蔽,直到他们完成登录为止。如果掩蔽在登录完成之前出现,则受到掩蔽者将看不到直接显现在客户端上的任何登录状态指示器消息。在一些实施方式中,询问用户是否同意他们被掩蔽的提示将不在本地产生并将继续通过服务器显示。
传递
传递会话可以指这样的实例,其中第一计算设备的用户观看第二计算设备的远程会话,第二计算设备本身观看第三计算设备的远程会话。可从第三设备通过第二设备传递指示器用于产生并显示在第一设备处。在一些实施方式中,登录状态指示器将显示在进行传递连接的会话中。副作用包括经由传递会话的主机会话呈现systray图标。换句话说,在传递会话中,在连接到服务器2时,在服务器l上呈现的登录状态指示器将继续在服务器上呈现并远离原始客户端。
模式切换
在一些实施方式中,如果用户在窗口和全屏之间改变模式,则消息将继续以它们在原始状态被建立时的原有方式显示。所以,例如,如果会话以全屏模式开始,则消息将由服务器显示(不通过Citrix接收方)。如果用户切换到窗口模式,则消息将继续由服务器显示。如果用户以窗口模式开始,相对应的情况也成立。如果Citrix接收方正运行,则消息通过Cirtrix接收方显示。如果用户切换到全屏,则消息将继续通过Citrix接收方在本地显示在客户端上,且因此将不被用户看到。
在一些实施方式中,状态指示器通道可提供与对话和消息框相关的数据的管道。这支持直接在客户端上以统一的方式显现客户端和主机产生的登录状态指示器消息。
这个特征可用于提供标准化通道作为主机状态和进展消息的管道。这允许主机消息的界面外观的统一。
在一些实施方式中,状态指示器通道消息发送可能更有效并通过用几个字符串和整数代替多个对话位图来减小对主机-客户端通信的带宽要求。交易
握手:虚拟通道(VC)的客户端到主机(C2H)结构可作为基本3向方握手的部分被分发。
虚拟通道(VC)协商:VC能力协商将使用3向握手。主机到客户端(H2C)请求和C2H响应导致一个主机-客户端同步往返。H2C委托可以是异步的。
消息分发:在很多实施方式中,状态指示器通道可使用透明用户界面集成VC的异步协议模式。
因为登录状态指示器消息被异步地分发,例如在单独的线程上排队和分发,则总登录速度将不以任何可测量的方式被影响。唯一的不利效应可能是,首先只有主机状态指示器消息将被分发到具有多达2个主机-客户端往返的额外延迟的ICA客户端。这取决于消息相对于主机侧状态指示器UI渲染器模块的载入何时产生和它发起VC通信的能力。在显示任何随后的状态指示器消息中不应有延迟。然而,在第一消息中的潜在延迟可使它短时间存在,即,被下一消息立即压制(clobbered)。因此在一些实施方式中,消息可被同时分发。在这种情况下,登录速度将不利地被2个主机-客户端往返(确切的时间将取决于连接时延)影响。
智能审计器
在一些实施方式中,智能审计器功能可允许远程桌面会话的记录和重放。这些实施方式可包括捕获客户端的更新显示,这意味着经由状态指示器通道消息分发的状态对话将不被智能审计器记录。在一个实施方式中,为了提供记录能力,登录状态指示器消息发送可在智能审计被启用时被禁用。
虽然用结构特征和方法动作特有的语言描述了主题,但应理解,在所附权利要求中规定的主题并不一定限于上面描述的特定特征或动作。更确切地,上面描述的特定特征和动作被公开为实现权利要求的示例形式。
Claims (19)
1.一种无缝地集成的方法,包括:
建立客户端设备和远程主机之间的连接,所述远程主机提供对在所述远程主机上远程地执行的一个或多个应用的访问权;
通过所述客户端设备将关于在所述客户端设备上执行的第一应用的第一信息发送到所述远程主机;以及
当所述第一应用满足一个或多个预定标准时,通过所述客户端设备在与所述远程主机相关的用户界面内呈现基于所述第一应用的第一用户界面部件,所述第一用户界面部件以与所述远程主机相关的用户界面一致的外观呈现。
2.如权利要求1所述的无缝地集成的方法,其中所述第一用户界面部件包括在与所述远程主机相关的所述用户界面内直接呈现的应用窗口,而没有与所述客户端设备相关的介入应用窗口。
3.如权利要求1所述的无缝地集成的方法,还包括隐藏由所述客户端设备产生的相应用户界面元素,以及将所述第一用户界面部件呈现在所述相应用户界面元素的位置上。
4.如权利要求1所述的无缝地集成的方法,其中所述一个或多个预定标准包括每个客户端托管的应用的预定已发布状态。
5.如权利要求4所述的无缝地集成的方法,其中所述已发布状态选自包括本地应用、流式应用和远程应用的组。
6.如权利要求1所述的无缝地集成的方法,其中所述一个或多个预定标准包括预定的重要性级别。
7.如权利要求1所述的无缝地集成的方法,其中所述一个或多个预定标准包括所述第一用户界面部件是认证窗口、警告窗口和电池安时计之一。
8.如权利要求1所述的无缝地集成的方法,其中所述一个或多个预定标准包括与多个远程虚拟桌面之一的关联。
9.一种无缝地集成的方法,包括:
建立客户端设备和远程主机之间的连接,所述远程主机提供对在所述远程主机上远程地执行的一个或多个应用的访问权,其中所述客户端设备配置成具有对第一组一个或多个资源的访问权,且所述远程主机配置成具有对第二组一个或多个资源的访问权;
通过所述客户端设备将关于在所述客户端设备上执行的第一应用的第一信息发送到所述远程主机;
通过所述客户端设备在与所述远程主机相关的用户界面内呈现基于所述第一应用的第一用户界面部件,所述第一用户界面部件以与所述远程主机相关的用户界面一致的外观呈现;以及
当所述第一应用满足一个或多个预定标准时,给所述第一应用提供对所述第二组一个或多个资源的访问权。
10.如权利要求9所述的无缝地集成的方法,其中所述第二组一个或多个资源中的每个资源包括存储资源。
11.如权利要求10所述的无缝地集成的方法,其中给所述第一应用提供对第二组一个或多个存储资源的访问权包括:
枚举所述第二组一个或多个存储资源;
将所述第二组一个或多个存储资源中的每个存储资源映射到所述客户端设备的本地可访问的存储标识符;以及
基于相应的所映射的本地可访问存储标识符来重定向对所述第二组一个或多个存储资源中的每个存储资源的I/O请求。
12.如权利要求11所述的无缝地集成的方法,其中所述枚举由网络提供者执行。
13.如权利要求11所述的无缝地集成的方法,其中所述重定向由设备驱动器执行。
14.如权利要求11所述的无缝地集成的方法,其中所述映射由网络提供者和设备驱动器之一执行。
15.如权利要求11所述的无缝地集成的方法,其中所述映射和所述重定向由服务器消息块(SMB)应用层协议执行。
16.如权利要求9所述的无缝地集成的方法,其中所述第二组一个或多个资源中的每个资源包括打印资源。
17.如权利要求16所述的无缝地集成的方法,其中给所述第一应用提供对第二组一个或多个打印资源的访问权包括:
给所述客户端设备配置网络打印提供者、打印设备和一个或多个通用打印驱动器;
将所述第二组一个或多个打印资源中的每个打印资源映射到所述客户端设备的本地可访问打印资源;以及
基于相应的所映射的本地可访问打印资源来重定向对所述第二组一个或多个打印资源中的每个打印资源的打印请求。
18.如权利要求16所述的无缝地集成的方法,其中给所述第一应用提供对第二组一个或多个打印资源的访问权包括:
给所述远程主机配置通用打印服务器;
给所述客户端设备配置通用打印客户端,其中所述通用打印客户端向所述客户端设备提供枚举所述第二组一个或多个打印资源中的一个或多个打印资源的网络打印机提供者服务;以及
基于在打印请求中识别的所枚举的打印资源,将所述打印请求从所述客户端设备重定向到第二组一个或多个打印资源中的一个打印资源。
19.如权利要求18所述的无缝地集成的方法,还包括当所述第二组一个或多个打印资源中的所述一个打印资源在防火墙后面时,通过代理将所述打印请求隧穿至所述第二组一个或多个打印资源中的所述一个打印资源。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/600,331 | 2012-08-31 | ||
US13/600,331 US9210213B2 (en) | 2011-03-03 | 2012-08-31 | Reverse seamless integration between local and remote computing environments |
US13/644,659 | 2012-10-04 | ||
US13/644,659 US8970450B2 (en) | 2011-03-03 | 2012-10-04 | Reverse seamless integration between local and remote computing environments |
PCT/US2013/056746 WO2014035936A2 (en) | 2012-08-31 | 2013-08-27 | Reverse seamless integration between local and remote computing environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104704448A CN104704448A (zh) | 2015-06-10 |
CN104704448B true CN104704448B (zh) | 2017-12-15 |
Family
ID=50184600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380044275.9A Active CN104704448B (zh) | 2012-08-31 | 2013-08-27 | 本地和远程计算环境之间的反向无缝集成 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10855747B2 (zh) |
EP (1) | EP2891038B1 (zh) |
CN (1) | CN104704448B (zh) |
WO (1) | WO2014035936A2 (zh) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447818B2 (en) * | 2012-11-21 | 2019-10-15 | Qatar Foundation | Methods, remote access systems, client computing devices, and server devices for use in remote access systems |
CN103973488B (zh) * | 2014-04-29 | 2018-07-24 | 上海上讯信息技术股份有限公司 | 基于rdp协议的运维管理系统及方法 |
US20160313958A1 (en) * | 2015-04-27 | 2016-10-27 | Microsoft Technology Licensing, Llc | Cross-platform command extensibility |
US10565026B2 (en) | 2015-07-29 | 2020-02-18 | Microsoft Technology Licensing, Llc | Containing an application in an immersive non-windowed environment |
US20170052773A1 (en) * | 2015-08-17 | 2017-02-23 | Google Inc. | Application installs using remote applications |
US10270671B2 (en) | 2015-09-22 | 2019-04-23 | Microsoft Technology Licensing, Llc | External process user interface isolation and monitoring |
CN106603607A (zh) * | 2015-10-16 | 2017-04-26 | 中兴通讯股份有限公司 | 私有云桌面系统及其实现服务的方法和装置 |
US10776770B2 (en) * | 2015-10-19 | 2020-09-15 | Synchrony Bank | System and method for integrating data from a remote server with a client application |
CN105338261B (zh) * | 2015-11-02 | 2018-09-25 | 天脉聚源(北京)教育科技有限公司 | 一种传输图片相关信息的方法及装置 |
US10757079B2 (en) * | 2016-01-12 | 2020-08-25 | Jens Schmidt | Method and system for controlling remote session on computer systems using a virtual channel |
CN107786601B (zh) * | 2016-08-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种信息处理方法、终端及服务器 |
FR3057080A1 (fr) * | 2016-09-30 | 2018-04-06 | Orange | Procede de restitution d'une pluralite de messages echanges avec un agent conversationnel |
US10491700B2 (en) * | 2016-11-18 | 2019-11-26 | Sap Se | Application managed service instances |
US10884808B2 (en) | 2016-12-16 | 2021-01-05 | Accenture Global Solutions Limited | Edge computing platform |
US10860342B2 (en) * | 2017-01-30 | 2020-12-08 | Citrix Systems, Inc. | Computer system providing cloud-based session prelaunch features and related methods |
CN108667887B (zh) * | 2017-07-03 | 2021-07-23 | 无锡辰云科技股份有限公司 | 基于融合计算的桌面虚拟方法、装置和系统 |
CN107404664B (zh) * | 2017-07-17 | 2019-11-05 | 深圳创维-Rgb电子有限公司 | 一种绘制多路通道ui的方法、智能设备和存储介质 |
US20190068478A1 (en) * | 2017-08-28 | 2019-02-28 | Lakeside Software, Inc. | System and method for collecting performance and usage data from computing devices |
US10545625B2 (en) * | 2017-09-11 | 2020-01-28 | Citrix Systems, Inc. | Redirection of web content |
CN107783811A (zh) * | 2017-11-15 | 2018-03-09 | 北京易讯通信息技术股份有限公司 | 一种虚拟桌面环境中的可控文件传输方法 |
CN108563479A (zh) * | 2018-03-21 | 2018-09-21 | 新华三云计算技术有限公司 | 重定向窗口的控制方法、装置、虚拟机和重定向系统 |
CN108519900B (zh) * | 2018-03-28 | 2021-03-09 | 新华三云计算技术有限公司 | 显示窗口控制方法、装置及服务器 |
CN110719309B (zh) * | 2018-07-13 | 2022-04-26 | 中兴通讯股份有限公司 | 虚拟桌面连接方法、代理装置、系统、设备及存储介质 |
US11647095B1 (en) * | 2018-10-02 | 2023-05-09 | Intuit Inc. | Method and system for orchestrating communications between application services through a unified connector platform |
US10552639B1 (en) | 2019-02-04 | 2020-02-04 | S2 Systems Corporation | Local isolator application with cohesive application-isolation interface |
US10558824B1 (en) | 2019-02-04 | 2020-02-11 | S2 Systems Corporation | Application remoting using network vector rendering |
US10452868B1 (en) | 2019-02-04 | 2019-10-22 | S2 Systems Corporation | Web browser remoting using network vector rendering |
US11880422B2 (en) | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
US11055256B2 (en) * | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
US11240344B2 (en) * | 2019-06-06 | 2022-02-01 | Servicenow, Inc. | Integration of remote software applications into a workflow |
US11042714B2 (en) * | 2019-06-11 | 2021-06-22 | Dell Products L.P. | Synchronizing the language of a remote session with a client's language |
US11316929B2 (en) * | 2019-07-08 | 2022-04-26 | Vmware, Inc. | Virtualized remote working place |
CN110557624A (zh) * | 2019-07-16 | 2019-12-10 | 西安万像电子科技有限公司 | 数据传输方法、装置及服务器 |
KR102633594B1 (ko) * | 2019-10-04 | 2024-02-05 | 삼성전자주식회사 | 디스플레이장치, 그 제어방법 및 기록매체 |
US11799741B2 (en) * | 2019-10-29 | 2023-10-24 | Fannie Mae | Systems and methods for enterprise information technology (IT) monitoring |
CN110825537B (zh) * | 2019-11-04 | 2023-03-14 | 联思智云(北京)科技有限公司 | 基于c/s架构的远程应用的调用方法、装置和设备 |
CN111638826A (zh) * | 2020-05-28 | 2020-09-08 | 维沃移动通信有限公司 | 界面显示方法、装置和电子设备 |
US11057464B1 (en) * | 2020-06-04 | 2021-07-06 | Citrix Systems, Inc. | Synchronization of data between local and remote computing environment buffers |
CN111931170A (zh) * | 2020-07-15 | 2020-11-13 | 北京钛星数安科技有限公司 | 一种网站应用隔离防护系统 |
AU2021215265B1 (en) * | 2020-07-29 | 2022-01-27 | Citrix Systems, Inc. | Sharing resources between client devices in a virtual workspace environment |
US20220100504A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Shared data fabric processing client reset system and method |
CN112511585B (zh) * | 2020-10-16 | 2023-06-30 | 麒麟软件有限公司 | 一种基于安卓系统远程桌面的输入重定向方法及系统 |
CN112612436A (zh) * | 2020-12-24 | 2021-04-06 | 广州视源电子科技股份有限公司 | 一种投屏切换方法、装置、设备及存储介质 |
WO2022141159A1 (en) * | 2020-12-30 | 2022-07-07 | Citrix Systems, Inc. | Secure session resume |
US11449625B2 (en) * | 2021-01-18 | 2022-09-20 | Vmware, Inc. | Optimized directory enumeration and data copy for client drive redirection in virtual desktops |
US11474840B1 (en) | 2021-05-17 | 2022-10-18 | Citrix Systems, Inc. | Computing device and related methods providing virtual session launching from previously cached assets |
WO2022246343A1 (en) * | 2021-05-17 | 2022-11-24 | Citrix Systems, Inc. | Computing device and related methods providing virtual session launching from previously cached assets |
CN114980302B (zh) * | 2021-07-21 | 2024-02-06 | 广州地铁集团有限公司 | 一种设备反向集成的接入、管理方法、系统和计算机设备 |
US20230033583A1 (en) * | 2021-07-30 | 2023-02-02 | Advanced Micro Devices, Inc. | Primary input-output queue serving host and guest operating systems concurrently |
CN113778583A (zh) * | 2021-08-03 | 2021-12-10 | 福建升腾资讯有限公司 | 一种云桌面的本地应用的发布方法、装置、设备和介质 |
US20230044823A1 (en) * | 2021-08-09 | 2023-02-09 | Xcelastream, Inc. | Multi-presence application architecture |
CN114285891B (zh) * | 2021-12-15 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种基于sslvpn的会话重建方法及系统 |
US11567646B1 (en) * | 2022-01-13 | 2023-01-31 | Vmware, Inc. | Resizing a logon screen or other user interface (UI) elements prior to login |
US20230266985A1 (en) * | 2022-02-18 | 2023-08-24 | Microsoft Technology Licensing, Llc | Execution redirection in a remote desktop |
CN114840351A (zh) * | 2022-03-18 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种按键事件处理方法、装置、控制设备及可读存储介质 |
US11734032B1 (en) | 2022-03-31 | 2023-08-22 | Microsoft Technology Licensing, Llc | Virtual desktop switching and communications |
WO2023191928A1 (en) * | 2022-03-31 | 2023-10-05 | Microsoft Technology Licensing, Llc | Virtual desktop switching and communications |
DE102022111859A1 (de) * | 2022-05-11 | 2023-11-16 | Rangee GmbH | Verfahren zum betreiben eines remote desktop systems, remote desktop system und computerlesbares medium |
CN115408093B (zh) * | 2022-10-31 | 2023-05-02 | 统信软件技术有限公司 | 远程连接方法、远程连接系统、计算设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101583940A (zh) * | 2006-01-17 | 2009-11-18 | 基达罗(以色列)有限公司 | 多计算环境的无缝集成 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5874960A (en) | 1995-07-05 | 1999-02-23 | Microsoft Corporation | Method and system for sharing applications between computer systems |
US6437803B1 (en) | 1998-05-29 | 2002-08-20 | Citrix Systems, Inc. | System and method for combining local and remote windows into a single desktop environment |
US5949975A (en) | 1997-03-12 | 1999-09-07 | Microsoft Corp. | Method and system for negotiating capabilities when sharing an application program with multiple computer systems |
US6574618B2 (en) | 1998-07-22 | 2003-06-03 | Appstream, Inc. | Method and system for executing network streamed application |
US6735623B1 (en) * | 2000-02-09 | 2004-05-11 | Mitch Prust | Method and system for accessing a remote storage area |
US7269735B2 (en) * | 2000-08-28 | 2007-09-11 | Contentgaurd Holdings, Inc. | Instance specific digital watermarks |
US7246351B2 (en) | 2001-02-20 | 2007-07-17 | Jargon Software | System and method for deploying and implementing software applications over a distributed network |
US9032325B2 (en) | 2001-06-08 | 2015-05-12 | Real Enterprise Solutions Development B.V. | Management of local applications in local and remote desktops in a server-based computing environment |
ATE439631T1 (de) | 2001-06-08 | 2009-08-15 | Real Entpr Solutions Dev Bv | Serverbasierte rechnerumgebung |
US7165239B2 (en) * | 2001-07-10 | 2007-01-16 | Microsoft Corporation | Application program interface for network software platform |
ATE392662T1 (de) | 2002-01-30 | 2008-05-15 | Real Entpr Solutions Dev Bv | Verfahren und programme zur einstellung von prioritätsstufen in einem datenverarbeitungssystem mit multiprogrammierung und priorisierte warteschlangenbildung |
US7433962B2 (en) | 2002-02-28 | 2008-10-07 | Real Enterprise Solutions Development B.V. | Multi-user computer system with an access balancing feature |
US20030163510A1 (en) | 2002-02-28 | 2003-08-28 | Bob Janssen | Method of administering user access to application programs on a computer system |
US7197537B2 (en) * | 2002-03-29 | 2007-03-27 | Bellsouth Intellectual Property Corp | Remote access and retrieval of electronic files |
US7010755B2 (en) | 2002-04-05 | 2006-03-07 | Microsoft Corporation | Virtual desktop manager |
US20030218597A1 (en) * | 2002-05-22 | 2003-11-27 | Migdat Hodzic | System and architecture for a wireless interactive presentation system |
US20040010622A1 (en) * | 2002-07-11 | 2004-01-15 | O'neill Thomas G. | Method and system for buffering image updates in a remote application |
US20040162076A1 (en) * | 2003-02-14 | 2004-08-19 | Atul Chowdry | System and method for simplified secure universal access and control of remote networked electronic resources for the purposes of assigning and coordinationg complex electronic tasks |
US7574691B2 (en) * | 2003-03-17 | 2009-08-11 | Macrovision Corporation | Methods and apparatus for rendering user interfaces and display information on remote client devices |
US7493592B2 (en) | 2003-10-24 | 2009-02-17 | Microsoft Corporation | Programming interface for a computer platform |
WO2005059750A1 (en) | 2003-12-16 | 2005-06-30 | Real Enterprise Solutions Development B.V. | Memory management in a computer system using different swapping criteria |
US20050262075A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Systems, Inc. | Systems and methods for collaboration shared state management |
US20090254982A1 (en) | 2006-10-23 | 2009-10-08 | Real Enterprise Solutions Development B.V. | Methods, programs and a system of providing remote access |
US8286082B2 (en) * | 2007-09-12 | 2012-10-09 | Citrix Systems, Inc. | Methods and systems for providing, by a remote machine, access to a desk band associated with a resource executing on a local machine |
US8190707B2 (en) * | 2007-10-20 | 2012-05-29 | Citrix Systems, Inc. | System and method for transferring data among computing environments |
US20090210514A1 (en) | 2008-02-15 | 2009-08-20 | Nokia Corporation | Methods, apparatuses, computer program products, and systems for mobile web browsing |
US8473851B2 (en) | 2008-02-27 | 2013-06-25 | Cisco Technology, Inc. | Multi-party virtual desktop |
US20140040862A1 (en) | 2008-04-03 | 2014-02-06 | Adobe Systems Incorporated | Copying Reusable Components from a Remote Source |
PL2149088T3 (pl) | 2008-05-14 | 2013-02-28 | Real Entpr Solutions Development B V | System i metoda śledzenia i powiadamiania o stanach obliczeniowych |
WO2010135359A2 (en) | 2009-05-19 | 2010-11-25 | Smx Inet Global Services Sa | Providing a local device with computing services from a remote host |
US8650559B2 (en) | 2009-08-27 | 2014-02-11 | Red Hat Israel, Ltd. | Automatic remote installation of a virtualization host |
US8370510B2 (en) | 2009-12-18 | 2013-02-05 | Microsoft Corporation | Remote application presentation over a public network connection |
US8713474B2 (en) | 2010-10-05 | 2014-04-29 | Citrix Systems, Inc. | Providing user interfaces and window previews for hosted applications |
US8866701B2 (en) * | 2011-03-03 | 2014-10-21 | Citrix Systems, Inc. | Transparent user interface integration between local and remote computing environments |
US8650150B2 (en) * | 2011-03-14 | 2014-02-11 | Sap Ag | System and method of relating data and generating reports |
US9104475B2 (en) * | 2011-04-07 | 2015-08-11 | Qualcomm Innovation Center, Inc. | Methods and apparatus for managing operations of a web browser by predicting time period of subsequent script execution activity |
US8676937B2 (en) | 2011-05-12 | 2014-03-18 | Jeffrey Alan Rapaport | Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging |
US9201709B2 (en) | 2011-05-20 | 2015-12-01 | Citrix Systems, Inc. | Shell integration for an application executing remotely on a server |
US20120311457A1 (en) | 2011-06-06 | 2012-12-06 | Cisco Technology, Inc. | Merging Remote and Local Interfaces for Application Integration |
US8769011B2 (en) | 2011-06-21 | 2014-07-01 | Cisco Technology, Inc. | Survivable browsing in virtualized desktop environment when host connectivity is lost |
US20130036369A1 (en) * | 2011-08-02 | 2013-02-07 | SquaredOut, Inc. | Systems and methods for managing event-related information |
US9171139B2 (en) * | 2011-08-05 | 2015-10-27 | Vmware, Inc. | Lock screens to access work environments on a personal mobile device |
US20130125009A1 (en) | 2011-11-16 | 2013-05-16 | International Business Machines Corporation | Remote desktop localized content sharing |
US20130219272A1 (en) * | 2012-02-22 | 2013-08-22 | International Business Machines Corporation | Monitoring and guiding user input among multiple computer program user interfaces |
US10353718B2 (en) | 2012-07-23 | 2019-07-16 | Vmware, Inc. | Providing access to a remote application via a web client |
US9277237B2 (en) * | 2012-07-30 | 2016-03-01 | Vmware, Inc. | User interface remoting through video encoding techniques |
-
2013
- 2013-08-27 EP EP13832798.6A patent/EP2891038B1/en active Active
- 2013-08-27 CN CN201380044275.9A patent/CN104704448B/zh active Active
- 2013-08-27 WO PCT/US2013/056746 patent/WO2014035936A2/en active Application Filing
-
2018
- 2018-12-20 US US16/227,284 patent/US10855747B2/en active Active
-
2020
- 2020-11-23 US US17/101,223 patent/US20210152626A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101583940A (zh) * | 2006-01-17 | 2009-11-18 | 基达罗(以色列)有限公司 | 多计算环境的无缝集成 |
Also Published As
Publication number | Publication date |
---|---|
US20210152626A1 (en) | 2021-05-20 |
EP2891038B1 (en) | 2020-06-24 |
EP2891038A4 (en) | 2016-04-06 |
US20190132381A1 (en) | 2019-05-02 |
WO2014035936A2 (en) | 2014-03-06 |
US10855747B2 (en) | 2020-12-01 |
EP2891038A2 (en) | 2015-07-08 |
CN104704448A (zh) | 2015-06-10 |
WO2014035936A3 (en) | 2014-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104704448B (zh) | 本地和远程计算环境之间的反向无缝集成 | |
US20210004096A1 (en) | Touch Support for Remoted Applications | |
US10200453B2 (en) | Reverse seamless integration between local and remote computing environments | |
CN104303151B (zh) | 用于在服务器上远程执行的应用的壳集成 | |
US9588637B2 (en) | Transparent user interface integration between local and remote computing environments | |
US10976981B2 (en) | Remote desktop exporting | |
US7987432B1 (en) | Seamless integration and installation of non-native application into native operating system | |
CN102971706B (zh) | 将信息从安全虚拟机重定向到不安全虚拟机 | |
CN105159521B (zh) | 用表示远程应用的用户界面元素更新停靠栏的方法和系统 | |
JP6083244B2 (ja) | リモートデスクトップセッションにおいて複数のマウス入力を提供する方法 | |
US9380456B1 (en) | System, method and computer program product for dynamically switching operating systems in a virtual mobile device platform | |
US10459772B2 (en) | System, method and computer program product for capturing touch events for a virtual mobile device platform | |
US9667703B1 (en) | System, method and computer program product for generating remote views in a virtual mobile device platform | |
US20130205385A1 (en) | Providing intent-based access to user-owned resources | |
CN107003865A (zh) | 利用远程应用的文件共享 | |
CA2637980A1 (en) | Methods and systems for providing access to a computing environment | |
CN108885572A (zh) | 安全驱动程序平台 | |
US11734032B1 (en) | Virtual desktop switching and communications | |
JP2021522721A (ja) | 画面キャプチャ方法、端末および記憶媒体 | |
US11240293B2 (en) | System for supporting remote accesses to a host computer from a mobile computing device | |
US20130328887A1 (en) | Methods and systems for hosting a portion of a user interface and synchronizing animation between processes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |