Windows Server 2019 不具合? 特定アプリで日本語入力ができなくなる。
TechNetフォーラムへの投稿を行ったところ、
株式会社シーピーエスの社長さんが解決策を教えてくださいました。
本当にありがとうございました。
御礼がてらの会社紹介
株式会社シーピーエス
TechNetに集う有志さんのおかげで、何とか解決策が見つかりましたが、
本来ならMicrosoftさんが教えてくれてもいいんじゃないの?と思っております。
まぁ、とにもかくにも解決したので、情報共有しておきます。
Terminal Server 非対応アプリケーションで、Microsoft IME による日本語入力ができない。
リンカー オプション の /TSAWARE (Create Terminal Server Aware Application) を有効にしてコンパイルしないと、Windows Server 2019 の リモートデスクトップでIMEが有効にならないようです。
原因
Windows Server 2019 の Microsoft IME は、アプリケーションの起動時に、%WINDIR% 配下のシステム辞書ファイルを参照して初期処理を行います。
ところが、RemoteDesktop サービスが有効な Windows Server 2019 において、Terminal Server 非対応のアプリケーションを実行した場合は、%WINDIR% ではなく、ユーザー プロファイル配下へシステム辞書ファイルを参照しようとします。
その結果、Microsoft IME は初期化処理に失敗し、そのアプリケーション上で日本語入力ができない不具合が発生します。
対象
•Visual Basic 6.0アプリケーション
•Visual Studioを使ってビルド、
またはMicrosoft (R) Incremental Linkerを使ってリンクされたアプリケーションで、
且つリンカー オプション /TSAWARE を指定せずにリンク されたアプリケーション
それと、
•Delphiアプリケーション
Delphiでの対策ですが、
「.dpr」の uses で Windows ユニットを定義し、
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE} と追記してください。
Delphi サンプル
program Project1;
uses
Vcl.Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1},
Vcl.Controls in 'Vcl.Controls.pas';
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
よもや、ターミナルサービスでの利用を定義しておかないと駄目だとは思ってもいませんでしたが、
何とかなりそうです。
あとは、Microsoft さんが Windows Server 2019の不具合を修正してくだされば
本当に楽に済むのですが。
【このカテゴリーの最新記事】
- no image
- no image
- no image
- no image
- no image