RemoteApp セッション上で、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションが無効になる。

適用対象: Windows Server 2012 DatacenterWindows Server 2012 DatacenterWindows Server 2012 Essentials

現象


以下の 2 つの条件を満たす RemoteApp セッション上では、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションが無効化されます。
  • Windows Server 2012 上で RemoteApp を公開している
  • Windows 8 からこの公開された RemoteApp を使用している

Windows 8 および Windows Server 2012 では、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションが有効な状態でないと、プログラムから IME の入力モードを変更することができません。
そのため、IME の入力モードを変更するようなプログラムが RemoteApp として Windows Server 2012 上で公開されていた場合、Windows 8 からこの RemoteApp を使用すると、プログラムが意図したとおりに IME の入力モードが変更されない現象が発生します。

原因


この現象は、Windows Server 2012 が、RemoteApp セッションの初期化時に [アプリ ウィンドウごとに異なる入力方式を設定する] オプションを無効化するために発生します。
Windows Server 2012 の内部では、ほかのコンピューターが Windows Server 2012 上で公開されている RemoteApp へのログオンに成功すると、以下のように RemoteApp セッションの初期化処理を行います。

  1. RemoteApp セッションを作成します。
  2. RemoteApp にログオンしてきたコンピューターの OS バージョンを判定します。
  3. OS バージョンが Windows 8 以上であった場合には、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションを無効にした状態で、作成した RemoteApp セッションを初期化します。
  4. OS バージョンが Windows 7 以下であった場合には、Windows Server 2012 上で設定されている [アプリ ウィンドウごとに異なる入力方式を設定する] オプションの状態で、作成した RemoteApp セッションを初期化します。

3. の初期化処理は、Windows Server 2012 上で設定されているオプションの状態に関係なく行われます。
そのため、Windows Server 2012 上で公開されている RemoteApp を Windows 8 から使用していて、かつその RemoteApp が IME の入力モードを変更するようなプログラムであった場合には、プログラムが意図したとおりに IME の入力モードが変更されない現象が発生します。

回避策


前述した 2 つの条件をみたす RemoteApp セッション上で、プログラムが意図したとおりに IME の入力モードを制御できない状態になっていた場合は、以下のいずれかの方法を回避策として利用できます。


方法 1. ユーザー操作によって IME の入力モードを変更する RemoteApp セッション上で、キーボード等のユーザー操作によって IME の入力モードを変更してください。

方法 2. RemoteApp セッションの初期値を変更する RemoteApp を公開している Windows Server 2012 において、下記 RDPFileContents レジストリ値の既存のデータの先頭に、"disableseamlesslanguagebar:i:1" を追加してください。

注意: "disableseamlesslanguagebar:i:1" を追加する際には、誤って RDPFileContents 値の既存のデータを削除しないようにご注意ください。

レジストリ サブ キー:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\CentralPublishedResources\PublishedFarms\[RemoteApp コレクション名]\Applications\[RemoteApp 名]

レジストリ値:
RDPFileContents

上記 RDPFileContents 値の既存のデータに "disableseamlesslanguagebar:i:1" を追加すると、レジストリ サブ キー内で指定されている RemoteApp セッションを、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションが有効な状態で初期化することができます。

なお、上記レジストリの編集は、Windows Server 2012 上で直接行うことも、グループ ポリシー経由で行うことも可能です。
以下は、Windows Server 2012 のグループ ポリシー経由で、上記レジストリの編集を行う場合の手順です。


Windows Server 2012 のグループ ポリシー経由で RemoteApp セッションの初期値を変更する方法
  1. サーバー マネージャーから、予め [グループ ポリシーの管理] 機能を追加しておきます。
  2. サーバー マネージャーから、[ツール] - [グループ ポリシーの管理] を選択します。
  3. 新しいグループ ポリシー オブジェクト (ドメイン レベル、または使用するコンピューター アカウントを含む OU にリンクされたもの) を作成するか、または既存のグループ ポリシー オブジェクトを選択します。
  4. 手順 3. のグループ ポリシー オブジェクトを右クリックして [編集] を選択し、[グループ ポリシー管理エディタ] を開きます。
  5. [コンピューターの構成] - [基本設定] - [Windows の設定] を展開します。
  6. [レジストリ] を右クリックして、[レジストリ項目] を新規作成します。
  7. [新しいレジストリ プロパティ] ウィンドウが開きますので、[更新] を選択し、以下のレジストリ サブ キーから、RDPFileContents レジストリ値を参照します。

    レジストリ サブ キー: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\CentralPublishedResources\PublishedFarms\[RemoteApp コレクション名]\Applications\[RemoteApp 名]
    レジストリ値: RDPFileContents
  8. [値のデータ] 入力ボックスで、既存のデータの先頭に "disableseamlesslanguagebar:i:1" を追加して、[適用] ボタンをクリックします。

    注意: "disableseamlesslanguagebar:i:1" を追加する際には、誤って RDPFileContents 値の既存のデータを削除しないようにご注意ください。
  9. [OK] ボタンをクリックして、ウィンドウを閉じます。
  10. コマンド プロンプトから、"gpupdate /force" コマンドを実行して、グループ ポリシーの変更を強制的に更新します。

状況


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

関連情報


以下のリンクは、RemoteApp の概要について説明した資料です。
Windows Server 2008 R2 向けのものですが、Windows Server 2012 においても同様となります。



以下のリンクは、[アプリ ウィンドウごとに異なる入力方式を設定する] オプションの仕組みを説明した資料です。


日本語版の資料は、以下のリンクからダウンロードすることが可能です。

P.23 スレッドベースからユーザーベースに変更されたテキスト入力の切り替え