- Пропадает языковая панель в RDP сеансе после завершения теневой сессии
- Пропадает языковая панель у пользователя после выхода из теневой копии RDP
- Windows server 2012 пропала языковая панель
- Общие обсуждения
- Все ответы
- Windows server 2012 пропала языковая панель
- General discussion
- All replies
- Windows server 2012 пропала языковая панель
Пропадает языковая панель в RDP сеансе после завершения теневой сессии
На RDS серверах под Windows Server 2012 R2 / Windows Server 2016 есть довольно старый баг. После того, как администратор или сотрудник техподдержки отключается от RDP сессии пользователя в режиме управления через теневое подключение (shadow), в сеансе пользователя пропадает языковая панель. В итоге пользователь не может переключить язык в своей RDS сессии, горячие клавиши на переключение языка также не работают. Если администратор снова подключится к сессии пользователя – языковая панель опять появляется, при отключении – снова исчезает. Аналогичный баг возникает при Shadow подключении к рабочим станциям с Windows 10 и Windows 8.1.
Как оказалось, эта проблема проявляется только в тех случаях, если администратор инициирует теневое подключение с языковой раскладкой, которая не совпадает с языком системы (Display language) на компьютере пользователя. Т.е. если у пользователя установлен русский интерфейс системы, и к нему подключается админ с русской раскладкой – проблемы нет. Если подключается админ с английской раскладкой – языковая панель при отключении сессии пропадает.
На самом деле языковая панель просто скрывается, т.к. у пользователя удаляется неактивный язык, и система считает, что если у пользователя остался только один язык, то отображать панель переключения между языками не нужно.
Чтобы вернуть языковую панель, на клиенте нужно зайти в Панель управления\Часы, язык и регион\Язык, выбрать любой язык и кнопками Вверх/Вниз переместить его.
Для автоматизации этого действия можно добавить следующий PowerShell скрипт на рабочий стол пользователя:
addlanguage.ps1
$1 = New-WinUserLanguageList en-US
$1.Add(«ru-RU»)
Set-WinUserLanguageList $1 -force
В общем получается ручной костыль да еще и с ручным приводом.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
«IgnoreRemoteKeyboardLayout»=dword:00000001
Однако проблема с пропадающей языковой панелью все равно возникает, если различаются раскладки клавиатуры у админа и в терминальной сессии пользователя.
Попробуем немного автоматизировать костыль. При отключении от теневой сессии пользователя в журнале Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Operational появляется событие с «Shadow Control Session Ended» с EventId 20507.
Нам нужно привязать задание планировщика к этому событию (пункт Attach task to this event), которое бы запускало скрипт fixlangauge.ps1, который формирует новое задание планировщика и выполняет его у в сеансе пользователя.
fixlangauge.ps1
$User=Get-WinEvent -LogName «Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational» | Where-Object <$_.ID -eq "20507">|select-object -first 1 | ForEach-Object<"$($_.Properties[2].Value)">
schtasks.exe /create /RU $User /IT /TN $User /TR «powershell.exe -File c:\ps\addlanguage.ps1» /SC DAILY
schtasks.exe /run /TN $User
Start-Sleep -Milliseconds 10000
schtasks.exe /Delete /TN $User /F
В задании запускается указанный выше PS скрипт addlanguage.ps1.
Таким образом, после того, как администратор отключает теневое сессию к пользователю, в системе срабатывает триггер по событию 20507 и из-под пользователя автоматически отрабатывает команда добавления языка.
Пропадает языковая панель у пользователя после выхода из теневой копии RDP
На RDS серверах под Windows Server 2012 R2 / Windows Server 2016 есть довольно старый баг. После того, как администратор или сотрудник техподдержки отключается от RDP сессии пользователя в режиме управления через теневое подключение (shadow) , в сеансе пользователя пропадает языковая панель. В итоге пользователь не может переключить язык в своей RDS сессии, горячие клавиши на переключение языка также не работают. Если администратор снова подключится к сессии пользователя – языковая панель опять появляется, при отключении – снова исчезает. Аналогичный баг возникает при Shadow подключении к рабочим станциям с Windows 10 и Windows 8.1.
Как оказалось, эта проблема проявляется только в тех случаях, если администратор инициирует теневое подключение с языковой раскладкой, которая не совпадает с языком системы (Display language) на компьютере пользователя. Т.е. если у пользователя установлен русский интерфейс системы, и к нему подключается админ с русской раскладкой – проблемы нет. Если подключается админ с английской раскладкой – языковая панель при отключении сессии пропадает.
На самом деле языковая панель просто скрывается, т.к. у пользователя удаляется неактивный язык, и система считает, что если у пользователя остался только один язык, то отображать панель переключения между языками не нужно.
Чтобы вернуть языковую панель, на клиенте нужно зайти в Панель управления\Часы, язык и регион\Язык , выбрать любой язык и кнопками Вверх / Вниз переместить его.
Для автоматизации этого действия можно добавить следующий PowerShell скрипт на рабочий стол пользователя:
$1 = New-WinUserLanguageList en-US
$1.Add(«ru-RU»)
Set-WinUserLanguageList $1 -force
В общем получается ручной костыль да еще и с ручным приводом.
Совет . Наткнулся еще на интересный параметр реестра IgnoreRemoteKeyboardLayout . Если на RDS сервере в ветке HKLM\System\CurrentControlSet\Control\Keyboard создать новый параметр типа DWORD со значением 1 (нужна перезагрузка), то сервер начинает игнорировать раскладку клавиатуры клиента.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
«IgnoreRemoteKeyboardLayout»=dword:00000001
Однако проблема с пропадающей языковой панелью все равно возникает, если различаются раскладки клавиатуры у админа и в терминальной сессии пользователя.
Попробуем немного автоматизировать костыль. При отключении от теневой сессии пользователя в журнале Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Operational появляется событие с «Shadow Control Session Ended» с EventId 20507 .
Нам нужно привязать задание планировщика к этому событию (пункт Attach task to this event ), которое бы запускало скрипт fixlangauge.ps1, который формирует новое задание планировщика и выполняет его у в сеансе пользователя.
$User=Get-WinEvent -LogName «Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational» | Where-Object <$_.ID -eq "20507">|select-object -first 1 | ForEach-Object<"$($_.Properties[2].Value)">
schtasks.exe /create /RU $User /IT /TN $User /TR «powershell.exe -File c:\ps\addlanguage.ps1» /SC DAILY
schtasks.exe /run /TN $User
Start-Sleep -Milliseconds 10000
schtasks.exe /Delete /TN $User /F
В задании запускается указанный выше PS скрипт addlanguage.ps1.
Таким образом, после того, как администратор отключает теневое сессию к пользователю, в системе срабатывает триггер по событию 20507 и из-под пользователя автоматически отрабатывает команда добавления языка.
Windows server 2012 пропала языковая панель
Общие обсуждения
Все ответы
А какая ОС клиента?
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется «как есть» без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.
Такая же проблема:
1. Клиенты: Win8.1 (pc), WinCE (thinclient)
2. Сервера: Win2012R2 (обновления последние установлены)
3. Роли: RDS
4. Администраторские машины: Win8.1 (pc).
Воспроизведение проблемы:
1. Пользователи заходят в свой сеанс. Переключение раскладки работает, языковая панель на месте.
2. Администратор цепляется к активному сеансу через команду: mstsc /v:%HOSTNAME% /shadow:%SESSIONID% /control /noconsentprompt
3. Проблема устранена. Администратор закрывает shadow окно и у пользователя исчезает языковая панель + перестают работать горячие клавиши на переключение языка.
Причем и с Remote Assistant такая же проблема. Но это уже касательно Win8.1 (pc). Помог пользователю и он перезаходит.
Может кто-то победил таки проблему?
Благодарю.
Сегодня столкнулся с той же проблемой на боевом терминальном сервере.
Решения нет, но есть уточнение.
Язык пропадает только в том случае, если админ открывал shadow-подключение с раскладкой, которая не совпадает с «display language» пользователя. Причём «display language» админа не важен. «display language» может быть у каждого пользователя свой в его сессии. Проверял на сервере, который изначально устанавливался как English версия и потом доставлялся русский языковой пакет.
Т.е. у пользователя стоит русский интерфейс. Если к нему подключиться с включенной русской раскладкой, то после закрытия shadow языковая панель у него не пропадет.
У пользователя стоит русский интерфейс. Если к нему подключиться с включенной английской раскладкой, то после закрытия shadow языковая панель у него не пропадет.
Windows server 2012 пропала языковая панель
General discussion
All replies
А какая ОС клиента?
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется «как есть» без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.
Такая же проблема:
1. Клиенты: Win8.1 (pc), WinCE (thinclient)
2. Сервера: Win2012R2 (обновления последние установлены)
3. Роли: RDS
4. Администраторские машины: Win8.1 (pc).
Воспроизведение проблемы:
1. Пользователи заходят в свой сеанс. Переключение раскладки работает, языковая панель на месте.
2. Администратор цепляется к активному сеансу через команду: mstsc /v:%HOSTNAME% /shadow:%SESSIONID% /control /noconsentprompt
3. Проблема устранена. Администратор закрывает shadow окно и у пользователя исчезает языковая панель + перестают работать горячие клавиши на переключение языка.
Причем и с Remote Assistant такая же проблема. Но это уже касательно Win8.1 (pc). Помог пользователю и он перезаходит.
Может кто-то победил таки проблему?
Благодарю.
Сегодня столкнулся с той же проблемой на боевом терминальном сервере.
Решения нет, но есть уточнение.
Язык пропадает только в том случае, если админ открывал shadow-подключение с раскладкой, которая не совпадает с «display language» пользователя. Причём «display language» админа не важен. «display language» может быть у каждого пользователя свой в его сессии. Проверял на сервере, который изначально устанавливался как English версия и потом доставлялся русский языковой пакет.
Т.е. у пользователя стоит русский интерфейс. Если к нему подключиться с включенной русской раскладкой, то после закрытия shadow языковая панель у него не пропадет.
У пользователя стоит русский интерфейс. Если к нему подключиться с включенной английской раскладкой, то после закрытия shadow языковая панель у него не пропадет.
Windows server 2012 пропала языковая панель
Итак, первый способ самый лёгкий и логичный, наверно вы уже проделали его сами, но на всякий случай приводим его:
0. Во-первых, просто попробуйте перезагрузиться. Просто может винда как обычно глюканула и языковая панель пропала из-за ошибки работы какой-то программы. Не помогло? Читаем дальше.
1. Правая кнопка мыши на панели задач -> Панели инструментов -> Поставьте галочку на «Языковая панель». Панель появилась?
Что, нет там такой строчки? Тогда читаем дальше.
2. Панель управления -> «Язык и региональные стандарты» -> вкладка «Языки» -> кнопка «Подробнее» -> вкладка «Параметры» (уже открыта скорей всего) -> нажмите кноку «Языковая панель», если активна -> отметьте галочку «Отображать языковую панель на рабочем столе».
Потом везде «Ок». Если языковая панель не появилась, проделайте шаг 1. Если снова не появилась, перезагрузите компьютер, и проделайте снова шаг 1.
Кнопка «Языковая панель» из шага 2 была не доступна? В таком случае:
3. Панель управления -> Язык и региональные стандарты -> вкладка «Языки» -> кнопка «Подробнее» -> вкладка «Дополнительно» -> галочка «Выключить дополнительные текстовые службы» отмечена? Ай-ай! Снимите её. Теперь переключитесь на вкладку «Параметры», кнопка «Языковая панель» должна быть активна и далее шаг 2.
После этого, как правило, нужно перезагрузиться и языковая панель появится. Если не появится, проделайте шаг 1.
«Не стандартные» способы:
4. Кнопка «Пуск» -> «Выполнить» -> ctfmon -> Enter
Панель должна появится. Если не появилась проделайте шаг 1.
Если панель появится, а после перезагрузки снова пропадёт, смотрите следующий способ.
И самый последний способ для самых упёртых «виндовсов». Поставим панель в автозагрузку! 😀
5. Кнопка «Пуск» -> «Выполнить» -> regedit -> Enter
ветка «HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run»
создаем мультистроковый параметр «CTFMON.EXE» со значением «C:\WINDOWS\system32\ctfmon.exe»
далее ветка «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run» — аналогично.
Мне помог способ 5. Кнопка «Пуск» -> «Выполнить» -> regedit -> Enter и т.д.