ブログランキング・にほんブログ村へ
PVアクセスランキング にほんブログ村
子豚のココのお勧め商品 - にほんブログ村

■おすすめの商品
防災グッズ
Evopow ポータブル電源 ソーラーパネル セット リン酸鉄リチウム 1024Wh 出力1000W (瞬間最大2000W)とソーラーパネル 100W ポータブルバッテリー 22% 純正弦波 車中泊 防災 キャンプ 家庭用 アウトドア用
最新記事
写真ギャラリー
検索
カテゴリアーカイブ
タグクラウド
最新コメント
リンク集
RSS取得

広告

posted by fanblog

2019年08月28日

【祝!!解決編】Windows Server 2019 不具合? 特定アプリで日本語入力ができなくなる。

先日投稿した
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の不具合を修正してくだされば
本当に楽に済むのですが。


posted by 子豚のココ at 13:15 | Windows関連
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: