Пропадает языковая панель в 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 и из-под пользователя автоматически отрабатывает команда добавления языка.
Языковая панель и переключение раскладок Windows Server 2008 R2
Столкнулся с забавным глюком — в Windows Server 2008 R2 после репликаци на нем имеющегося домена пропала языковая панель и переключение раскладок как таковое 🙂 Решение проблемы:
- Запускаем Планировщик заданий (Пуск — Администрирование-Планировщик заданий).
- Находим слева задание TextServicesFramework, открываем.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытое задание MsCtfMonitor — это задание отслеживает работу системной службы текстовой платформы. Нажимаем по нему правой кнопкой мыши и выбираем пункт Включить, потом пункт Выполнить.
- В свойства задания MsCtfMonitor должна стоять галочка Выполнить с наивысшими правами
- Слева находим задание CertifacteServicesClient, открываем.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытые задания SystemTask, UserTask, UserTask-Roam.
- Проделываем с ними аналогичные MsCtfMonitor действия.
- Перезагружаем машину.
- Если языковая панель не появилась, в панели управления настраиваем неходимые комбинации клавиш для переключения языков и еще раз перезагружаемся.
Включить языковую панель windows server
Вопрос
Убедительно прошу Вас помочь в разрешении следующей проблемы: недавно был установлен Windows Server® 2008 Standard x64 bit , развернут контролер домена и сопутствующие ему роли, а после выполнения данных процедур перестала функционировать переключатель раскладки клавиатуры, и пропала языковая панель.
Добрые люди прошу Вас, помогите разрешить данную проблему, так как я первоначально прочел от корки до корки данный форум, но что касается Windows Server® 2008, то очень мало есть какого либо практического материала, а все то что есть на форуме (касаемо Vista, XP и более ранних версий ОС Windows ) я попробовал, но так ни чего и не помогло!
- Изменено osr_ MVP, Moderator 30 апреля 2009 г. 20:32 реклама в подписи
- Перемещено Yubo. Zhang 21 апреля 2012 г. 16:07 merge forums (От:Windows Server 2008)
Ответы
- Помечено в качестве ответа Nikita Panov Moderator 31 июля 2009 г. 6:29
Все ответы
Как скажите, главное помогите решить данный вопрос!
Что в Regional settings?
И «перепробовал все» мало походит на детальное описание попыток.
В языках и региональных стандартах рыжик стоит – что бы показывал языковую панель (там я смотрел в первую очередь)!
Может быть, какая-нибудь служба не запущена – убедительно прошу, подскажите, от каких служб зависит работоспособность языковой панели? (вернее без каких работающих служб языковая панель не будет функционировать?).
Попробуйте выполнить рекомендации, данные в этом обсуждении:
Если кратко, то проверьте, что ctfmon.exe существует как файл, запускается при старте системы и т.п.
Не было ли установлено на сервер какое-либо стороннее ПО, либо настроена политика, запрещающая запись в какие-либо ключи реестра, и эта политика действует на контроллеры домена?
Вопрос то решён?
столкнулся вчера с аналогичной проблеммой
tfmon.exe запускается, но панельки раскладки нет
2008 R2 Rus
поднял на нём домен
перестала работать раскладка (перестала переключать), после некоторых манипуляций пропал индикатор в трее 🙁
- Помечено в качестве ответа Nikita Panov Moderator 31 июля 2009 г. 6:29
Punto на севере? Мсье большой оригинал =)
- Запускаем Планировщик заданий из меню Пуск — Администрирование.
- В левом раскрывающемся списке находим задание TextServicesFramework, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытое задание MsCtfMonitor — это задание отслеживает работу системной службы текстовой платформы. Нажимаем по нему правой кнопкой мыши и выбираем пункт Включить, потом пункт Запустить.
- ВАЖНО! В свойства задания MsCtfMonitor должна стоять галочка Выполнить с наивысшими правами
- В левом раскрывающемся списке находим задание CertifacteServicesClient, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытые задания SystemTask, UserTask, UserTask-Roam
- Проделываем с ними действия описанные в пункте 4
- Перезагружаем машину.
- Запускаем Планировщик заданий из меню Пуск — Администрирование.
- В левом раскрывающемся списке находим задание TextServicesFramework, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытое задание MsCtfMonitor — это задание отслеживает работу системной службы текстовой платформы. Нажимаем по нему правой кнопкой мыши и выбираем пункт Включить, потом пункт Запустить.
- ВАЖНО! В свойства задания MsCtfMonitor должна стоять галочка Выполнить с наивысшими правами
- В левом раскрывающемся списке находим задание CertifacteServicesClient, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытые задания SystemTask, UserTask, UserTask-Roam
- Проделываем с ними действия описанные в пункте 4
- Перезагружаем машину.
Включить языковую панель windows server
Question
Убедительно прошу Вас помочь в разрешении следующей проблемы: недавно был установлен Windows Server® 2008 Standard x64 bit , развернут контролер домена и сопутствующие ему роли, а после выполнения данных процедур перестала функционировать переключатель раскладки клавиатуры, и пропала языковая панель.
Добрые люди прошу Вас, помогите разрешить данную проблему, так как я первоначально прочел от корки до корки данный форум, но что касается Windows Server® 2008, то очень мало есть какого либо практического материала, а все то что есть на форуме (касаемо Vista, XP и более ранних версий ОС Windows ) я попробовал, но так ни чего и не помогло!
- Edited by osr_ MVP, Moderator Thursday, April 30, 2009 8:32 PM реклама в подписи
- Moved by Yubo. Zhang Saturday, April 21, 2012 4:07 PM merge forums (От:Windows Server 2008)
Answers
- Marked as answer by Nikita Panov Moderator Friday, July 31, 2009 6:29 AM
All replies
Как скажите, главное помогите решить данный вопрос!
Что в Regional settings?
И «перепробовал все» мало походит на детальное описание попыток.
В языках и региональных стандартах рыжик стоит – что бы показывал языковую панель (там я смотрел в первую очередь)!
Может быть, какая-нибудь служба не запущена – убедительно прошу, подскажите, от каких служб зависит работоспособность языковой панели? (вернее без каких работающих служб языковая панель не будет функционировать?).
Попробуйте выполнить рекомендации, данные в этом обсуждении:
Если кратко, то проверьте, что ctfmon.exe существует как файл, запускается при старте системы и т.п.
Не было ли установлено на сервер какое-либо стороннее ПО, либо настроена политика, запрещающая запись в какие-либо ключи реестра, и эта политика действует на контроллеры домена?
- Edited by osr_ MVP, Moderator Sunday, May 3, 2009 9:14 PM
Вопрос то решён?
столкнулся вчера с аналогичной проблеммой
tfmon.exe запускается, но панельки раскладки нет
2008 R2 Rus
поднял на нём домен
перестала работать раскладка (перестала переключать), после некоторых манипуляций пропал индикатор в трее 🙁
- Marked as answer by Nikita Panov Moderator Friday, July 31, 2009 6:29 AM
Punto на севере? Мсье большой оригинал =)
- Запускаем Планировщик заданий из меню Пуск — Администрирование.
- В левом раскрывающемся списке находим задание TextServicesFramework, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытое задание MsCtfMonitor — это задание отслеживает работу системной службы текстовой платформы. Нажимаем по нему правой кнопкой мыши и выбираем пункт Включить, потом пункт Запустить.
- ВАЖНО! В свойства задания MsCtfMonitor должна стоять галочка Выполнить с наивысшими правами
- В левом раскрывающемся списке находим задание CertifacteServicesClient, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытые задания SystemTask, UserTask, UserTask-Roam
- Проделываем с ними действия описанные в пункте 4
- Перезагружаем машину.
- Запускаем Планировщик заданий из меню Пуск — Администрирование.
- В левом раскрывающемся списке находим задание TextServicesFramework, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытое задание MsCtfMonitor — это задание отслеживает работу системной службы текстовой платформы. Нажимаем по нему правой кнопкой мыши и выбираем пункт Включить, потом пункт Запустить.
- ВАЖНО! В свойства задания MsCtfMonitor должна стоять галочка Выполнить с наивысшими правами
- В левом раскрывающемся списке находим задание CertifacteServicesClient, открываем его.
- В меню Вид выбираем пункт — Отобразить скрытые задачи.
- Справа видим скрытые задания SystemTask, UserTask, UserTask-Roam
- Проделываем с ними действия описанные в пункте 4
- Перезагружаем машину.