RemoteFX. Часть 6 — перенаправление USB, практика

Что нужно сделать для перенаправления устройств с помощью RemoteFX? Для начала — удовлетворить базовым требованям RemoteFX: установить соответствующий компонент на сервере Hyper-V и заполучить клинтское устройство, поддерживающее RDP версии 7.1 (самый реалистичный вариант на сегодняшний день — установить на свой компьютер Winodws 7 Service Pack 1). Затем потребуется включить функцию USB Redirection в клиенте RDP, разрешить её же в виртуальных машинах и, наконец, выбрать те устройства, которые вы хотите перенаправлять, — вручную или отредактировав файл подключения (*.rdp).

Настройки на стороне клиента

При редактировании групповой или локальной политики с Windows 7 Service Pack 1 или Windows Server 2008 R2 Service Pack 1 в ней появляются настройки пернаправления устройств через RemoteFX. Эта политика применяется на клиентское рабочее место — то, с которого вы устанавливаете сессию, и к которому вы физически подключаете устройства. Эту функцию требуется разрешить в явном виде — по умолчанию низкоуровневое перенаправление устройств запрещено. Кроме того, вы можете выбрать, разрешено оно для всех пользователей или только тех, которые имеют права локальных администраторов. 

Эта политика находится по адресу Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Connection Client\RemoteFX USB Device Redirection. Обратите внимание на то, что изменения этой политики вступают в силу только после перезагрузки. 

Настройки на стороне виртуальной машины

Для того, чтобы ограничить возможности подключения перенаправленных устройств, используйте настройки, которые находятся в секции Computer Configuration\Administrative Templates\System\Device Redirection\Device Redirection Restrictions. Первая из них действует избирательно — вы можете запретить перенаправление целых классов устройств или даже отдельных ID. Если же вам нужно полностью запретить перенаправление любых типов устройств через RemoteFX — используйте вторую настройку.

При этом помните, что перенаправление старым способом — через «Виртуальные устройства» — по-прежнему будет работать. Для управления этим типом перенаправления используйте настройки, которые находятся по адресу Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Device and Resource Redirection.

Обратите внимание на то, что в отличие от настройки клиента, описаной в предыдущем разделе, обе описанные здесь настройки по умолчанию разрешают перенаправление устройств. Это значит, что если вы не хотите ограничивать список перенаправляемых устройств или запрещать их вовсе — редактировать эти настройки не требуется.

Кроме того, вы можете использовать настройки «Установки устройств» (Device Installation), которые появились в Windows Vista и были усовершенствованы в Winodws 7. Поскольку перенаправление устройств в RemoteFX работает через установку обычного драйвера на стороне виртуальной машины, эта функция полностью подчиняется указанной политике. Эти настройки находятся в разделе по адресу Computer Configuration\Administrative Templates\System\Device Installation Restrictions .

Выбор устройств в клиенте «Удалённого рабочего стола»

После того, как вы разрешели перенаправление устройств, в настройках клиента «Удалённого рабочего стола» появляется новая возможность. Здесь вы видите текущий список устройств, подключенных к вашему клиентскому рабочему месту, и можете отметить те из них, которые желаете перенаправить в удалённый сеанс.

Также обратите внимание на то, что если вы перенаправляете звуковое устройство USB (например, микрофон или гарнитуру), и хотите воспользоваться RemoteFX, то в настройках клиента «Удалённого рабочего стола» (или через политику) вы должны отключить перенаправление звуковых устройств. Потому что эта настройка относится к старому способу, который работает через «виртуальные устройства». А вам в данном случае требуется обратное — сделать так, чтобы приложения работали с устройством, перенаправленным в удалённый сеанс, через драйвер, который выполняется в том же сеансе.

Управление запретами и разрешения через файлы подключения

Этот вариант можно использовать как в дополнение к описанной выше настройке через политики, так и вместо неё. Особенности этого метода заключаются в том, что он, во-первых, позволяет гранулировано разрешать и запрещать перенаправление отдельных устройств на стороне клиента (через политики это делается на стороне сервера, как было описано выше). А во-вторых, он позволяет задавать на стороне клиента разные настройки для разных виртуальных машин — аналогично настройкам через файлы подключений.

Для того, чтобы воспользоваться этим методом, откройте файл подключения (*.rdp) в текстовом редакторе и добавьте параметр usbdevicestoredirect:s:X;Y;Z. Этот параметр появился RDP 7.1 и способен принимать (на месте «X;Y;Z») четыре типа значнеий. 

Порядок обработки

Значение

Действие

1

   

 

*

Перенаправлять все устройства, которые невозможно перенаправлять стандартным высокоуровневым способом RDP (включая те, драйверы для которых отсутствуют).

{Device Class GUID}

Перенаправлять все устройства определённых классов

USB\InstanceID

Перенаправлять конкретно указанные экземпляры устройств

2

-USB\InstanceID

Запретить перенаправление конкретных указанных экземпляров устройств

Предполагаемый порядок нахождения оптимальных настроек таков. Для начала укажите usbdevicestoredirect:s:*.

  • Если вы подключаетесь с тонкого клиента, который по определению не имеет драйверов для абсолютного большинства устройств, — все они будут перенаправлены в удалённый сеанс. Собственно говоря, на этом настройка завершена. Предполагается, что в сценарии с тонкими клиентами, пользователь будет устанавливать одновременно только один сеанс «Удалённого рабочего стола» — и RemoteFX будет основным способом перенаправления устройств.
  • Если же вы подключаетесь с обычного настольного компьютера или ноутбука, то какая-то часть устройств будет распознана клиентской ОС как подходящие для перенаправления через «виртуальные устройства» (высокоуровневое перенаправление). И здесь предполагается, что именно «виртуальные устройства» останутся основным способом перенаправления. Впрочем, всё довольно гибко настраивается.
    • Если вам нужно изменить тип перенаправления для некоторых из этих устройств — т.е. использовать для них перенаправление RemoteFX — в явном виде добавьте их через указание GUID класса (например: usbdevicestoredirect:s:*;{6bdd1fc6-810f-11d0-bec7-08002be2092f}).
    • Если же вы хотите использовать какие-то устройства только в своей клиентской ОС, но не в удалённом сеансе — добавьте их ID в качестве исключений (напримемр, usbdevicestoredirect:s:*;{6bdd1fc6-810f-11d0-bec7-08002be2092f};-USB\InstanceID).

Если вы затрудняетесь определить GUID, соответствующий какому-то классу, воспользуйтесь документацией, опубликованной на MSDN.

Возможно, что для некоторых устройств решение о предпочтительном методе перенаправления окажется не таким очевидным. Например, использовать для принетеров ThinPrint или RemoteFX? Или и то, и другое — для разных принтеров? Как в таком случае будет выбираться принтер по умолчанию? А USB-телефон? Откуда вы собираетесь управлять звонками — из ОС на своём компьютере или из виртуальной машины? Здесь не может быть универсального совета, поэтому мы с интересом выслушаем соображения о том, какие решения вы примете исходя из своих конкретных задач.

Итоговый результат должен выглядеть примерно так. Удалённая виртуальная машина воспринимает подключенное через RemoteFX устройство как локальное, причём видит не «обычное устройство», а конкретную модель со всеми её свойствами и возможностями.

На этом неделя RemoteFX объявляется завершённой, всем хороших выходных. И если у вас остались какие-то вопросы, на которые мы ещё не ответили в своих заметках — ждём их в комментариях.