通过远程桌面协议进行外围设备和资源重定向

重定向使用户能够在本地设备(客户端)和远程会话(服务器端)之间通过远程桌面协议 (RDP) 共享资源和外设,例如剪贴板、网络摄像头、USB 设备、打印机等。 重定向旨在提供无缝的远程体验,与使用本地设备的体验相当。 此体验可帮助用户在远程工作时提高工作效率。 作为管理员,你可以配置重定向,以帮助平衡你的安全要求和用户的需求。

本文提供了有关跨不同外设类的重定向方法、重定向分类以及可重定向的受支持资源和外设类型的详细信息。

重定向方法和分类

RDP 利用两种重定向方法在本地设备和远程会话之间重定向资源和外设:

  • 高级重定向:通过截获和优化特定类外设或体验的所有通信,充当智能中介。 高级重定向可确保远程应用场景的最佳性能,但也依赖于外围驱动程序和应用程序支持。

  • 不透明低级重定向:传输外设的原始通信,而不尝试针对远程应用场景对其进行解释、理解、限制或优化。

    不透明低级重定向用于通过 USB 进行连接的外设(不存在合适的高级外设反射重定向解决方案)以及远程会话中具有特定驱动程序或软件要求才能正常工作的外设。 USB 重定向使用 USB 请求块 (URB) 在端口和协议级别进行。 不透明低级重定向也用于通过串行/COM 端口连接的外设。

在高级重定向中,使用了四种总体技术,这些技术根据重定向的方向和被重定向的资源或外设的类型进行分类。 四种高级重定向分类为:

  • 外设反射:将连接到本地设备的特定类外设反射到远程会话中。 此分类包括键盘、鼠标、触控、笔和触控板等输入设备。

  • 数据共享:在本地设备和剪贴板的远程会话之间共享和传输数据。

  • 状态反射:将本地设备状态反映到远程会话中,例如其电池状态和位置。

  • 应用程序拆分:跨本地设备和远程会话(如 Microsoft Teams)拆分应用程序的功能。

使用的重定向方法可能因外围设备类(如 Windows 或 iOS/iPadOS)及其可用资源、外围设备和功能而异。 远程会话中可用的重定向也取决于所使用的应用程序。 有关在不同平台上使用 Windows 应用重定向的支持比较,请参阅比较不同平台和设备的 Windows 应用功能

重要

应尽可能使用高级重定向,因为它提供了最佳性能和用户体验。 不透明低级重定向实际上是一种回退方案,因此默认情况下无法保证此类外设的性能、可靠性和支持的功能集。

某些外设无法重定向,例如加密的 USB 存储。

USB 重定向比较

下表比较了使用不透明低级 USB 重定向来重定向 USB 外设与通过 RDP 对受支持的外设类使用高级重定向来重定向外设:

不透明低级 USB 重定向 高级重定向
需要在远程会话中安装 USB 外设的驱动程序。 不需要在本地设备上安装驱动程序。 需要在本地设备上安装外设的驱动程序。 在大多数情况下,它不需要在远程会话中安装驱动程序。
对许多外设类使用单个重定向方法。 为每个外设类使用特定的重定向方法。
通过 RDP 连接向/从 USB 外围设备转发 USB 请求块。 通过为外设类使用优化的协议,在远程会话中公开高级外设功能。
在远程会话中使用 USB 外设时,不能在本地设备上使用。 它一次只能在一个远程会话中使用。 外设可以在本地设备和远程会话中同时使用。
针对低延迟连接进行了优化。 基于外设驱动程序实现的变量。 针对 LAN 和 WAN 连接进行了优化,能够感知带宽和延迟等条件的变化。

控制不透明低级 USB 重定向

使用不透明低级 USB 重定向来重定向 USB 外设由 RDP 属性 usbdevicestoredirect:s:<value>控制,其中 <value>USB\<Vendor ID and Product ID>\<USB instance ID> 格式的设备实例路径

对于某些产品和服务(如 Azure 虚拟桌面),可以通过设置 RDP 属性值来控制重定向行为,如下所示:

  • 某些 USB 外设可能具有使用不透明低级 USB 重定向或高级重定向的功能。 默认情况下,这些外设使用高级重定向进行重定向。 可以使用 RDP 属性来强制这些外设使用不透明低级 USB 重定向。 若要将 USB 音频外设与不透明低级 USB 重定向配合使用,必须将音频输出位置设置为在本地计算机上播放声音。

  • 使用类 GUID 来重定向或不重定向整个 USB 外设类。

  • 使用通配符 * 作为值将重定向大多数没有安装高级重定向机制或驱动程序的外设。 类 GUID 可用于重定向未自动匹配的其他外设。

值可以单独使用,也可以按照处理顺序组合使用这些值(用分号分隔)。 下表列出了有效值和处理顺序:

处理顺序 说明
空值 未指定任何值 不要使用不透明低级重定向来重定向任何受支持的 USB 外设。
1 * 重定向未使用高级重定向的所有外设。
2 {<DeviceClassGUID>} 重定向属于指定的设备安装程序类成员的所有外设。
3 <USBInstanceID> 重定向由给定设备实例路径指定的 USB 外设。
4 <-USBInstanceID> 不要重定向由给定设备实例路径指定的外设。

当按正确的处理顺序构造为字符串时,语法为:

usbdevicestoredirect:s:*;{<DeviceClassGUID>};<USBInstanceID>;<-USBInstanceID>

USB 设备的设备实例路径采用 USB\<Device ID>\<USB instance ID> 格式,分为三个部分。 可以在设备管理器中或使用 Get-PnpDevice PowerShell cmdlet 找到此值。 三个部分按顺序为:

  1. 总线驱动程序名称,在本例中 USB
  2. 设备 ID,其中包含 USB 外设的供应商 ID (VID) 和产品 ID (PID)。
  3. 实例 ID,其将设备与计算机上相同类型的其他设备唯一区分开来。

当指定 USB 外设通过 RDP 重定向时,可以使用设备实例路径。 使用设备实例路径时,该值特定于连接到的本地设备上的端口。 例如,连接到第一个 USB 端口的外设具有设备实例路径 USB\VID_045E&PID_0779\5&21F6DCD1&0&5,但将同一外设连接到第二个 USB 端口具有设备实例路径 USB\VID_045E&PID_0779\5&21F6DCD1&0&6。 对于 USB 外设,指定设备实例路径意味着仅当连接到同一端口时才会重定向外设。

或者,可以使用类 GUID 来重定向 USB 外设的整个设备安装程序类。 使用类 GUID 时,将重定向本地设备上具有相应类 GUID 的所有外设,而不考虑它们连接到的端口。 例如,使用类 GUID {4d36e96c-e325-11ce-bfc1-08002be10318} 会重定向所有多媒体设备。 所有类 GUID 的列表可在为供应商提供的系统定义的设备安装程序类中找到。

有关如何使用 RDP 属性的一些示例,请参阅 usbdevicestoredirect RDP 属性

支持的资源和外设

下表列出了每个受支持的资源或外设类,以及建议用于每个资源或外设类的重定向方法:

资源或外设类 重定向方法 主要数据流方向
一体式打印机/扫描仪 不透明低级重定向 双向
音频输入 - 麦克风(USB 或集成) 高级 - 外设反射 本地到远程
音频输出 - 扬声器(USB 或集成) 高级 - 外设反射 远程到本地
电池(自动,不可配置) 高级 - 状态反射 本地到远程
生物识别读取器(仅在会话内,而不是登录期间) 不透明低级重定向 双向
相机/网络摄像头(USB 或集成) 高级 - 外设反射 本地到远程
CD/DVD 驱动器(只读) 高级 - 外设反射 本地到远程
剪贴板 高级 - 数据共享 双向
键盘(USB 或集成) 高级 - 外设反射 本地到远程
本地硬盘驱动器或 USB 可移动存储 高级 - 外设反射 双向
位置 高级 - 状态反射 本地到远程
鼠标(USB 或集成) 高级 - 外设反射 本地到远程
MTP 媒体播放器 高级 - 外设反射 本地到远程
多媒体重定向 高级 - 应用程序拆分 双向
笔(USB 或集成) 高级 - 外设反射 本地到远程
打印机(本地连接或网络) 高级 - 外设反射 远程到本地
PTP 相机 高级 - 外设反射 本地到远程
扫描仪 不透明低级重定向 双向
串行/COM 端口 不透明低级重定向 双向
智能卡读卡器 高级 - 外设反射 双向
触控(USB 或集成) 高级 - 外设反射 本地到远程
触控板(USB 或集成,不包括精确式触摸板 (PTP) 手势) 高级 - 外设反射 本地到远程
USB 到串行适配器 不透明低级重定向 双向
VoIP 电话/耳机 不透明低级重定向 双向
WebAuthN 高级 - 外设反射 双向

注意

  • 以下外设类被阻止重定向:

    • USB 网络适配器。
    • USB 显示器。
  • 扫描仪重定向不包括 TWAIN 支持。

  • 电池重定向仅适用于 Azure 虚拟桌面和 Windows 365。 它自动可用,不可配置。

  • 不支持重定向蓝牙驱动程序堆栈。 如果外设(例如蓝牙键盘)已连接到本地设备,则会根据支持的外设类将此外设重定向到远程会话。

下图显示了用于每个外围类的重定向方法:

关系图显示了不同外设类如何映射到高级和不透明低级重定向方法。

配置优先级顺序

为重定向启用哪些设备类,以及远程会话的管理员如何配置重定向行为。 该行为可以通过组策略(Active Directory 或本地)服务器端进行配置,也可以在用于连接到远程会话的 .rdp 文件中指定。 Azure 虚拟桌面和远程桌面服务也有一个代理服务,可以在其中指定 RDP 属性。

但是,在需要更严格配置的本地设备上,某些设置可以被覆盖。 无论在何处配置,更严格的设置都优先;例如,如果管理员将剪贴板配置为默认为所有远程会话重定向,但本地设备配置为禁用剪贴板重定向,则剪贴板在远程会话中不可用。 这在部分用户或设备需要比默认配置更严格的设置的情况下提供了灵活性。