Windows – Language Bar Disappears After Terminating a Shadow Remote Desktop Connection to a User in Windows Server [2012 R2 in the case]

rdpremote desktopwindowswindows-server-2012-r2

Essentially, the question is the way it is. The bug has been out there for quite a while but it doesn't seem to be a specific way to get rid of it.
I've been able to find some stuff both in Russian and English but no luck there.
https://social.technet.microsoft.com/Forums/ru-RU/a115017f-378e-4a64-83dc-195001d7f182/-shadow-2012-r2?forum=WS8ru#26cfec67-f6e1-42c1-a9d3-68a31053b4ad
https://social.technet.microsoft.com/Forums/windowsserver/en-US/6f738827-70a1-448c-8635-a01e41afca8f/windows-2012r2-language-bar-disappears-after-shadow?forum=winserverTS#147cc3cb-cd5e-452f-afeb-4e4accfb9927

So this happens both when you connect from the server itself or from a computer with respective administrative GPOs applied (and a user is granted with admin rights), it's just as soon as you disconnect feels like the bar wasn't even there. Three things help:
1. You go to the Control Panel -> Language and swap back and forth two (or more) languages displayed there.
2. You add another one to the list.
3. A user relogins to the terminal session.

Feels like this thing presents for the Active Directory as an entity independent on the users connecting to a terminal server or just logging in to an AD account on a specific domain computer.
Maybe it is somehow connected with terminating ctfmon.exe or something connected to language input.

I've tried to screw around with registry attributes

HKEY_CURRENT_USER\Keyboard Layout\Preload
HKEY_CURRENT_USER\Keyboard Layout\Toggle

and this

Control Panel\All Control Panel Items\Language\Advanced settings
"Let me set a different input method for each app window"

No luck there

I would really appreciate some directions here.

Best Answer

I have the same problem but on Server 2016. The most common solution I've found on the web is to create a new string in registry through Regedit in this section:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

with any name and this value:

ctfmon"="c:\Windows\System32\CTFMON.EXE" 

and reboot the server.

But this works from time to time and I don't understand why.

If anyone have a better solution I would appreciate it.