Bilah bahasa menghilang di sesi RDP setelah sesi bayangan berakhir

Pada server RDS di bawah Windows Server 2012 R2 / Windows Server 2016 ada bug yang agak lama. Setelah administrator atau karyawan dukungan teknis terputus dari sesi RDP pengguna dalam mode kontrol melalui koneksi bayangan, panel bahasa menghilang di sesi pengguna. Akibatnya, pengguna tidak dapat mengganti bahasa di sesi RDS-nya, tombol pintas untuk beralih bahasa juga tidak berfungsi. Jika administrator terhubung kembali ke sesi pengguna, bilah bahasa muncul lagi, ketika terputus, itu menghilang lagi. Bug serupa terjadi ketika Shadow terhubung ke workstation dengan Windows 10 dan Windows 8.1..

Ternyata, masalah ini hanya muncul jika administrator memulai koneksi bayangan dengan tata letak bahasa yang tidak cocok dengan bahasa sistem (Bahasa tampilan) pada komputer pengguna. Yaitu jika pengguna memiliki antarmuka sistem Rusia diinstal, dan seorang administrator dengan tata letak Rusia terhubung, tidak ada masalah. Jika administrator dengan tata letak bahasa Inggris terhubung, panel bahasa menghilang ketika sesi terputus.

Bahkan, bilah bahasa hanya bersembunyi, karena bahasa tidak aktif dihapus dari pengguna, dan sistem menganggap bahwa jika pengguna hanya memiliki satu bahasa tersisa, maka tidak perlu menampilkan panel pengalih bahasa.

Untuk mengembalikan bilah bahasa, pada klien Anda harus pergi ke Panel Kontrol \ Jam, Bahasa & Wilayah \ Bahasa, pilih bahasa dan tombol apa saja Naik/Turun pindahkan itu.

Untuk mengotomatiskan tindakan ini, Anda dapat menambahkan skrip PowerShell berikut ke desktop pengguna:

addlanguage.ps1

$ 1 = New-WinUserLanguageList en-US
$ 1.Tambahkan ("ru-RU")
Set-WinUserLanguageList $ 1-force

Secara umum, kruk manual diperoleh, dan bahkan dengan drive manual.

Kiat. Saya menemukan pengaturan registri yang menarik AbaikanRemoteKeyboardLayout. Jika pada server RDS di cabang HKLM \ System \ CurrentControlSet \ Control \ Keyboard buat parameter baru bertipe DWORD dengan nilai 1 (reboot diperlukan), kemudian server mulai mengabaikan tata letak keyboard klien.

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

Namun, masalah dengan bilah bahasa yang hilang masih muncul jika tata letak keyboard berbeda antara admin dan sesi terminal pengguna.

Mari kita coba mengotomatiskan tongkat penyangga kecil. Ketika memutuskan sambungan dari sesi bayangan, pengguna log di Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Acara log operasional dengan "Sesi Kontrol Shadow Berakhir" dengan EventId 20507.

Kita harus mengikat tugas penjadwal ke acara ini (item Lampirkan tugas ke acara ini), yang akan menjalankan skrip fixlangauge.ps1, yang membentuk tugas baru untuk penjadwal dan menjalankannya dalam sesi pengguna.

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 $ Pengguna / IT / TN $ Pengguna / TR "powershell.exe -File c: \ ps \ addlanguage.ps1" / SC SETIAP HARI
schtasks.exe / run / TN $ User
Mulai-Tidur-Milidetik 10000
schtasks.exe / Hapus / TN $ Pengguna / F

Tugas menjalankan skrip PS di atas addlanguage.ps1.

Dengan demikian, setelah administrator memutus sesi bayangan ke pengguna, pemicu pada acara 20507 dipicu dalam sistem dan perintah add language secara otomatis dijalankan dari bawah pengguna.