вторник, 6 мая 2025 г.

Решено. Проблема с переключением языков ввода в RemoteApp.


Исходные данные.

В организации поменяли сервер. Старый был на Windows Server 2012 R2. Установили новый с Windows Server 2025. На севере была установлена и опубликована 1C, доступ которой осуществлялся посредством RemoteApp. У каждого бухгалтера был файл .rdp для запуска 1C с сервера.

Проблема.

Файлы .rdp у пользователей остались старые. Они нормально открывали 1C. Но возникла одна неприятная проблема. Язык в 1C был только EN. Переключить его на RU не получалось. Я догадался, что на сервере установлена Windows Server 2025 EN-US и у пользователей попросту нет русского языка. И его нужно установить дополнительно. Что я и сделал.
Но просто установить русский язык оказалось недостаточно. Теперь язык в 1C все равно был или только EN или только RU в зависимости от того, какой выбран первым. И он опять не переключался. Я перепробовал кучу всяких способов и рекомендаций из интернета, но ничего не помогло. Максимум, чего мне удалось достичь - вывести языковую панель на экран, которая позволяла переключать язык мышкой. Но такой метод переключения - это совсем не то, что нужно пользователям для нормальной работы.

Решение.

И помогла мне случайность. В процессе работы над этой проблемой я много раз заходил под пользователем на сервер по RDP. И в этом случае на севере языки переключались без проблем. А вот в RemoteApp переключаться никак не хотели. Мне приходилось так часто заходить по RDP, что я решил создать отдельный файл .rdp чтобы ускорить процесс. В какой-то момент я подумал, а почему бы не добавить запуск 1C в этот файл? Открыл старый и новый файлы в блокноте и из старого скопировал строки запуска RemoteApp в новый.

remoteapplicationmode:i:1

remoteapplicationprogram:s:C:\Program Files (x86)\1cv8\common\1cestart.exe


О ЧУДО!!! В 1C, запущенной через этот файл .rdp, языки начали нормально переключаться!


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

Тогда я сделал таблицу сравнения команд и настроек в старом файле и в новом файле. И понял, что в новый файл нужно добавить еще такие строки:
devicestoredirect:s:*
drivestoredirect:s:*

Эти два параметра добавляют к сессии диски и другие устройства с локального компьютера.



ИТОГО:

Для решения проблемы с переключением языков в RemoteApp потребовалось выполнить следующие действия:
1. Создать новый файл подключения по RDP.
2. Добавить в него запуск приложения
remoteapplicationmode:i:1
remoteapplicationprogram:s:C:\Program Files (x86)\1cv8\common\1cestart.exe
3. Добавить подключение локальных дисков
devicestoredirect:s:*
drivestoredirect:s:*

Ниже я приведу свой файл целиком. Можете просто скопировать, вставить в текстовый файл, подставить значения своего сервера и приложения. Затем сохраните и переименуйте, изменив расширение на .rdp.

screen mode id:i:2
use multimon:i:1
desktopwidth:i:1920
desktopheight:i:1080
session bpp:i:32
winposstr:s:0,3,0,0,800,600
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:7
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
disable wallpaper:i:0
allow font smoothing:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:[ИМЯ ИЛИ IP СЕРВЕРА]:[ПОРТ ЕСЛИ ИСПОЛЬЗУЕТСЯ]
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectwebauthn:i:1
redirectclipboard:i:1
redirectposdevices:i:0
devicestoredirect:s:*
drivestoredirect:s:*
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:1
remoteapplicationprogram:s:C:\Program Files (x86)\1cv8\common\1cestart.exe
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:0
gatewaybrokeringtype:i:0
use redirection server name:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:
enablerdsaadauth:i:0


Вообще эта тема мне показалась интересной. И я решил немного глубже изучить настройки файла .rdp. И вот какие интересные наблюдения я сделал..

1. Файлы .rdp редактируются двумя способами.
а) Правый клик и “Изменить” позволяют изменить лишь учетные данные для подключения.
б) Открыв файл в блокноте можно поменять любые параметры, добавить новый и удалить ненужные.

2. Записи в файле имеют следующий формат:
переменная:тип:значение
Я встречал только два типа: i - целочисленное и s - строка.
3. Похоже, что в строчных переменных можно использовать маски.
Например в команде devicestoredirect:s:* символьной переменной задается значение *. Тем самым показывая, что нужно подключить все устройства хранения.
4. Выяснил, что делают те или иные команды/параметры.
Выяснял я это на сайте Microsoft вот по этой ссылке
https://learn.microsoft.com/ru-ru/azure/virtual-desktop/rdp-properties#connections


Комментариев нет:

Отправить комментарий