Citrix虚拟应用和桌面服务

串行端口

大多数新电脑都没有内置的串口(COM)。通过使用USB转换器,端口很容易添加。适用于串行端口的应用程序通常涉及传感器、控制器、旧的读卡器、记事本等。一些USB虚拟com端口设备使用供应商特定的驱动程序来代替windows提供的驱动程序(usbser.sys)。这些驱动程序允许你强制USB设备的虚拟COM端口,这样即使连接到不同的USB插槽它也不会改变。这可能是从设备管理器>端口(COM & LPT) >属性或从控制设备的应用程序。

客户端COM端口映射允许连接到用户终端COM端口的设备在虚拟会话中被使用。您可以像使用任何其他网络映射一样使用这些映射。

对于每个COM端口,操作系统中的驱动程序分配一个符号链接名,例如COM1和COM2。应用程序然后使用链接访问端口。

重要的是:

因为设备可以通过直接使用USB连接到端点,并不意味着它可以使用通用USB重定向。有些USB设备具有虚拟COM口的功能,应用程序可以像物理串口一样访问这些虚拟COM口。操作系统可以抽象COM端口,并将它们视为文件共享。两种常见的虚拟COM协议是CDC ACM和MCT。当通过RS-485端口连接时,应用程序可能根本无法工作。获得一个RS-485到rs232转换器使用RS-485作为一个COM端口。重要的是:

某些应用程序只有在客户端工作站连接到COM1或COM2时才能一致识别设备(例如签名板)。

将客户端COM端口映射到服务器COM端口

您可以通过三种方式将客户端COM端口映射到Citrix会话:

  • 管理控制台的政策。有关策略的更多信息,请参见端口重定向策略设置
  • VDA命令提示符。
  • 远程桌面(终端服务)配置工具。
  1. 启用客户端COM端口重定向自动连接客户端COM端口Studio政策。应用后,HDX监视器中有一些信息。

    HDX监控图像

  2. 如果自动连接客户端COM端口映射端口失败,可以手动映射端口或使用登录脚本。登录到VDA,在命令提示窗口中输入:

    Net use comx: \\ client \ comz:

    Net使用comx: \\ client \ clientport: comz:

    X为VDA的COM口编号(可映射端口1 ~ 9)。Z是要映射的客户端COM端口的编号。

    要确认操作成功,输入网络使用在VDA命令提示符。显示的列表包含映射的驱动器、LPT端口和映射的COM端口。

    Net使用命令映像

  3. 要在虚拟桌面或应用程序中使用此COM端口,请安装您的用户设备应用程序并将其指向映射的COM端口名称。例如,如果您将客户端上的COM1映射到服务器上的COM3,那么在VDA中安装您的COM端口设备应用程序,并在会话期间将其指向COM3。使用这个映射的COM端口,就像您在用户设备上使用COM端口一样。

重要的是:

COM端口映射不兼容tapi。不能将Windows电话应用程序编程接口(TAPI)设备映射到客户端COM端口。TAPI为应用程序定义了一种标准方法,用于控制数据、传真和语音呼叫的电话功能。TAPI管理信令,包括拨号、接听和结束呼叫。此外,补充服务,如保持,转移,和会议电话。

进行故障排除

  1. 确保您可以绕过Citrix直接从终端访问设备。当端口没有映射到VDA时,您没有连接到Citrix会话。遵循设备附带的任何故障排除说明,并首先验证它在本地工作。当一个设备连接到一个串行COM端口时,一个注册表项就会在这里创建:解决图像

    您也可以通过运行命令提示符来找到这些信息chgport /查询

    从命令提示符图像排除故障

    如果设备的故障排除说明不可用,请尝试打开PuTTY会话。选择会话而在串行线指定您的COM端口。

    通过PuTTY会话镜像进行故障排除

    您可以运行模式在本地命令窗口中。输出可能显示正在使用的COM端口和波特率/奇偶校验/数据位/停止位,这是您在PuTTY会话中需要的。如果PuTTY连接成功,按“”输入查看设备的反馈。你输入的任何字符都可能会在屏幕上重复,或者回应。如果此步骤不成功,则无法从虚拟会话访问设备。

  2. 将本地COM端口映射到VDA(使用策略或。Net use comx: \\ client \ comz:),并重复上一步的PuTTY操作,但这次使用的是VDA PuTTY。如果PuTTY无法显示错误无法打开到COM1的连接。无法打开串口,另一个设备可能正在使用COM1。

  3. 运行chgport /查询.如果VDA上的内置Windows串行驱动程序自动分配\Device\Serial0到您的VDA的COM1端口,请执行以下操作网络使用。

    B.删除VDA上已有的映射(如COM1)。

    Net使用com1 / delete

    C.将设备映射到VDA。

    Net use com1: \\ client \ com3:

    D.将VDA上的应用程序指向COM3。

    最后,尝试将本地COM端口(例如COM3)映射到VDA上的另一个COM端口(除了COM1,例如COM3)。确保你的应用程序指向它:Net使用com3: \\客户端\ com3

  4. 如果现在确实看到端口映射,PuTTY正在工作,但没有数据传递,这可能是一个竞争条件。应用程序可能在映射之前连接并打开端口,从而锁定端口不被映射。试试下面的方法:

    • 打开发布在同一服务器上的第二个应用程序。等待端口映射几秒钟,然后打开尝试使用该端口的实际应用程序。
    • 从Active Directory中的组策略编辑器而不是服务的Manage > Full Configuration界面启用COM端口重定向策略。这些政策是客户端COM端口重定向自动连接客户端COM端口.以这种方式应用的策略可能会在管理控制台策略之前处理,以确保COM端口被映射。将Citrix策略推入VDA并存储在:HKLN\SOFTWARE\Policies\Citrix \

    • 为用户使用这个登录脚本,或者不发布应用程序,而是发布一个.bat脚本,它首先删除VDA上的任何映射,重新映射虚拟COM端口,然后启动应用程序:

    @echo off NET USE COM1 /delete NET USE COM2 /delete NET USE COM1: \\CLIENT\COM1: NET USE COM2: \\CLIENT\COM2: MODE COM1: BAUD=1200(或任何需要的值)MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1(或任何需要的值)START C:\Program Files\ <您的软件路径>\ .exe

  5. Sysinternals的过程监控是最后的手段。当在VDA上运行这个工具时,找到并过滤像COM3, picaser这样的对象。sys, CdmRedirector,特别是.exe。任何错误都可能显示为“拒绝访问”或类似的错误。

串行端口