1000+ инструкций в блоге SoftComputers
0 0 голоса
Рейтинг

На серверах Windows Server 2012 R2, 2016, а также рабочих станциях Windows 10 и 8.1 пользователи сталкиваются с проблемой, когда после отключения администратора от RDP-сессии через теневое подключение (shadow) исчезает языковая панель. В результате пользователь не может переключать раскладку клавиатуры, а стандартные горячие клавиши (например, Alt+Shift или Ctrl+Shift) перестают работать. При повторном подключении администратора панель возвращается, но исчезает снова после его выхода.

Проблема возникает, если раскладка клавиатуры администратора отличается от языка интерфейса системы (Display Language) в сессии пользователя. Например, если у пользователя русская раскладка, а администратор подключается с английской, система удаляет неактивный язык, считая, что панель не нужна при наличии только одной раскладки. В этой статье рассмотрены способы восстановления языковой панели с использованием PowerShell, реестра и автоматизации через Планировщик задач.

Приобрести оригинальные ключи активации Windows Server можно у нас в каталоге от 1190 ₽

Решение 1: Ручное восстановление языковой панели

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

1. Откройте Панель управления -> Часы, язык и регион -> Язык (Control Panel -> Clock, Language, and Region -> Language).

2. Нажмите Добавить язык, выберите, например, Английский (en-US) или Русский (ru-RU).

3. Используйте кнопки Вверх или Вниз для изменения порядка языков.

4. Примените настройки и проверьте, появилась ли языковая панель.

Решение 2: Автоматизация добавления языка через PowerShell

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

1. Создайте файл addlanguage.ps1 с содержимым:


$list = New-WinUserLanguageList en-US
$list.Add("ru-RU")
Set-WinUserLanguageList $list -Force

2. Поместите скрипт в папку, доступную пользователю, например, C:\PS.

3. Запустите скрипт вручную или добавьте его на рабочий стол пользователя для быстрого доступа.

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

Решение 3: Игнорирование раскладки клиента через реестр

Параметр реестра IgnoreRemoteKeyboardLayout позволяет серверу игнорировать раскладку клавиатуры клиента, но не всегда решает проблему.

1. Откройте Редактор реестра (regedit.exe) на RDS-сервере.

2. Перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout.

3. Создайте параметр типа DWORD с именем IgnoreRemoteKeyboardLayout и значением 1.

Или импортируйте готовый .reg файл:


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "IgnoreRemoteKeyboardLayout"=dword:00000001

4. Перезагрузите сервер и проверьте, сохраняется ли проблема.

Ограничение

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

Решение 4: Автоматизация через Планировщик задач

Для автоматического восстановления языковой панели после отключения теневой сессии можно настроить триггер на событие Shadow Control Session Ended (EventID 20507) в журнале событий.

1. Проверьте журнал событий:

— Откройте Просмотр событий (eventvwr.msc).

— Перейдите в Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational.

— Найдите событие с EventID 20507 («Shadow Control Session Ended»).

2. Создайте скрипт fixlanguage.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

3. Поместите скрипты fixlanguage.ps1 и addlanguage.ps1 в папку C:\PS.

4. Настройте задание в Планировщике задач (taskschd.msc):

— Создайте новое задание с именем, например, RestoreLanguagePanel.

— На вкладке Триггеры выберите При событии и укажите:

— Журнал: Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational.

— Источник: RemoteConnectionManager.

— Код события: 20507.

— На вкладке Действия укажите запуск powershell.exe с аргументом -File C:\PS\fixlanguage.ps1.

— На вкладке Условия включите Запускать только при подключении к сети.

5. Проверьте выполнение задания после отключения теневой сессии.

Этот скрипт автоматически добавляет языки в сессии пользователя после завершения теневого подключения.

Дополнительные рекомендации

— Убедитесь, что на сервере и клиентских устройствах установлены последние обновления Windows через Центр обновления Windows.

— Проверьте настройки языков в Панели управления -> Часы, язык и регион -> Административные -> Язык интерфейса на RDS-сервере.

— Если проблема сохраняется, временно отключите теневое подключение и используйте прямое подключение через mstsc.exe для диагностики.

— Проверьте журналы событий в разделе Microsoft-Windows-TerminalServices для выявления дополнительных ошибок.

— Рассмотрите использование сторонних инструментов управления, таких как Remote Desktop Manager, для упрощения администрирования RDP-сессий.

Эти методы восстановят языковую панель в RDP-сессиях и обеспечат стабильное переключение раскладок клавиатуры.

author avatar
copywriter
banner for Windows Server
Лицензионный ключ активации Windows Server от
1190 ₽ Купить
0 0 голоса
Рейтинг
Подписаться
Уведомить о
guest
     
0 отзывов
21
Межтекстовые Отзывы
Посмотреть все комментарии