A nyelvi sáv az RDP-munkamenetben eltűnik, miután az árnyék-munkamenet befejeződött

A Windows Server 2012 R2 / Windows Server 2016 alatt lévő RDS-kiszolgálókon meglehetősen régi hiba található. Miután az adminisztrátor vagy a műszaki támogatás munkatársa árnyékos kapcsolaton keresztül leválasztja a felhasználói RDP-munkamenetet a vezérlés üzemmódban, a nyelvpanel eltűnik a felhasználói munkamenetből. Ennek eredményeként a felhasználó nem válthat nyelvet RDS-munkamenetében; a nyelvváltás gyorsbillentyűi sem működnek. Ha az adminisztrátor újracsatlakozik a felhasználói munkamenethez, a nyelvsáv ismét megjelenik, amikor leválasztják, akkor ismét eltűnik. Hasonló hiba akkor fordul elő, amikor Shadow a Windows 10 és a Windows 8.1 munkaállomásokhoz kapcsolódik..

Mint kiderült, ez a probléma csak akkor jelentkezik, ha az adminisztrátor árnyékkapcsolatot kezdeményez olyan nyelvi elrendezéssel, amely nem felel meg a felhasználó számítógépén a rendszernyelvnek (Kijelző nyelve). Ie ha a felhasználónak telepítve van az orosz rendszer interfész, és ehhez csatlakozik egy orosz elrendezéssel rendelkező rendszergazda, akkor nincs probléma. Ha egy angol elrendezéssel rendelkező rendszergazda csatlakozik, a nyelvi panel eltűnik, amikor a munkamenetet lekapcsolják.

Valójában a nyelvi sáv csak elrejtőzik, mert az inaktív nyelvet törli a felhasználótól, és a rendszer úgy ítéli meg, hogy ha a felhasználónak csak egy nyelve van hátra, akkor a nyelvváltó panelt nem kell megjeleníteni.

A nyelvsáv visszatéréséhez az ügyfélen meg kell lépnie Vezérlőpult \ Óra, nyelv és régió \ nyelv, válasszon bármilyen nyelvet és a gombokat fel/le mozgatni.

A művelet automatizálásához hozzáadhatja a következő PowerShell szkriptet a felhasználó asztalához:

addlanguage.ps1

$ 1 = New-WinUserLanguageList en-USA
1 dollár hozzáadása ("ru-RU")
Set-WinUserLanguageList $ 1 -erő

Általában manuális mankó készül, még kézi hajtással is.

tanács. Egy érdekes regisztrációs beállítással találkoztam IgnoreRemoteKeyboardLayout. Ha egy ágon található RDS-kiszolgálón HKLM \ System \ CurrentControlSet \ Control \ Keyboard hozzon létre egy új DWORD típusú paramétert az 1. értékkel (újraindítás szükséges), majd a szerver elkezdi figyelmen kívül hagyni az ügyfél billentyűzetének elrendezését.

A Windows beállításjegyzék-szerkesztő 5.00-as verziója
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Keyboard Layout]
"IgnoreRemoteKeyboardLayout" = jel: 00000001

Az eltűnő nyelvsáv problémája azonban továbbra is felmerül, ha a billentyűzetkiosztás eltér a rendszergazda és a felhasználó terminálszekciója között.

Próbáljuk automatizálni egy kis mankót. Az árnyék-szekciótól való leválasztáskor a felhasználó bejelentkezik a Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> műveleti napló eseményen az "Ellenőrzéses árnyékvezérlő munkamenet befejeződése" segítségével az EventId segítségével 20507.

Az ütemező feladatot ehhez az eseményhez kell kötni (tétel Csatolja a feladatot ehhez az eseményhez), amely futtatná a fixlangauge.ps1 parancsfájlt, amely új feladatot képez az ütemező számára, és végrehajtja azt egy felhasználói munkamenetben..

fixlangauge.ps1

$ Felhasználó = Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager / Operational" | Where-Object $ _. ID -eq "20507" | select-object-első 1 | ForEach-Object "$ ($ _. Properties [2] .Value)"
schtasks.exe / create / RU $ Felhasználó / IT / TN $ Felhasználó / TR "powershell.exe -Fájl c: \ ps \ addlanguage.ps1" / SC DAILY
schtasks.exe / run / TN $ felhasználó
Start-Sleep-Milliseconds 10000
schtasks.exe / Törlés / TN $ Felhasználó / F

A feladat futtatja a fenti PS parancsfájlt, az addlanguage.ps1 fájlt.

Így miután az adminisztrátor leválasztotta az árnyék munkamenetet a felhasználótól, a 20507 esemény eseményindítója aktiválódik a rendszerben, és az add language parancs automatikusan fut a felhasználó alól.