Po ukončení tieňovej relácie zmizne panel jazykov v relácii RDP

Na serveroch RDS v systéme Windows Server 2012 R2 / Windows Server 2016 je dosť stará chyba. Keď sa administrátor alebo zamestnanec technickej podpory odpojí od relácie RDP používateľa v riadiacom režime prostredníctvom tieňového pripojenia, panel jazyka zmizne v relácii používateľa. V dôsledku toho používateľ nemôže prepínať jazyk v relácii RDS, klávesové skratky pre prepínanie jazyka tiež nefungujú. Ak sa správca znovu pripojí k relácii používateľa, po odpojení sa znova zobrazí panel jazykov, keď zmizne. K podobnej chybe dochádza, keď sa Shadow pripojí k pracovným staniciam so systémom Windows 10 a Windows 8.1..

Ako sa ukázalo, tento problém sa objaví, iba ak správca iniciuje tieňové spojenie s jazykovým rozložením, ktoré sa nezhoduje s jazykom systému (jazyk displeja) v počítači používateľa. tj ak má užívateľ nainštalované ruské systémové rozhranie a je k nemu pripojený správca s ruským rozložením, problém nie je. Ak je pripojený správca s anglickým rozložením, panel jazykov prestane po odpojení relácie zmiznúť.

V skutočnosti sa panel jazykov skryje, pretože neaktívny jazyk je vymazaný od používateľa a systém sa domnieva, že ak má užívateľ ešte len jeden jazyk, nie je potrebné zobrazovať panel prepínania jazykov.

Ak chcete vrátiť jazykovú lištu, musíte na klienta prejsť na stránku Ovládací panel \ Hodiny, Jazyk a región \ Jazyk, vyberte ľubovoľný jazyk a tlačidlá hore/nadol pohni to.

Ak chcete automatizovať túto akciu, môžete na plochu používateľa pridať nasledujúci skript PowerShell:

addlanguage.ps1

$ 1 = New-WinUserLanguageList en-US
$ 1Pridať („ru-RU“)
Set-WinUserLanguageList $ 1-force

Spravidla sa získa ručná barla, a to aj pri manuálnom pohone.

rada. Narazil som na zaujímavé nastavenie databázy Registry IgnoreRemoteKeyboardLayout. Ak sa nachádza na serveri RDS vo vetve HKLM \ System \ CurrentControlSet \ Control \ Keyboard vytvorte nový parameter typu DWORD s hodnotou 1 (je potrebné reštartovať), potom server začne ignorovať rozloženie klávesnice klienta.

Editor databázy Registry systému Windows, verzia 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Layout Keyboard]
"IgnoreRemoteKeyboardLayout" = dword: 00000001

Problém so strateným jazykovým pruhom však stále pretrváva, ak sa rozloženie klávesnice líši medzi správcom a reláciou používateľa terminálu..

Skúsme automatizovať malú barlu. Pri odpojení od tieňovej relácie používateľa v Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Prevádzkový denník sa objaví udalosť s "Shadow Control Session Ended" s EventId 20507.

Na túto udalosť (položku.) Je potrebné priradiť úlohu plánovača Pripojiť úlohu k tejto udalosti), ktorý by spúšťal skript fixlangauge.ps1, ktorý predstavuje novú úlohu pre plánovača a vykonáva ju v užívateľskej relácii.

fixlangauge.ps1

$ User = Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager / Operational" | Where-Object $ _. ID -eq "20507" | select-object -prvé 1 | ForEach-Object "$ ($ _. Properties [2] .Value)"
schtasks.exe / create / RU $ User / IT / TN $ User / TR "powershell.exe -Súbor c: \ ps \ addlanguage.ps1" / SC DAILY
schtasks.exe / run / TN $ User
Start-Sleep-milisekundy 10000
schtasks.exe / Odstrániť / TN $ Používateľ / F

Úlohou je spustiť vyššie uvedený skript PS addlanguage.ps1.

Keď administrátor odpojí tieňovú reláciu od používateľa, spustí sa v systéme spúšťač udalosti 20507 a príkaz add language sa automaticky spustí zdola užívateľa.