QFixApp と CompatAdmin を使ったアプリケーション互換性問題の解決
Todd Phillips
Microsoft Corporation
発行日: 2001 年 10 月
概要
アプリケーションをテストした結果、アプリケーションと Microsoft Windows XP の間で、互換性問題が発生する可能性が明らかになった場合、アプリケーションを設計通り動作させる解決策を見つける必要があります。QFixApp を使うと、Windows XP によってアプリケーションが全面的にサポートされる特定の互換性フィックスを見つけることができます。このような互換性フィックスを互換性レイヤへグループ化し、CompatAdmin ツールを使って配布することができます。
謝辞
Mark Carroll、リード プログラム マネージャ、Microsoft Corporation
Ryan Marshall、プログラム マネージャ、Microsoft Corporation
Michael Kessler、テクニカル エディタ、Microsoft Corporation
トピック
はじめに
QFixApp を使った互換性エラー修正の識別
CompatAdmin を使ったカスタム互換性レイヤの作成
まとめ
関連リンク
はじめに
Microsoft Windows XP の最も素晴らしい特徴のつとして、アプリケーション互換性テクノロジが追加されたことがあげられます。このテクノロジは Windows XP シェルを通して、エンド ユーザーが利用することもできます。アプリケーションの互換性に関してユーザー各個人の判断に任せると、アプリケーション互換性フィックスを広範にわたる対象に展開することは困難であり、不可能です。もっと簡単な方法として、互換性フィックスのグループをパッケージ化し、そのパッケージを配布して Windows XP コンピュータに自動インストールするという方法があります。
QFixApp
QFixApp は、Windows XP による特定アプリケーションのサポートを向上させる場合に必要な、互換性フィックスの識別に使用されるツールです。互換性フィックスは個別に適用することも、互換性レイヤと呼ばれる事前定義されたグループに適用することもできます。QFixApp を使うと、アプリケーションをサポートするために必要な組み合わせを決定するまで、互換性フィックスを 1 つずつ試すことができます。
互換性管理
互換性フィックスのグループが識別されたら、CompatAdmin (互換性管理) ツールを使って、他の Windows XP コンピュータへ配布する互換性フィックスをパッケージ化できます。
QFixApp を使ってアプリケーションに対してどの互換性フィックスを適用するかを決定し、CompatAdmin を使ってそのフィックスのパッケージ化と配布を行うことを、Microsoft の Windows アプリケーション互換性チームは推奨します。
QFixApp を使った互換性エラー修正の識別
このセクションでは、QFixApp の使い方と、Windows XP を使用したアプリケーション サポート プランへの QFixApp の適用方法について解説します。
QFixApp は、各 Windows XP コンピュータにインストールされたアプリケーション互換性データベースへのアクセスを可能にする、サイズの小さな簡易ツールです。このデータベースには、Windows XP によるさまざまなアプリケーションのサポートを向上させる、数多くの互換性フィックスが登録されています。ほとんどのアプリケーションではこの追加サポートは不要ですが、プログラムの中には Windows XP 上で正常に動作しないという互換性問題を抱えているものもあります。この問題の一例には、Microsoft Windows 95 専用に作成されたプログラムがあり、このようなプログラムは他のバージョンの Windows 上ではまったく動作しません。
バージョン問題が原因でアプリケーションが実行できない場合は、簡単に解決できます。この場合、QFixApp を使って、Win95VersionLie というタイトルの互換性フィックスを指定します。このフィックスを使うと、Windows 95 によって返される情報と互換性のある Windows バージョン情報が返ります。
QFixApp のシステム要件
QFixApp を実行するためのシステム要件は、Windows XP 用のシステム要件と同じです。
Pentium 233Mhz (またその同等品) 以上
64MB RAM (RAM 128MB を推奨)
650MB の空きディスク容量 (ネットワーク インストールの場合、より多くの空き容量が必要)
VGA モニタ
マウス、またはサポートされている他のポインティング デバイス
CD-ROM または DVD ドライブ
サポート ハードウェアの詳細については、ハードウェア互換性リスト (HCL) をご覧ください。
QFixApp のインストール
Application Compatibility Toolkit バージョン 2.0 以降
Windows XP システムに Application Compatibility Toolkit をインストールするには、
Windows XP CD-ROM を、ローカルの CD-ROM ドライブへ挿入します。
[ マイ コンピュータ ] または Windows Explorer を使って、Windows XP の CD-ROM を挿入した CD-ROM ドライブを参照し、/Support/Tools フォルダを開きます。
ACT.EXE をダブルクリックして、セットアップ プログラムを起動します。既定の設定のまま使用します。
Application Compatibility Toolkit のインストールが終了したら、[スタート] メニューから起動できます。QFixApp は、[スタート] メニューの [Application Compatibility Toolkit] グループにあります。
QFixApp の使用
QFixApp は、Windows XP 上の互換性問題の解決方法を探る場合に最初に使用するツールです。このツールを使うと、Windows XP 上でアプリケーションを正常に動作させるために必要なサポートを決定する間に、互換性フィックスが 1 つ適用できます。
QFixApp のメイン ウィンドウには、タブが 2 つあります。最初のタブは [Layers] タブで、互換性レイヤを適用するために使用します。2 番目のタブは [Fixes] タブで、アプリケーションに互換性フィックスを個別に適用できます。QFixApp の [Layers] タブを下図 1 に示します。
図 1: [Layers] タブを表示している QFixApp のメイン ウィンドウ
QFixApp を使った互換性レイヤの適用
特定バージョンの Windows 用に作成されたプログラムは数多くあり、ほとんどの場合、そうしたプログラムを Windows XP 上で正常に実行しようとすると、対象の Windows と同じバージョンの互換性フィックスが必要です。必要なフィックスを一度に簡単に適用するために、互換性フィックスは互換性レイヤと呼ばれるグループに収集されています。
互換性レイヤは、QFixApp を使ってアプリケーションのテストを開始する場合に最善の方法です。たとえば、Windows 95 が必要なアプリケーションに対して互換性フィックスの正しい組み合わせを見つけようとする場合、QFixApp の Windows 95 互換性レイヤを適用することから始めることを推奨します。この互換性レイヤには、Windows 95 と Windows XP 間のプログラム上の違いに対するさまざまな互換性フィックスが収録されています。
ヒープ管理問題
よく遭遇する問題の 1 つにヒープ管理があります。これまで、Windows 9x でヒープ管理問題を探知することは困難でした。実際、アプリケーションを初めて実行した時は、ほとんどのヒープ問題は現れず、アプリケーションの実行が継続されている間に蓄積されていきます。これと同じヒープ問題が Windows XP では簡単に検出できます。この問題を解決するため、Windows 95 互換性レイヤには、ヒープ管理に関連した互換性フィックスが収録されています。
アプリケーションに互換性レイヤを適用するには
[ スタート ]、[すべてのプログラム]、[Application Compatibility Toolkit]、[QFixApp] の順にクリックします。
[Browse] ボタンをクリックし、テストするアプリケーションの実行形式ファイルの位置を特定します。このファイルは、アプリケーションのメイン プログラム ファイルでなければなりません。
起動時にコマンド ライン オプションが必要な実行形式ファイルの場合、[Commandline] ボックスにオプションを入力します。
アプリケーションへ適用する互換性レイヤをクリックします。
[Run] ボタンをクリックして、選択した互換性レイヤを使って、アプリケーションを起動します。
QFixApp ログ ファイルの使用
場合によっては、互換モード適用後、アプリケーションが実行できないことがあります。この場合、アプリケーションを起動しようとした結果を QFixApp ログ ファイルでチェックしてください。このログには、どの互換性フィックスがアプリケーションによって実際に必要とされているのかが個別に示されます。このログによって、使用されていない互換性フィックスを削除できます。余分なフィックスを削除すれば、問題が解決され、アプリケーションは正常に動作するようになります。アプリケーションが必要としない互換性フィックスを完全に削除するには、この手順を数回繰り返すことをお奨めします。
QFixApp を使った互換性フィックスの個別テスト
アプリケーションの中には、Windows XP との互換性問題を解決するために、互換性フィックスを 1 つか 2 つしか必要としないものがあります。この場合、互換性レイヤを使うよりも、必要とされる互換性フィックスだけを適用した方が効率的です。
たとえば、Windows 95 用に作成されたアプリケーションで、ディスクの空き容量を確認するために旧式の方法が使われている場合、バッファ オーバー ランを引き起こすことがあります。それ以外は完全に Windows XP と互換性があれば、EmulateGetDiskFreeSpace 互換性フィックスを選択して適用するだけで、この問題を解決できます。
アプリケーションに互換性フィックスを個別に適用するには、
[ スタート ]、[すべてのプログラム]、[Application Compatibility Toolkit]、[QFixApp] とクリックして、QFixApp を起動します。
[Browse] ボタンをクリックし、テストするアプリケーションの実行形式ファイルの位置を特定します。このファイルは、アプリケーションのメイン プログラム ファイルでなければなりません。
起動時にコマンド ライン オプションが必要な実行形式ファイルの場合、[Commandline] ボックスにオプションを入力します。
[Fixes] タブをクリックすると、使用可能な互換性フィックスの一覧が表示されます。QFixApp によって、[Layers] タブで選択されたレイヤに対して必要な互換性フィックスが自動的にチェックされます。表示されたフィックスが望みのものでなかった場合、[Clear] ボタンをクリックして、互換性フィックスをすべて選択解除します。
適用する互換性フィックスの横にあるボックスをオンにします。何のための互換性フィックスかわからない場合、そのフィックスをクリックすると、[Fix Description] ボックスに解説が表示されます。
適用する互換性フィックスをクリックした後 [Run] ボタンをオンにすると、選択した項目を使ってアプリケーションが起動されます。
QFixApp の制限事項と推奨事項
このようにして適用された互換性フィックスは、QFixApp が実行されている間のみ有効です。前述した手順を使って互換性レイヤや互換性フィックスを適用した後 QFixApp を終了すると、変更は失われます。
より継続性のあるソリューションを適用する場合は、互換性レイヤや互換性フィックスをシステム データベース ファイル (.sdb) に保存して、アプリケーション起動時にどのフィックスを適用するか、Windows XP によって認識されるようにする必要があります。 QFixApp を使うと、アプリケーションに対して .sdb ファイルを作成することができますが、1 つの .sdb ファイルしか作成できず、ファイル名を変更できないという制限があります。これは、QFixApp を使用している 1 台の Windows XP コンピュータ上で実行されている 1 つのアプリケーションに対してしか互換性フィックスを提供できないということです。
推奨される QFixApp の使用方法は、互換性フィックスのテストを実行して、アプリケーションをサポートするためにはどのフィックスを適用したらいいか正確に把握することです。
注意 QFixApp は、1 度に複数のアプリケーションに、互換性フィックスを恒久的に適用することを意図したものではありません。複数のアプリケーションへ互換性フィックスを適用するためには、CompatAdmin (互換性管理) を使用することを Microsoft は推奨します。
CompatAdmin を使ったカスタム互換性レイヤの作成
このセクションでは、1 台または複数台の Windows XP コンピュータ上の複数のアプリケーションをサポートするため、どのように CompatAdmin を使って、カスタム アプリケーション互換性データベース ファイルを作成し、準備するかを説明します。
CompatAdmin (互換性管理) プログラムには、QFixApp と同じ機能を数多く備え、さらに機能が追加されています。CompatAdmin は互換性レイヤや互換性フィックスを個別に割り当てられるだけでなく、複数のアプリケーションに対する互換性フィックスやレイヤを 1 つの .sdb データベース ファイルとしてパッケージ化し、他の Windows XP コンピュータに配布することができます。少数のスタッフが膨大な数のユーザーのソフトウェアをサポートしなければならない大規模ネットワーク環境では、この機能は特に便利です。
CompatAdmin のインストール
CompatAdmin ツールは Windows XP に同梱されており、CD-ROM の \Support\Tools フォルダにあります。CompatAdmin は、Application Compatibility Toolkit バージョン 2.0 以降の一部として配布されています。
Windows XP システムに Application Compatibility Toolkit をインストールする方法
ローカルの CD-ROM ドライブに Windows XP の CD-ROM を挿入します。
[ マイ コンピュータ ] または Windows Explorer ブラウザを使って、Windows XP の CD-ROM を挿入した CD-ROM ドライブを表示し、\Support\Tools フォルダを開きます。
ACT.EXE をダブルクリックして、セットアップ プログラムを起動します。既定の設定を使用してください。
Application Compatibility Toolkit のインストールが終了したら、[スタート] メニューから起動できます。CompatAdmin は [スタート] メニューの [Application Compatibility Toolkit] グループにあります。
CompatAdmin の使用
Windows XP には、いくつかのアプリケーションに共通して存在する、互換性問題に関する情報が登録されています。Microsoft が提供するアプリケーション互換性フィックスは、システムの安定性を損なうことなく、Windows XP によってアプリケーションの通常機能が適切にサポートされることを目的としています。
すべての互換性フィックスが含まれている 4 種類の DLL
%WINDIR%\AppPatch フォルダ内にある 4 つの DLL には互換性フィックスがすべて含まれています。APPHELP.SDB と SYSMAIN.SDB ファイルによって、Windows XP の一部として提供されているアプリケーション ヘルプ メッセージとアプリケーション フィックスが実装されます。
アプリケーション ヘル プ メッセージには、Windows XP と全く互換性がないプログラムが Windows XP で起動されたときに表示される情報が含まれています。アプリケーション ヘルプ メッセージが表示される可能性があるアプリケーションの例としては、以下のものがあります。
アンチウィルス プログラム
オペレーティング システムへカーネル レベルのアクセスが必要なプログラム
特定のファイル システム ドライバをインストールするプログラム
アプリケーションが適切に機能しない原因
Windows XP より以前のバージョンの Windows で動作していたアプリケーションが Windows XP Professional ではうまく動作しないことがあります。このような現象が発生する理由を、以下に列挙します。
Windows により、更に新しいオペレーティング システムのバージョン番号が報告された (この場合、アプリケーションは動作しません。アプリケーション内のこの障壁をうまく回避できた場合、アプリケーションは通常新しいバージョンの Windows 上でも問題なく動作します) 。
アプリケーションが古いバージョンの Win32 API 機能を要求し、フリー ディスク スペースなどの大容量のリソースとともに、予期せぬ値をコンピュータに送った。
アプリケーションが古いフォーマットの Windows データを予想していた。
アプリケーションはユーザー情報 (個人フォルダや一時フォルダなど) が特定の位置にあることや特定のフォーマットに設定されていることを予想していた。
CompatAdmin を使ってこのような障害に対処する場合、サポートを必要とするアプリケーションが Windows XP によって一意に識別できるファイル マッチング情報と、アプリケーションが必要とする互換性フィックス情報を登録したカスタム データベースを作成すると良いでしょう。
カスタム互換性データベースの作成
CompatAdmin を使うと、プロテクトがかけられたシステム データベースに保存されている、アプリケーション互換性フィックスに目を通し、何百ものアプリケーションに対する既知のフィックスを適用することができます。主要な CompatAdmin インタフェースにより、アプリケーションの表示閲覧用コントロールに、Windows XP Professional システム データベース内の互換性フィックスの情報が提供されます。この情報は、[CompatAdmin] ウィンドウの左上のペインに常に表示されます (下図 2 参照)。
図 2: CompatAdmin によるシステム アプリケーション互換性データベースの表示
システム互換性データベースは、Windows XP Professional オペレーティング システムには不可欠の要素で、何百という Windows アプリケーションに対して、初期設定を変更せずにそのまま使える互換性を 提供します。このデータベースと対応するアプリケーション エントリはオペレーティング システムによってプロテクトがかけられています。
ターゲットとするアプリケーション用のフィックスの識別とテストが終了したら、CompatAdmin を使って、カスタム フィックス データベースを作成できます。互換性レイヤによってサポートされているアプリケーションと、特定の互換性フィックスによってサポートされているアプリケーションとを登録しているカスタム フィックス ベータベースを作成できます。
CompatAdmin を使って、新しいカスタム データベースを作成するには
[ スタート ]、[すべてのプログラム]、[Application Compatibility Toolkit]、[Compatibility Administration Tool] とクリックし、CompatAdminを起動します。
カスタム フィックス データベースが開いている場合は、[File] を選択し、[New] をクリックします。
[Database] をクリックし、[Change Database Name] をクリックします。データベース名の変更が終了したら、カスタム データベース ペインの最上部に新しいデータベース名が表示されます。[Change Database Name] メニュー項目が無効の場合、このウィンドウのカスタム データベース ペインをクリックします。
[File] をクリックし、[Save] をクリックしてから、自分の sdb ファイルに名前を付けます。自分のカスタム データベースにフィックスを追加する準備ができました。
自分のアプリケーション互換性フィックスを登録するための、空のカスタム データベースの作成が終了したら、互換性レイヤを追加する準備は終わりです。
互換性レイヤを追加するには
[Database] メニューから [Create Application Fix] をクリックします。[Create an Application Fix] ダイアログ ボックスが表示されます。
[Apply Compatibility Mode] をクリックし、[次へ] ボタンをクリックします。
互換性モードを指定する対象のアプリケーション名を入力し、[次へ] をクリックします。
互換性モードを適用するファイル名を入力します。ファイル名を入力することも、[Browse] ボタンをクリックしてファイルを探すこともできます。
[Compatibility Mode to apply] のドロップ ダウン ボックスから適用する互換性モードを選択し、[次へ] をクリックします。
[Add File] ボタンをクリックし、ターゲット コンピュータ上にある指定ファイルの識別に役立つファイルを選択します (同じ関連位置にインストールされるアプリケーションに関連付けられているファイルを選択します。たとえば、.exe ファイルと同じディレクトリに保存される .hlp ファイルを選択します。不必要に多くのマッチング ファイルを選択せずに、ファイルを一意に特定してください)。
必要なマッチング ファイルをすべて選択したら、[次へ] をクリックします。
フィックスを適用したアプリケーションをテストする場合は、[Test Run] をクリックします。テストしない場合は、[完了] をクリックします。
同じ手順を使って、個別の互換性フィックスをカスタム データベースへ追加できます。ただし、[Create an Application Fix] ダイアログは例外で、下図 3 に示すように、オプションを [Apply Specific Compatibility Fix] に設定した方が良いでしょう。互換性フィックスやレイヤをデータベースへすべて追加し終わったら、データベース ファイルを保存し、アプリケーションをテストします。
図 3: 特定の互換性フィックスをカスタム データベースへ追加する
ファイルのマッチング
Windows XP のアプリケーション互換性テクノロジにより、同じ名前や似たような名前が付いたファイルを識別できるようになります。Windows XP ではファイル マッチング情報を使って、この処理を行います。SETUP.EXE に対して互換性フィックスを作成しても、SETUP.EXE という名前のファイルが実行されるたびに、この互換性フィックスを使いたくない場合、アプリケーションに属する他のファイル グループを指定することをお奨めします。これらのファイルに固有のプロパティに関するデータを収集することによって、Windows XP では、コンピュータ上のどこに存在していようと、常に互換性フィックスを必要とするアプリケーションを一意に識別できます。
カスタム データベースのシステムへの適用
アプリケーション互換性フィックスのカスタム データベースを作成したら、そのデータベースをアプリケーションが実行されるコンピュータ システムに適用する必要があります。互換性フィックスを複数の Windows XP コンピュータへ展開する一般的な手順としては、以下のものがあります。
対象アプリケーションのフィックスの識別とテスト。アプリケーションが必要とするフィックスは、QFixApp を使って決定することをお奨めします。
対象ファイルを使ったカスタム データベース ファイルの作成。
.sdb ファイルの送信先 Windows XP コンピュータへの配信。
SDBINST.EXE コマンドを使った、カスタム データベースの登録。この作業により、インストールと、送信先コンピュータのレジストリへのフィックス情報の追加が自動的に行われます。
カスタム データベース ファイルの他の Windows XP コンピュータへの配布
カスタム データベース ファイルの他の Windows XP コンピュータへの配信は、さまざまな方法で実行することができます。
データベース ファイルをカスタム インストール プログラムに組み込んで、そのプログラムをグループ ポリシーを使って、Active Directory ネットワークで配信することができますが、そのためには、追加の開発作業が必要です。
このファイルは各リモート Windows XP コンピュータへ手動でコピーできます。また、ログオン スクリプトを使っても同じ処理が実行できます。
もう 1 つの方法は、custom.sdb ファイルを、すべての Windows XP ユーザーがアクセスできる共有ネットワークに配置することです。
このファイルがリモート コンピュータへ配信されたとしても、データベース ファイルに登録された情報は、各コンピュータに登録されなければなりません。コマンド プロンプトから SDBINST.EXE コマンドを入力し、その後にフル パスと custom.sdb ファイル名を入力してから実行すると、この処理は行われます。このコマンドの記述例を次に示します。
Sdbinst c:\Windows\AppPatch\myapp.sdb
データベース ファイルのコンピュータへの登録が終了したら、互換性情報はアプリケーション起動時に常に使用されます。
まとめ
Windows XP は、以前の Windows オペレーティング システムと比べて、アプリケーションの互換性が向上しています。これまでに解っているさまざまなアプリケーション互換性の問題に対するサポートの提供だけでなく、さらにシステム管理者は Application Compatibility Toolkit の 2 つのツールを使って、すべてのアプリケーションをサポートすることができます。
QFixApp ツールにより、システム データベースに登録されている互換性レイヤおよびフィックスを閲覧し、アプリケーションへの影響を個別またはグループ単位でテストする、簡略なインタフェースが実装されます。QFixApp を使うと、アプリケーションへの変更が適用され、適用された互換性フィックスとアプリケーションがどのように影響し合ったかに関する詳細なログが提供されます。これにより、Windows XP 上のアプリケーションをサポートするために必要な互換性フィックスの数を正確に突き止めることができます。
互換性管理ツール CompatAdmin は、Application Compatibility Toolkit と同様の機能を持つツールです。CompatAdmin を使うと、システム管理者は QFixApp を使って決定された互換性情報を取得し、その情報をカスタムの互換性データベースへパッケージ化することができます。このデータベース ファイルは 1 回適用すれば、複数のアプリケーションをサポートすることができ、互換性フィックスを必要とする他の Windows XP コンピュータへ簡単に配布できます。遠隔コンピュータ上では、SDBINST.EXE コマンドを使って互換性データベースを登録すると、アプリケーションが起動されるたびに Windows XP でその情報が利用できます。
関連リンク
How to Troubleshoot Program Compatibility Issues in Windows XP (英語)
How to Use the Compatibility Administration Tool in Windows XP (英語)
ダウンロード
QFixApp と CompatAdmin を使ったアプリケーション互換性問題の解決
252 KB
Microsoft Word ファイル