Citrix虚拟应用和桌面

Citrix ICA虚拟通道

警告:

不正确地编辑注册表可能会导致严重的问题,可能需要重新安装操作系统。Citrix不能保证由于不正确使用注册表编辑器而导致的问题能够得到解决。请自行承担使用注册表编辑器的风险。在编辑注册表之前,请务必备份注册表。

什么是ICA虚拟通道?

Citrix Workspace应用程序与Citrix虚拟应用程序和桌面服务器之间的大部分功能和通信都是通过虚拟渠道进行的。虚拟通道是使用Citrix虚拟应用程序和桌面服务器进行远程计算的必要部分。虚拟通道用于:

  • 音频
  • COM端口
  • 磁盘
  • 图形
  • LPT端口
  • 打印机
  • 智能卡
  • 第三方自定义虚拟通道
  • 视频

新的虚拟渠道有时会与新版本的Citrix虚拟应用程序和台式机服务器以及Citrix工作区应用程序产品一起发布,以提供更多的功能。

虚拟通道

虚拟通道由与服务器端应用程序通信的客户端虚拟驱动程序组成。Citrix虚拟应用程序和台式机附带了各种虚拟渠道。它们被设计成允许客户和第三方供应商通过使用提供的软件开发工具包(sdk)来创建自己的虚拟渠道。

虚拟通道为完成各种任务提供了一种安全的方式。例如,正在与客户端设备通信的Citrix Virtual Apps服务器上运行的应用程序,或者正在与客户端环境通信的应用程序。

在客户端,虚拟通道对应于虚拟驱动程序。每个虚拟驱动提供一个特定的功能。有些是正常操作所必需的,有些是可选的。虚拟驱动程序在表示层协议层操作。通过复用Windows Station (WinStation)协议层提供的通道,可以在任何时候激活多个协议。

以下函数包含在该注册表路径下的VirtualDriver注册表值中:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Citrix \ ICA客户机模块\先进发动机\ Configuration \ \ \ ICA 3.0

HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Citrix \ ICA客户机模块\先进发动机\ Configuration \ \ \ ICA 3.0(64位)

  • Thinwire3.0(必需)
  • ClientDrive
  • ClentPrinterQueue
  • ClentPrinterPort
  • 剪贴板
  • ClientComm
  • ClientAudio
  • LicenseHandler(必需)
  • 双胞胎(必需)
  • 智能卡
  • ICACTL(必需)
  • SSPI
  • TwainRdr
  • 用户体验
  • Vd3d

注意:

您可以通过从注册表项中删除一个或多个值来禁用特定的客户端功能。例如,如果您想要删除客户端剪贴板,请删除该单词剪贴板

这个列表包含客户端虚拟驱动程序文件及其各自的功能。Citrix虚拟应用程序和Windows的Citrix工作区应用程序使用这些文件。它们以动态链接库(用户模式)的形式存在,而不是Windows驱动程序(内核模式),但通用USB虚拟通道中描述的通用USB除外。

  • dll -用于桌面合成重定向的Direct3D虚拟通道
  • vdcamN.dll -双向音频
  • vdcdm30n.dll -客户机驱动器映射
  • dll -客户端COM端口映射
  • vdcpm30N.dll -客户机打印机映射
  • dll - ICA控制通道
  • vddvc0 .dll—动态虚拟通道
  • vdeuemn.dll -终端用户体验监控
  • vdgusbn.dll -通用USB虚拟通道
  • vdkbhook.dll -透明的密钥传递
  • dll -类似于UDP传输的帧鹰显示通道
  • vdmmn.dll -多媒体支持
  • vdmrvc.dll -移动接收器虚拟通道
  • vdmtcn .dll -多点触摸支持
  • vdscardn.dll -智能卡支持
  • vdsens.dll -传感器虚拟通道
  • vdspl30n.dll -客户端UPD
  • vdsspin.dll——Kerberos
  • vdtuin.dll -透明的UI
  • vdtw30n.dll -客户端瘦线
  • vdtwin.dll——无缝
  • vdtwn.dll——马克·吐温

一些虚拟通道被编译成其他文件。例如,剪贴板映射在wfica32.exe中

64位的兼容性

Citrix工作区应用程序为Windows是64位兼容。与大多数32位编译的二进制文件一样,这些客户端文件也有64位编译的等效文件:

  • brapi64.dll
  • confmgr.dll
  • ctxlogging.dll
  • ctxmui.dll
  • icaconf.exe
  • icaconfs.dll
  • icafile.dll
  • pnipcn64.dll
  • pnsson.dll
  • ssoncom.exe
  • ssonstub.dll
  • vdkbhook64.dll

通用USB虚拟通道

通用USB虚拟通道实现使用两个内核模式驱动程序以及虚拟通道驱动程序vdgusbn.dll:

  • ctxusbm.sys
  • ctxusbr.sys

ICA虚拟通道如何工作

虚拟通道可以通过多种方式加载。Shell(用于服务器的WfShell和用于工作站的picshell)加载一些虚拟通道。一些虚拟通道作为windows服务托管。

Shell加载的虚拟通道模块,例如:

  • EUEM
  • 吐温
  • 剪贴板
  • 多媒体
  • 无缝会话共享
  • 时区

有些被加载为内核模式,例如:

  • CtxDvcs。sys -动态虚拟通道
  • Icausbb。sys -通用USB重定向
  • Picadm。sys -客户端驱动器映射
  • 异食癖。sys - COM端口重定向
  • Picapar。sys - LPT端口重定向

服务器端图形虚拟通道

从XenApp 7.0和XenDesktop7.0开始,ctxgfx.exe为工作站和基于会话的终端服务器托管图形虚拟通道。Ctxgfx托管与相应驱动程序交互的特定平台模块(Icardd.dllRDSH和vdod.dllvidd.dll工作站)。

对于XenDesktop 3D Pro部署,需要在VDA上为对应的GPU安装OEM图形驱动程序。Ctxgfx加载专门的适配器模块来与OEM图形驱动程序交互。

在windows服务中托管专门的频道

在Citrix虚拟应用程序和桌面服务器上,各种渠道被托管为windows服务。这种托管为一个会话中的多个应用程序和服务器上的多个会话提供一对多语义。这类服务的例子包括:

  • Citrix设备重定向服务
  • Citrix动态虚拟通道服务
  • Citrix终端用户体验监控服务
  • Citrix位置和传感器虚拟通道服务
  • Citrix多点触控重定向服务
  • 思杰打印管理服务
  • Citrix智能卡服务
  • Citrix音频重定向服务(仅限Citrix虚拟桌面)

Citrix virtual Apps上的音频虚拟频道是使用Windows audio服务托管的。

在服务器端,所有客户端虚拟通道都通过WinStation驱动程序Wdica.sys路由。在客户端,wfica32.exe中内置了相应的WinStation驱动程序,它轮询客户端虚拟通道。这个映像说明了虚拟通道客户机-服务器连接。

虚拟通道连接

此概述包含使用虚拟通道的客户机-服务器数据交换。

  1. 客户端连接到Citrix虚拟应用程序和桌面服务器。客户机将其支持的虚拟通道的信息传递给服务器。
  2. 服务器端应用程序启动,获取虚拟通道的句柄,并可选地查询关于通道的其他信息。
  3. 客户端虚拟驱动和服务器端应用通过以下两种方式传递数据:

    • 如果服务器应用程序有数据要发送到客户机,则数据会立即发送到客户机。当客户端接收到数据时,WinStation驱动程序将ICA流中的虚拟通道数据解复用,并立即将其传递给客户端虚拟驱动程序。
    • 如果客户端虚拟驱动程序有数据要发送到服务器,那么在下一次WinStation驱动程序轮询它时,就会发送数据。当服务器接收到数据时,它将排队,直到虚拟通道应用程序读取它。无法通知服务器虚拟通道应用程序已接收到数据。
  4. 当服务器虚拟通道应用程序完成时,它将关闭虚拟通道并释放任何已分配的资源。

使用虚拟通道SDK创建自己的虚拟通道

注意:

Citrix sdk可在Citrix开发人员门户网站https://developer.cloud.com

使用virtual channel SDK创建虚拟通道需要中级编程知识。使用此方法提供客户端和服务器之间的主要通信路径。例如,如果您正在实现在客户端使用设备(如扫描器),以便与会话中的进程一起使用。

注意:

  • 虚拟通道SDK要求WFAPI SDK编写虚拟通道的服务器端。

  • 由于Citrix虚拟应用程序和桌面增强了安全性,您必须指定在ICA会话中允许打开哪些虚拟通道。有关更多信息,请参见虚拟通道允许列表策略设置

使用ICA客户端对象SDK创建自己的虚拟通道

使用ICA Client Object (ICO)创建虚拟通道比使用virtual channel SDK更容易。通过在程序中创建一个命名对象来使用ICOCreateChannels方法。

重要的是:

由于10.00版本的Citrix Receiver(适用于Windows和Windows的Citrix Workspace应用程序)增强了安全性,在创建ICO虚拟通道时必须采取额外的步骤。

虚拟通道的传递功能

当您在ICA会话(也称为直通会话)中使用Windows的Citrix Workspace应用程序时,Citrix提供的大多数虚拟通道都是未经修改的。在使用额外跃点的客户机时,有一些考虑事项。

以下功能在单跳或多跳情况下都是相同的:

  • 客户端COM端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 客户端乌利希期刊指南
  • 终端用户体验监控
  • 通用USB
  • Kerberos
  • 多媒体支持
  • 智能卡的支持
  • 透明的关键直通
  • 吐温

由于延迟的固有性质以及压缩、解压缩和呈现等因素在每一跳执行,客户端所经历的每一跳都可能影响性能。受影响地区包括:

  • 双向音频
  • 文件传输
  • 通用USB重定向
  • 无缝的
  • Thinwire

重要的是:

默认情况下,在直通会话中运行的客户端实例映射的客户端驱动器被限制为连接客户端的客户端驱动器。

在Citrix虚拟桌面会话和Citrix虚拟应用会话之间的虚拟通道的传递功能

当您在Citrix虚拟桌面服务器上的ICA会话(也称为直通会话)中使用Windows的Citrix Workspace应用程序时,Citrix提供的大多数虚拟通道都是未经修改的。

具体来说,在Citrix虚拟桌面服务器上,有一个运行的VDA钩子picaPassthruHook.这个钩子使客户端认为它在CPS服务器上运行,并使客户端进入传统的直通模式。

我们支持以下传统虚拟渠道及其功能:

  • 客户端
  • 客户端COM端口映射
  • 客户端驱动器映射
  • 客户端打印机映射
  • 通用USB(由于性能限制)
  • 多媒体支持
  • 智能卡的支持
  • SSON
  • 透明的关键直通

安全和ICA虚拟通道

确保使用安全是规划、开发和实现虚拟通道的一个重要部分。在本文档中有几个对特定安全领域的引用。

最佳实践

打开虚拟通道,当你连接重新连接.当您注销和关闭虚拟通道时断开连接

在创建使用虚拟通道函数的脚本时,请记住以下指导原则。

虚拟渠道命名:

最多可创建32个虚拟通道。32个频道中有17个是预留给特殊用途的。

  • 虚拟通道名长度不能超过7个字符。

  • 前三个字符保留给供应商名,后四个字符保留给通道类型。例如,CTXAUD表示Citrix音频虚拟通道。

虚拟通道用7个字符(或更短)的ASCII名称来表示。在ICA协议的一些早期版本中,虚拟通道被编号。数字现在是基于ASCII名称动态分配的,这使得实现更加容易。正在开发内部使用的虚拟通道代码的用户可以使用任何不与现有虚拟通道冲突的7个字符的名称。只使用数字和大小写ASCII。在添加自己的虚拟通道时,遵循现有的命名约定。有几个预定义的通道。预定义的通道以OEM标识符CTX开头,仅供Citrix使用。

双跳转支持:

虚拟通道 是否支持双跳?
音频 没有
浏览器内容重定向 没有
清洁发展机制 是的
CEIP 没有
剪贴板 是的
连续(MRVC) 没有
控制风险 是的
HTML5视频重定向(v1) 是的
键盘、鼠标 是的
多点触控 没有
NSAPVC 没有
印刷 是的
SensVC 没有
智能卡 是的
吐温 是的
USB VC 是的
WAYCOM设备-K2M使用USB VC 是的
摄像头视频压缩 是的
Windows媒体重定向 是的

另请参阅

  • ICA虚拟通道SDK
  • Citrix开发者网络是所有涉及使用Citrix sdk的技术资源和讨论的中心。在这个网络中,您可以找到对SDK、示例代码和脚本、扩展和插件以及SDK文档的访问。还包括Citrix开发者网络论坛,在这里围绕每个Citrix sdk进行技术讨论。