Citrix环境下Firefox与Chrome调用WebRTC enumerateDevices返回结果差异问题
根因说明
Citrix虚拟桌面环境下,Chrome默认的WebRTC设备枚举逻辑会拉取HDX重定向模块上报的所有历史挂载设备,包括其他会话残留、当前已断开的无效音视频设备;而Firefox默认仅枚举当前会话处于活跃可用状态的设备,因此会出现两者返回的mediaDevices.enumerateDevices()结果不一致的情况。
单客户端临时配置
- 打开Chrome地址栏输入
chrome://flags进入实验性功能配置页 - 搜索
WebRTC Hide Disconnected Audio Devices,将选项值从Default修改为Enabled - 搜索
WebRTC Hide Disconnected Video Devices,同样修改为Enabled - 重启Chrome后配置生效
域/VDI批量部署配置
如果你需要在Citrix池化桌面中批量生效该配置,可通过Chrome ADMX组策略实现:
- 导入对应Chrome版本的ADMX管理模板到域控或者本地组策略编辑器
- 定位到路径:管理模板 → Google Chrome → 内容设置 → 配置WebRTC设备枚举规则
- 启用该策略,在规则输入框中填入如下JSON配置:
{ "hide_disconnected_audio_devices": true, "hide_disconnected_video_devices": true }
- 执行
gpupdate /force刷新组策略,重启Chrome后生效
验证方法
在授权过音视频权限的页面打开Chrome开发者工具控制台,执行以下代码即可查看当前枚举的设备列表:navigator.mediaDevices.enumerateDevices().then(devs => devs.forEach(d => console.log(d.kind, d.label)))
确认返回的设备列表已经过滤无效设备,和Firefox返回结果一致。
兼容说明
如果配置后仍存在无效设备,建议将Citrix HDX RealTime Optimization Pack升级到2.9及以上版本,同时使用Chrome 110及以上正式版,避免旧版本驱动适配问题导致的设备重复上报。
内容的提问来源于stack exchange,提问作者Torsten
相关产品推荐
相关产品推荐

