串行端口
大多数新电脑没有内置串行(COM)端口。这些端口可以通过使用 USB 转换器轻松添加。适用于串行端口的应用程序通常涉及传感器、控制器、旧式支票读取器、手写板等。某些 USB 虚拟 COM 端口设备使用供应商专用驱动程序,而不是 Windows 提供的驱动程序 (usbser.sys)。这些驱动程序允许您强制指定 USB 设备的虚拟 COM 端口,使其即使连接到不同的 USB 插槽也不会改变。这可以通过设备管理器 > 端口 (COM 和 LPT) > 属性或控制设备的应用程序来完成。
客户端 COM 端口映射允许在虚拟会话期间使用连接到用户端点上 COM 端口的设备。您可以像使用任何其他网络映射一样使用这些映射。
对于每个 COM 端口,操作系统中的驱动程序会分配一个符号链接名称,例如 COM1 和 COM2。应用程序随后使用该链接访问端口。
重要提示:
设备可以直接通过 USB 连接到端点,但这并不意味着它可以使用通用 USB 重定向进行重定向。某些 USB 设备充当虚拟 COM 端口,应用程序可以像访问物理串行端口一样访问它们。操作系统可以抽象 COM 端口并将其视为文件共享。虚拟 COM 的两种常见协议是 CDC ACM 或 MCT。当通过 RS-485 端口连接时,应用程序可能根本无法工作。获取 RS-485 到 RS232 转换器,以便将 RS-485 用作 COM 端口。 重要提示:
某些应用程序仅在设备(例如,签名板)连接到客户端工作站上的 COM1 或 COM2 时才能一致地识别它。
将客户端 COM 端口映射到服务器 COM 端口
您可以通过三种方式将客户端 COM 端口映射到 Citrix® 会话:
- Studio 策略。有关策略的详细信息,请参阅端口重定向策略设置。
- VDA 命令提示符。
- 远程桌面(终端服务)配置工具。
-
启用客户端 COM 端口重定向和自动连接客户端 COM 端口 Studio策略。应用后,HDX™ Monitor 中会提供一些信息。

-
如果自动连接客户端 COM 端口未能映射端口,您可以手动映射端口或使用登录脚本。登录到 VDA,并在命令提示符窗口中键入:
NET USE COMX: \\CLIENT\COMZ:
或者
NET USE COMX: \\CLIENT\CLIENTPORT:COMZ:
X 是 VDA 上的 COM 端口号(端口 1 到 9 可用于映射)。Z 是您要映射的客户端 COM 端口号。
要确认操作成功,请在 VDA 命令提示符下键入 NET USE。出现的列表包含映射的驱动器、LPT 端口和映射的 COM 端口。

-
要在虚拟桌面或应用程序中使用此 COM 端口,请安装您的用户设备应用程序并将其指向映射的 COM 端口名称。例如,如果您将客户端上的 COM1 映射到服务器上的 COM3,请在 VDA 中安装您的 COM 端口设备应用程序,并在会话期间将其指向 COM3。像使用用户设备上的 COM 端口一样使用此映射的 COM 端口。
重要提示:
COM 端口映射与 TAPI 不兼容。您无法将 Windows 电话应用程序编程接口 (TAPI) 设备映射到客户端 COM 端口。TAPI 定义了应用程序控制数据、传真和语音呼叫电话功能的标准方式。TAPI 管理信令,包括拨号、接听和结束呼叫。此外,还包括保持、转接和电话会议等补充服务。
故障排除
-
确保您可以直接从端点访问设备,绕过 Citrix。当端口未映射到 VDA 时,您未连接到 Citrix 会话。请遵循设备随附的任何故障排除说明,并首先验证其在本地是否正常工作。 当设备连接到串行 COM 端口时,会在此处所示的配置单元上创建一个注册表项:

您还可以通过运行 chgport /query 从命令提示符中找到此信息。

如果设备没有故障排除说明,请尝试打开 PuTTY 会话。选择 Session,并在 Serial line 中指定您的 COM 端口。

您可以在本地命令窗口中运行 MODE。输出可能会显示正在使用的 COM 端口以及波特率/奇偶校验/数据位/停止位,这些信息是您在 PuTTY 会话中需要的。如果 PuTTY 连接成功,请按 Enter 键查看设备的反馈。您键入的任何字符都可能会在屏幕上重复显示或得到响应。如果此步骤不成功,则无法从虚拟会话访问该设备。
-
将本地串行端口(COM 端口)映射到 VDA(使用策略或 NET USE COMX: \\CLIENT\COMZ:),并重复上一步中相同的 PuTTY 操作步骤,但这次是从 VDA 上的 PuTTY 进行操作。如果 PuTTY 未能显示以下错误信息:Unable to open connection to COM1. Unable to open serial port,则可能是另一个设备正在使用 COM1。
-
运行 chgport /query。如果 VDA 上内置的 Windows 串行驱动程序将 \Device\Serial0 自动分配给 VDA 的 COM1 端口,请执行以下操作: A. 在 VDA 上打开 CMD 并键入 NET USE。
B. 删除 VDA 上任何现有的映射(例如,COM1)。
NET USE COM1 /DELETE
C. 将设备映射到 VDA。
NET USE COM1: \\CLIENT\COM3:
D. 将 VDA 上的应用程序指向 COM3。
最后,尝试将本地 COM 端口(例如 COM3)映射到 VDA 上的另一个 COM 端口(COM1 除外,例如 COM3)。确保您的应用程序指向它: NET USE COM3: \\CLIENT\COM3
-
如果现在您确实看到端口已映射,PuTTY 正在工作但没有数据传输,则可能是竞态条件。应用程序可能在端口映射之前连接并打开端口,从而阻止其被映射。请尝试以下方法之一:
- 打开在同一服务器上发布的第二个应用程序。等待几秒钟,直到端口被映射,然后打开尝试使用该端口的实际应用程序。
-
从 Active Directory 中的组策略编辑器而不是 Studio 启用 COM 端口重定向策略。这些策略是 Client COM port redirection 和 Auto connect client COM ports。以这种方式应用的策略可能会在 Studio 策略之前处理,从而确保 COM 端口已映射。Citrix 策略被推送到 VDA 并存储在:
HKLN\SOFTWARE\Policies\Citrix \<user session ID\> - 为用户使用此登录脚本,或者不发布应用程序,而是发布一个 .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 (or whatever value needed) MODE COM2: BAUD=9600 PARITY=N Data=8 Stop=1 (or whatever value needed) START C:\Program Files\<Your Software Path>\<your_software.exe>
-
Sysinternals 的 Process Monitor 是最后的手段。在 VDA 上运行该工具时,查找并筛选 COM3、picaser.sys、CdmRedirector 等对象,尤其是 <your_app>.exe。任何错误都可能显示为“访问被拒绝”或类似内容。