Jezična traka nestaje u RDP sesiji nakon što završi sjenka sjene

Na RDS poslužiteljima u sustavu Windows Server 2012 R2 / Windows Server 2016 postoji prilično stara greška. Nakon što administrator ili zaposlenik tehničke podrške odustane od korisničke RDP sesije u kontrolnom načinu preko zasjenjene veze, jezična ploča nestaje u korisničkoj sesiji. Kao rezultat toga, korisnik ne može prebaciti jezik u svojoj RDS sesiji, vruće tipke za prebacivanje jezika također ne rade. Ako se administrator ponovo poveže s sesijom korisnika, jezička se traka opet pojavljuje, kad je isključen, opet nestaje. Slična greška nastaje kad se Shadow poveže s radnim stanicama sa sustavima Windows 10 i Windows 8.1..

Kako se ispostavilo, ovaj se problem pojavljuje samo ako administrator pokrene vezu u sjeni s jezičnim izgledom koji ne odgovara jeziku sustava (jezik prikaza) na korisničkom računalu. tj ako korisnik ima instalirano rusko sučelje sustava i na njega je povezan administrator s ruskim izgledom, nema problema. Ako je spojen administrator s engleskim izgledom, jezična ploča nestaje kada prekine sesija.

Zapravo se jezična traka samo skriva, jer neaktivni jezik se briše od korisnika, a sustav smatra da ako korisnik ima samo jedan jezik, nema potrebe za prikazom ploče za prebacivanje jezika.

Da biste vratili jezičnu traku, na klijentu morate otići Upravljačka ploča \ Sat, jezik i regija \ Language, odaberite bilo koji jezik i gumbe gore/dolje premjesti.

Da biste automatizirali ovu radnju, možete dodati sljedeću PowerShell skriptu na korisničku radnu površinu:

addlanguage.ps1

$ 1 = New-WinUserLanguageList hr-US
$ 1.Add ("ru-RU")
Set-WinUserLanguageList $ 1-sila

Općenito, dobiva se ručna drolja, pa čak i s ručnim pogonom.

vijeće. Naišao sam na zanimljivu postavku registra IgnoreRemoteKeyboardLayout. Ako na RDS poslužitelju u podružnici HKLM \ System \ CurrentControlSet \ Control \ Tipkovnica stvorite novi parametar tipa DWORD sa vrijednošću 1 (potrebno je ponovno podizanje sustava), a zatim poslužitelj započinje zanemariti izgled klijentove tipkovnice.

Verzija uređivača registra Windows 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Tipkovnica]
"IgnoreRemoteKeyboardLayout" = dword: 00000001

No, problem s jezikom koji nestaje postaje i dalje postoji ako se rasporedi tipkovnice razlikuju između sesije administratora i korisničkog terminala..

Pokušajmo automatizirati malo škripanje. Kad se prekinete sa sjenom sjene, korisnik se prijavljuje u Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Operativni događaj dnevnika sa "Sjednom kontrole sjene završeno" s EventId 20.507.

Moramo vezati zadatak planera za ovaj događaj (stavku Priložite zadatak ovom događaju), koji bi pokrenuo skriptu fixlangauge.ps1, koja tvori novi zadatak za planer i izvršava ga u korisničkoj sesiji.

fixlangauge.ps1

$ User = Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager / Operative" | Where-Object $ _. ID -eq "20507" | select-object -prvi 1 | ForEach-Objekt "$ ($ _. Properties [2] .Value)"
schtasks.exe / create / RU $ Korisnik / IT / TN $ User / TR "powershell.exe -File c: \ ps \ addlanguage.ps1" / SC DAILY
schtasks.exe / run / TN $ Korisnik
Start-Sleep-Milisekunde 10000
schtasks.exe / Delete / TN $ User / F

Zadatak pokreće gornju PS skriptu addlanguage.ps1.

Prema tome, nakon što administrator razdvoji sesiju sjene s korisnikom, u sustavu se aktivira okidač događaja 20507, a naredba za dodavanje jezika automatski se pokreće ispod korisnika.