XP Embedded + Windows Server 2016/2008 (RDP)


Задача: есть тонкие клиенты HP t5730 c ОЗУ 500 Мб., c предустановленной (на ROM) операционной системой Windows XP Embedded. Требуется по RDP подключится к Windows Server 2016.

1. Могут быть проблемы, если тонкий клиент получает фэйковый адрес и пытается подключиться к серверу с реальным адресом в другой подсети (рис.1). Исключите эту проблему.

Рисунок 1 — Ошибка подключения тонкого клиента по RDP.

2. Разрешите подключаться по RDP к серверу машинам без проверки подлинности NLA (небезопасно!!!) — см. рис.2-3.

Рисунок 2 — Изменение свойств подключения к серверу по RDP (на сервере).


Рисунок 3 — Изменение свойств подключения к серверу по RDP (на сервере).

3. Далее, изменяем свойства подключения на тонком клиенте: отключаем автоматическое подключение через шлюз (см. рис 4-5)

Рисунок 4 — Изменение свойств подключения к серверу по RDP (на клиенте).


Рисунок 5 — Изменение свойств подключения к серверу по RDP (на клиенте).

4. Пробуем подключится — подключение проходит, но выдается ошибка (см. рис.6).

Рисунок 6 — Ошибка кэширования при попытке подключения.

Исправляем эту ошибку в свойствах клиента по рекомендации источника — см. рис.7

Рисунок 7 — Отключаем кэширование на тонком клиенте.

5. Пробуем подключится — подключение проходит, но выдается еще одна ошибка (см. рис.8).

Рисунок 8 — Ошибка при попытке подключения.

Находим в Интернете решение. Оно включает в себя регистрацию dll-файла. Пользователю выходит сообщение о регистрации (см. рис.9)

Рисунок 9 — Сообщение о регистрации библиотеки.
Примечание. Решение не работает. Проблема осталась.
UDP.Пробуем решить проблему кардинально — устанавливаем другую ОС — Windows Server 2008.
Видим другую ошибку (см.рис.10): «The remote session was disconnected because there was an internal error in the remote computer’s licensing protocol»

Рисунок 10 — Ошибка при подключении по RDP к серверу Windows Server 2008 из ТК (Windows XP Embedded).

РЕШЕНИЕ. Причина: RDP v6.1 на server 2008 работает с embedded клиентами. RDP v8.0 на сервере 2008 R2 корректно – нет. Это связано с механизмом получением лицензии. Необходим Windows Server 2008 для корректной работы.

6. Видим, что необходимо запускать какие-то команды из командной строки, но в Windows XP Embedded в профиле User, который запускается автоматически, нет ни Run, ни командной строки в списке программ. Более того, все настройки пользователя обнуляются при перезагрузке. Что делать?
Загружаемся с загрузочной флешки XP (как ее сделать описано множество раз в Интернете), видим файловую систему XP Embedded, записанную на ROM. Внедряем в C:\Program Files папку FAR, которая получена из Portable-версии FAR, скаченной в виде архива с официального сайта разработчика. Потом создаем исполняемый файл cmd.cmd со следующим содержимым:
@echo off
C:\"Program Files"\FAR\far.exe

Этот файл размещаем в папке C:\Documents and Settings\User\Start Menu\Programs\Startup
Вытаскиваем загрузочную флешку, в БИОС возвращаем загрузку с ROM. Теперь под пользователем появляется FAR, можно что-то делать, запускать какие-то скрипты.

7. Видим еще 1 ошибку: по умолчанию разрешение экрана 800х600, что в случае работы с Windows Server 2016 адски мешает нормальной работе — все иконки просто гигантские (рис.11)!

Рисунок 11 — Разрешение при подключении к серверу.
Есть 2 пути решения:
а) путь, по которому мы пошли сначала — привлечение сторонней программы. Для этого с сайта разработчика скачиваем архив qres.zip, распаковываем его и аналогично FAR, с помощью загрузочной флешки внедряем ее в в C:\Program Files папкой gres.
Собираем скрипт, который должен решать следующие задачи:
— запускать FAR
— регистрировать библиотеку для ликвидации ошибки ключа при подключении к серверу 2016 (с подавлением сообщения об успехе операции);
— менять разрешение экрана с 800х600 на 1280х1024

Файл будет выглядеть следующим образом:
@echo off
rem C:\"Program Files"\FAR\far.exe
C:\Windows\system32\regsvr32.exe /s C:\Windows\system32\mstscax.dll
C:\"Program Files"\qres\Release\ResSwitch.exe /WIDTH:1280 /HEIGHT:1024 /RESET
rem C:\Windows\system32\cmd.exe
exit

FAR и cmd запускаем по необходимости

б) а вот теперь рассмотрим второй путь, более верный и простой.
Оказывается, при правильном запросе Google может открыть целый новый мир. 🙂
И там есть очень важное замечание — см. рис.12

Рисунок 12 — Сохранение изменений файловой системы на ROM без использования загрузочной флешки.

Осталась проблема входа под профилем Администратора. Но Google поможет и в этом. 🙂
Цитирую: «Если происходит автоматический логон под обычным пользователем, то нужно нажать Shift, и не отпуская нажать Пуск — Завершение работы — Выход из системы.После этого можно будет под админом зайти.По умолчанию в HP t5630 для учетки Administrator, пароль такой же. Именно с большой буквы «Administrator» Для пользователей — User/User.»
И вот теперь, можно изменить, к примеру, выбрать разрешение экрана 1280х1024, а потом зафиксировать это изменение с помощью EWF Configuration (рис.13-16)

Рисунок 13 — Панель управления.

Рисунок 14 — Дополнительные параметры Панели управления.

Рисунок 15 — Программа сохранения изменений в файловой системе ROM.

Рисунок 16 — Сохранение изменений в файловой системе ROM.

8. Есть еще 1 проблема — отсутствие возможности переключения на русский язык (формат времени и т.д.) у пользователя. Даже если мы изменим для Администратора и для пользователя «по умолчанию» (см. рис.17-20), для User, к сожалению, ничего не изменится, у него не будет возможность переключаться на русский язык.
Примечание. Параллельно изменяем время, часовой пояс и т.д. Описывать это не буду — тривиальная задача. Главное — не забывать сохранять изменения в файловой системе (рис.13-16).

Рисунок 17 — Раздел параметров времени и языковых настроек.

Рисунок 18 — Настройка русского региона (формат времени и т.д.)

Рисунок 19 — Настройка русского языка и раскладки.

Рисунок 20 — Настройка параметров для пользователя «по умолчанию».
Что же делать?
Удалить пользователя User и создать его заново.
Учтите, в Панели управления данный параметр не доступен (рис.21).

Рисунок 21 — Менять аккаунты в Панели управления нельзя.
Поэтому выделяем Мой компьютер, ПКМ (правая клавиша мыши), выбираем Управление (Manage), там выбираем Local Users and Groups, удаляем пользователя.
Потом удаляем папки этого пользователя и создаем его заново (рис.22)

Рисунок 22 — Создаем нового пользователя.
Внимание! Пароль User не меняем, иначе не происходит автологина.
Сохраняем изменения (рис.13-16), перезагружаем тонкого клиента, видим появление возможности переключения клавиатуры (левый Shift + Alt), нормальный формат времени (24-часовой).

9. Итак, все предварительные работы проведены, будем добиваться следующих целей:
— автоматическая загрузка сессии RDP к нашему серверу (останется только ввести логин/пароль);
— отсутствие для пользователя всех ненужных и неиспользуемых программ.
Для этого раскомментируем загрузку cmd для пользователя (см. пункт №7), перезагружаемся под профилем User, набераем команду regedit и убираем автоматическую загрузку в память Microsoft Messenger (рис.23) в реестре (удаление параметра MSMGS в ветке:xxx-yyyy-zzz\Software\Microsoft\Windows\CurrentVersion\Run).

Рисунок 23 — Редакция реестра.
Потом запускаем FAR и удаляем все ненужные ярлыки на Рабочем столе Пользователя (C:\Documents and Settings\User\Desktop\) и в меню Пуск —> Программы (C:\Documents and Settings\User\Start Menu\Programs\).
Чтобы было у Пользователя все лаконично и понятно (рис.24)

Рисунок 24 — Состав меню пуск для Пользователя.
Потом запускаем тонкий клиент под Администратором и «коммитим» данное изменение реестра Windows у Пользователя (см. рис.13-16).
Далее снова запускаемся под Пользователем, запускаем клиента RDP, настраиваем нужные параметры подключения: IP-адрес, настройки (см. рис. 4-5,7). И сохраняем это все в файл 2019.rdp на Рабочем столе, нажав кнопку Save as в клиенте RDP (рис.25).

Рисунок 25 — Сохранение настроек RDP-клиента в файл.

Его содержание таково:
screen mode id:i:2
desktopwidth:i:1280
desktopheight:i:1024
session bpp:i:32
winposstr:s:0,3,0,0,1280,1024
full address:s:IP.ADDRESS.TERMINAL.SERVER
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:0
redirectposdevices:i:0
drivestoredirect:s:
displayconnectionbar:i:1
autoreconnection enabled:i:1
authentication level:i:0
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
disable wallpaper:i:1
disable full window drag:i:1
allow desktop composition:i:0
allow font smoothing:i:0
disable menu anims:i:1
disable themes:i:1
disable cursor setting:i:0
bitmapcachepersistenable:i:0
gatewayhostname:s:
gatewayusagemethod:i:0
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:1

Потом загружаемся под Администратором, помещаем этот файл из Рабочего стола Пользователя в папку C:\Windows\system32, затем создаем специальный ярлык, который ссылается на программу вызова клиента RDP и подгружает созданный нами файл с настройками RDP-клиента: C:\Windows\system32\mstsc.exe C:\Windows\system32\2019.rdp (рис.26)

Рисунок 26 — Ярлык для вызова RDP-клиента.
Этот ярлык называем TPU.lnk и размещаем:
— на Рабочий стол Пользователя;
— в папку автозагрузки: C:\Documents and Settings\User\Start Menu\Programs\Startup, все ранее созданное там (скрипты cmd.cmd, запуск FAR, регистрацию dll и т.д.) удаляем.
«Коммитим» эти настройки (см. рис.13-16).
Перезагружаем тонкий клиент, проходит автоматическая загрузка клиента RDP под Пользователем (рис.27).

Рисунок 27 — RDP-клиент Пользователя.
Пользователю остается ввести логин/пароль терминально клиента сервера Windows 2016 и он может работать.
Всё! Ура-ура! 🙂

Послесловие.
Как хотя бы немного себя обезопасить от бездумных действий пользователей (удаления ярлыка языковой панели и т.д.)? Есть рекомендации.
gpedit.msc =>Конфигурация пользователя =>Административные шаблоны =>Панель задач и меню пуск => тут можно проверить настройки
Например, закрепить панель задач для всех пользователей (см. рис.28)

Рисунок 28 — Изменения свойств для рабочего окружения пользователя.
Потом внимательно смотрим остальные параметры, некоторые изменяем.