[Solved] Windows Core keyboard language when entering password

The problem

  1. You install a Windows Server 2016 Core or a Windows Server 2019 Core
  2. At the end of the installation, you are prompted to enter a password for the Administrator account
  3. With Windows 2016 Core, when you do one of the following actions, you are not able to login anymore:
    • log off from the computer
    • lock the computer
    • restart the computer
  4. With Windows 2019 Core, you are not able to:
    • RDP
    • PSRemote
    • Change your password with ALT + CTRL + SUPPR and Change a password

Solution for Windows 2016 Core

Here we are going to set the input language of the Welcome screen with the same value as the current user (local Administrator).

Graphical workaround for Windows 2016 (for a few computers)

As a workaround, you can use the graphical control panel item.
However, you must be aware that it does not only copy the Input language, but also all other settings (Display language, Format, Location). If you are ok with that, you can proceed with this workaround rather than the PowerShell solution described below.

  1. In the command prompt, type intl.cpl
  2. Click on the Administrative tab
  3. Click on the Copy settings… button
  4. Check Welcome screen and system accounts
  5. Click OK

PowerShell solution for Windows 2016 Core (for many computers)

Before you lock, log off or restart the computer, change the values of the Substitutes and Preload keys from the Default user.

  1. Check your current substitutes
    Get-ItemProperty -Path 'HKCU:\Keyboard Laytout\Substitutes'
  2. Check current substitutes of the Default user account
    Get-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes'
  3. Add one or all missing substitutes to the Default user account
    New-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Substitutes' -Name '00000809' -Value '00000040c' -PropertyType 'String'
  4. Just for information have a look at the current values of the Preload key
    Get-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Preload'
  5. Configure value 1 of the Preload key with the substitute name which will be used first on the Welcome screen. If you want, you can also remove other values from the Preload key or reorder them…
    Set-ItemProperty -Path 'Registry::HKEY_USERS\.DEFAULT\Keyboard Layout\Preload' -Name 1 -Value '00000809'

If you want to better understand the steps from the solution above:

Here
is the list of the languages basic identifiers.

Here is a synthetic view of
how values are built.

Here is an explanation of how IME (Input Method Editor)
works.

Solution for Windows Core 2019

WARNING!!! This is a 2 steps solution. You must apply both steps.

  1. Change the Administrator password with PowerShell
    (This part fixes the RDP and PSRemoting issue)

    Set-LocalUser -Name Administrator -Password (Read-Host -AsSecureString)
  2. IN ADDITION, apply one of the two solutions for Windows 2016 Core described above in this post
    (This part assures that you are able to login through the console again because you just changed the password with another keyboard layout.)

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s