Коллеги, добрый день. Сегодня мы поговорим о том, что такое RemoteApp, зачем нужна эта технология, какие проблемы она решает и как ассоциировать различные типы файлов с публикуемыми в RemoteApp программами.

Что это такое?

Начиная с Windows Server 2008, помимо привычного подключения к удаленному рабочему столу, появился функционал удаленного подключения к приложениям. Принципиальной разницей между ними является тот факт, что при подключении к RemoteApp пользователь будет видеть только оболочку ПО, без видимого доступа к проводнику или панели задач.

Например, если наши коллеги пользуются каким-то конкретным набором ПО, подключаясь к RDS узлам, и им не нужен весь функционал удаленных рабочих столов, становится возможным автоматизировать деятельность пользователей и пропустить ненужные этапы подключения и запуска программ на терминальном сервере.
Более того, такой подход гораздо более привычен обычным пользователям и для них локальное ПО и размещенные удаленно через RemoteApp — одно и тоже.

Зачем это нужно?

Лучший способ ответить на вопрос — понять проблематику. Как обычно приведу реальный пример из практики.

Одному или нескольким коллегам необходимо предоставить доступ к ПО. Безусловно, его можно развернуть и локально, однако в ряде сценариев имеет смысл предоставить его удаленно. Причинами применения такого подхода могут быть:

  • Несовместимость ПО на локальных машинах пользователей
  • Упрощение администрирования ПО
  • Централизация ПО
  • Лицензирование ПО
  • Слабая аппаратная часть на локальных машинах пользователей
  • Необходимость предоставления доступа к ПО пользователям в удаленных филиалах
  • Вопросы безопасности

Одним из вариантов решения возникших проблем является использование RemoteApp.

Давайте вернемся к нашему примеру. Мы окончательно решились на удаленную публикацию ПО. Очень хорошо, если мы публикуем приложения не требующие от пользователя импорта или экспорта файлов с его рабочего стола. Но что делать если перед нами стоит задача опубликовать (напр. Adobe Acrobat)?

Пользователь обязательно столкнется с ситуацией, при которой Acrobat попросит указать файл для открытия.
Можно задействовать для этой задачи сетевые папки, куда пользователь будет закидывать документы для импорта в Adobe. Вариант не очень красивый, зато работает.

Следующая ситуация. Пользователю приходит в почте документ PDF, например, для его редактирования, на который он обязательно попробует кликнуть дважды. Конечно, вместо ожидаемого открытия через Acrobat, система предложит ему другие, необязательно подходящие варианты, т.к Acrobat не установлен локально.

На этом этапы мы с Вами подходим к сути статьи. Как решить эти вопросы и упростить жизнь наших коллег, не применяя костыльные решения и не изобретая велосипед?

Для этого мы произведем ассоциацию файлов с публикациями RemoteApp и посмотрим как оно работает на практике.

Требования

Необходимо сразу предупредить о том, что функция ассоциации будет работать только в доменной среде и только при подключении через раздел Подключения к удаленным рабочим столам и приложениям RemoteApp в панели управления.
Сценарии с использованием отдельного RDP файла или WebAccess — не будут работать.

Приступаем к настройке

О тестовой среде

Перед началом — пару слов о тестовом стенде, на котором мы будет проводить эксперименты.

В нашей песочнице будет 3 узла:

  • lab-dc1.party.hard — контроллер домена, DHCP сервер.
  • lab-rds1.party.hard — член домена, установлены роли: узел сеансов, посредник подключений, узел веб-доступа. Создана коллекция посредством запуска инсталляции типа Быстрый запуск.
  • lab-cl1.party.hard — член домена, с него будем пробовать запускать опубликованные приложения.

План действий

Также мы кратко определим ход выполняемых действий:

  • Настройка серверной части
  • Настройка клиентской части
  • Обзор результатов на клиентской стороне, разбор нюансов

Начинаем конфигурацию

Развернем на сервере lab-rds1 ПО, которое мы опубликуем и убедимся что программа была установлена корректно. Т.к я не могу использовать Adobe Acrobat, то в качестве примера установим Foxit Reader.

Мы можем убедиться, что ПО было установлено на узел lab-rds1.

Далее переходим в Диспетчер серверов, в раздел Службы удаленных рабочих столов, выберем нашу коллекцию и убедимся что на текущий момент нет опубликованных приложений RemoteApp.

Кликаем на Опубликовать приложения RemoteApp и выбираем приложение (можно несколько) для публикации.

Выбираем приложения и публикуем приложение.

Как результат — мы получим сводку о произведенных работах.

Статус приложения — Опубликовано.

Поздравляю, мы выполнили половину дела. Далее мы заходим в свойства вновь опубликованного приложения.

Кликаем правой кнопкой и выбираем изменить свойства.

Переходим к последнему разделу — Сопоставление типов файлов и отмечаем галочками нужные нам ассоциации.

Указываем с каким типом файлов сопоставлять опубликованное приложение RemoteApp.

Мы закончили конфигурацию на серверной части. Теперь нам необходимо сконфигурировать клиенсткую часть — предоставить информацию об опубликованных приложениях RemoteApp конечным пользователям.

Для этого можно использовать механизм доменных групповых политик (можно применять локальные).
В объекте групповой политики настраиваем параметр:
Конфигурация пользователя>Административные шаблоны>Компоненты Windows>Службы удаленных рабочих столов>Подключения к удаленным рабочим столам и приложениям RemoteApp>Указать URL-адрес подключения по умолчанию.

Включаем политику и указываем адрес нашего хоста RemoteApp — https://lab-rds1.party.hard/rdweb/Feed/webfeed.aspx

Проверяем опубликованные приложения RemoteApp

Теперь начнем проверять результаты. Для этого мы переходим на узел lab-cl1 и выполняем в cmd:

gpupdate /force

Затем зайдем в раздел Подключения к удаленным рабочим столам и приложениям RemoteApp в панели управления.

Скорее всего, мы ничего там не увидим, хотя должны. Это связано с тем, что для подключения к приложения RemoteApp мы указывали https север, которому клиент не доверяет. Давайте проверим действительно ли проблема в этом. Для этого запустим браузер и перейдем по адресу нашего RemoteApp сервера.

Похоже, что хост lab-cl1 не доверяет CA сертификата.

Мы пойдем чуть дальше и откроем сам сертификат для получения подробностей.

https сервер использует самоподписанный сертификат, которому lab-cl1 не доверяет.

Вот и очередной нюанс, который нужно помнить при развертывании RemoteApp. Для автоматизации решения проблемы мы можем либо развернуть внутреннюю инфраструктуру открытых ключей, либо импортировать доменным компьютерам этот самоподписанный сертификат через GPO.
Для продолжения нашей статьи мы вручную импортируем сертификат в хранилище доверенных корневых центров сертификации и повторно обновим политики.

После обновления политик мы можем заметить появившийся значок Подключения к удаленным рабочим столам и приложениям RemoteApp.

Теперь, когда мы вернемся в раздел Подключения к удаленным рабочим столам и приложениям RemoteApp в Панели управления, мы увидим, что подключение было установлено.

Давайте убедимся, что приложения доступны для использования. Для этого нажмем Просмотреть ресурсы.

Похоже, что нам удалось опубликовать приложение Foxit через RemoteApp.

Я закинул на рабочий стол два тестовых PDF документа и попробовал открыть один двойным нажатием. Файл открылся в Foxit Reader, хотя он не установлен на хосте локально.

Сопоставление типов файлов RemoteApp работает, теперь возможно открывать файлы двойным кликом. Пользователи ликуют. 🙂

Самое приятное, что даже если пользователь решит открыть другой файл со своего компьютера путем использования меню Открыть, RemoteApp организует доступ к файлам хранящимся на его компьютере.

Пользователь попытался открыть другой документ при помощи функции Открыть. Для него отображается локальный рабочий стол, а не удаленный.

Если мы кликнем один раз в адресной строке, то получим небольшие подробности о том, как он RemoteApp выполнил этот фокус. 🙂

Итоги

Коллеги, сегодня нам удалось узнать некоторые нюансы работы RemoteApp. Мы смогли организовать более прозрачную работу с удаленными приложениями и избежать граблей и изобретения велосипедов в нашей рабочей деятельности. Также нам удалось ответить на поставленные в начале статьи вопросы.
Если у Вас есть замечания или дополнения по теме — буду рад обсудить их.