Microsoft KB Archive/322042

From BetaArchive Wiki

Article ID: 322042

Article Last Modified on 10/30/2006



APPLIES TO

  • Microsoft Windows 2000 Service Pack 1
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2



This article was previously published under Q322042

IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry


SYMPTOMS

When a Terminal Server client connects to a Terminal Server computer, the keyboard layout is retained but the input-language setting may not match that of the client.

For example, if your client is configured with an input-language setting of French and a keyboard layout setting of French (Canada), the Terminal Server session defaults to an input-language setting of English and a keyboard layout setting of French (Canada).

CAUSE

The Terminal Server client determines the keyboard layout and input language of the Terminal Server session by sending the current keyboard layout. However, substituted keyboard layouts do not properly maintain their input-language settings.

RESOLUTION

Service Pack Information

To resolve this problem, obtain the latest service pack for Microsoft Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

260910 How to Obtain the Latest Windows 2000 Service Pack


Hotfix Information

A supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next that contains this fix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:

NOTE: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The typical support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

After you install the hotfix, the following registry key will permit different behavior on the server. After the user logs on to the Terminal Server computer, the session uses the default keyboard layout stored in the user profile instead of the layout provided by the Terminal Server client.

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

  1. Start Registry Editor.
  2. Locate and then click the following key in the registry:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

  3. On the Edit menu, click Add Value, and then add the following registry value:

    Value name: IgnoreRemoteKeyboardLayout
    Data type: REG_DWORD
    Value data: 1

  4. Quit Registry Editor.

After you first connect to the Terminal Server computer, configure the default keyboard layout and input language that you want, and then log off. All later user logons will use the default keyboard layout and input language from the profile.

To change the keyboard layout for an installed input locale, follow these steps:

  1. Open the Regional Options tool in Control Panel.
  2. Click the Input Locales tab, click the language whose keyboard layout or input method editor that you want to change under Input language, and then click Properties.
  3. In the Input Locale Properties dialog box, click the keyboard layout or input method editor that you want to use, and then click OK.

The English-language version of this fix should have the following file attributes or later:

   Date         Time   Version        Size       File name
   ------------------------------------------------------------------------
   26-Jul-2002  10:27  5.0.2195.5781    123,664  adsldp.dll
   26-Jul-2002  10:27  5.0.2195.5781    131,344  adsldpc.dll
   26-Jul-2002  10:27  5.0.2195.5781     62,736  adsmsext.dll
   26-Jul-2002  10:27  5.0.2195.5940    358,160  advapi32.dll
   26-Jul-2002  10:27  5.0.2195.5265     42,256  basesrv.dll
   26-Jul-2002  10:27  5.0.2195.5855     49,424  browser.dll
   26-Jul-2002  10:27  5.0.2195.5943    135,952  dnsapi.dll
   26-Jul-2002  10:27  5.0.2195.5595     96,016  dnsrslvr.dll
   26-Jul-2002  10:27  5.0.2195.5722     45,328  eventlog.dll
   26-Jul-2002  10:27  5.0.2195.5907    222,992  gdi32.dll
   26-Jul-2002  10:27  5.0.2195.5859    145,680  kdcsvc.dll
   04-Jun-2002  10:31  5.0.2195.5859    199,952  kerberos.dll
   26-Jul-2002  10:27  5.0.2195.4928    708,880  kernel32.dll
   15-Jul-2002  04:52  5.0.2195.5940     71,024  ksecdd.sys
   22-Jul-2002  12:54  5.0.2195.5960    507,152  lsasrv.dll
   22-Jul-2002  12:54  5.0.2195.5960     33,552  lsass.exe
   26-Jul-2002  10:27  5.0.2195.4733    332,560  msgina.dll
   23-Jul-2002  10:27  5.0.2195.5966    108,304  msv1_0.dll
   26-Jul-2002  10:27  5.0.2195.5979    307,472  netapi32.dll
   26-Jul-2002  10:27  5.0.2195.5966    360,720  netlogon.dll
   26-Jul-2002  10:27  5.0.2195.5979    916,752  ntdsa.dll
   26-Jul-2002  10:27  5.0.2195.5966    387,344  samsrv.dll
   26-Jul-2002  10:27  5.0.2195.5951    129,296  scecli.dll
   26-Jul-2002  10:27  5.0.2195.5951    302,864  scesrv.dll
   18-Jul-2002  13:45  5.0.2195.5950     64,000  sp3res.dll
   25-Jun-2001  15:17  3.10.0.103        47,808  user.exe
   26-Jul-2002  10:27  5.0.2195.5931    379,664  user32.dll
   26-Jul-2002  10:27  5.0.2195.5968    369,936  userenv.dll
   26-Jul-2002  10:27  5.0.2195.5859     48,912  w32time.dll
   04-Jun-2002  10:32  5.0.2195.5859     57,104  w32tm.exe
   17-Jul-2002  07:45  5.0.2195.5948  1,642,416  win32k.sys
   03-May-2002  07:31  5.0.2195.5731    178,960  winlogon.exe
   26-Jul-2002  10:27  5.0.2195.5935    243,472  winsrv.dll
   26-Jul-2002  10:27  5.0.2195.5944    125,712  wldap32.dll
   26-Jul-2002  10:27  5.0.2195.5774     72,976  wmicore.dll
                



WORKAROUND

You can configure Terminal Server RDP clients to work around this issue without installing the hotfix. To do so, set the following registry key for the keyboard layout before the substitution occurs. You can also configure clients to set the profile of the session to substitute back to the keyboard layout. To do so, follow these steps:

  1. Retrieve the locale ID from the Substitutes key.

    For example, the following key will hold the substituted value of the keyboard. The 00000c0c value is being substituted to the Canadian keyboard layout of 00001009:

    HKEY_CURRENT_USER\Keyboard Layout\Substitutes
    00000c0c REG_SZ 00001009

  2. On the Terminal Server client, set the keyboard layout value (REG_SZ) in the following registry key to the value retrieved in step 1.

    In this example, set the value to 00000c0c.
    1. Start Registry Editor.
    2. Locate and then click the following key in the registry:

      HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client

    3. On the Edit menu, click Add Value, and then add the following registry value:

      Value name: Keyboard Layout
      Data type: REG_SZ
      Value data: 00000c0c (or Locale ID that you want from the Substitute key)

    4. Quit Registry Editor.
  3. Configure the Terminal Server profile for the user to match the Terminal Server client:
    1. Open the Regional Options tool in Control Panel.
    2. Click the Input Locales tab, click the language whose keyboard layout or input method editor that you want to change under Input language, and then click Properties.
    3. In the Input Locale Properties dialog box, click the keyboard layout or input method editor that you want to use, and then click OK.


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft Windows 2000 Service Pack 4.

MORE INFORMATION

If the Terminal Server client is configured to use the keyboard layout from the profile, this takes effect as soon as the user logs on. Therefore, the keyboard layout is determined by the client at the logon screen. This means that the user must select the appropriate keyboard type each time before connecting to Terminal Server.

Keywords: kbqfe kbhotfixserver kbshell kbwin2ksp4fix kbbug kbfix KB322042