次の方法で共有


Windows 8のプログラム互換性アシスタントのシナリオ

プラットフォーム

クライアント - Windows XP |Windows Vista |Windows 7 |Windows 8

Description

プログラム互換性アシスタント (PCA) は、エンド ユーザーが以前のバージョンの Windows 用に設計されたデスクトップ アプリを実行するのに役立つ、Windows 8の機能です。 Windows 8には優れた組み込みのアプリ互換性があり、Windows 7 以前のバージョン用に設計されたアプリは、Windows 8で自動的に機能します。 ただし、介入なしで実行する際に問題が発生する可能性があるアプリは少数あります。

ユーザーがアプリを実行すると、PCA はアプリを追跡し、Windows 8の特定の既知の互換性の問題の症状を特定します。 問題の症状が検出されると、ユーザーは、Windows 8でアプリの実行を改善するのに役立つ推奨修正プログラムを適用する機会が提供されます。

シナリオ

PCA は、Windows 8の一連の既知の互換性の問題についてアプリを追跡します。 PCA は、問題を追跡し、修正プログラムを識別し、推奨される修正プログラムを適用する手順を示すダイアログをユーザーに提供します。 ユーザーは、推奨される修正プログラムを適用するか、何も行わないと推奨事項を取り消すかを選択できます。 ユーザーが取り消した場合、PCA はそのアプリを追跡しなくなります。

PCA は一般に、プログラム (またはそのセットアップ) が作成された日時に応じて、Windows XP SP3、Windows Vista SP2、または Windows 7 の 3 つの Windows 互換性モードのいずれかを適用します。 PCA は、プログラムのLINK_DATE属性と SUBSYSTEM VERSION 属性と実行可能ファイル マニフェストの TRUSTINFO および COMPATIBILITY セクションを使用して、関連するモードを決定し、Windows XP SP3 (管理特権を含む)、Windows Vista SP2、または Windows 7 をそれぞれ適用します。 ドキュメントの最後にある用語集には、PCA が適用する各互換性モードとその説明が一覧表示されます。

以下に示すすべてのシナリオで、PCA は、修正プログラムが適用された後、アプリを 2 回目に追跡します。 互換性修正が適用された後でも、アプリが同じ方法で失敗し続ける場合、PCA は修正プログラムを元に戻します。 PCA は、失敗した特定のアプリの追跡を完全に停止します。

PCA は多くの潜在的な問題を追跡しますが、すべての問題が実際にアプリの障害を引き起こすわけではありません。 PCA では、Windows の互換性上の理由によりアプリの障害が発生する可能性が高い状況でのみ修正を推奨しています。 以下のセクションでは、Windows 8で開発された各 PCA シナリオについて説明します。 各セクションでは、問題のシナリオと、アプリがWindows 8で正常に動作し続けるために PCA が提供する推奨事項について説明します。

Windows 8での互換性の変更の詳細については、「Windows 8互換性クックブック」の他のトピックを参照してください。

PCA が追跡し、修正を推奨するシナリオは次のとおりです。

  • アプリのインストールまたはアンインストールに失敗する
  • Windows バージョンのチェック メッセージでアプリを実行できない
  • 管理特権が原因でアプリの起動に失敗する
  • 特定のメモリの問題が原因でアプリがクラッシュする
  • システム ファイルの不一致が原因でアプリが失敗する
  • 64 ビット Windows でハンドルされないエラーが原因でアプリが失敗する
  • 保護された Windows 以外のファイルの削除中にアプリが失敗する
  • Windows ファイルの変更中にアプリが失敗する
  • 8 ビットまたは 16 ビットのカラー モードを使用したため、アプリが失敗する
  • グラフィックスと表示の問題が原因でアプリが失敗する
  • アプリで DPI 認識を宣言できない
  • Windows 機能がないためにアプリが失敗する
  • 64 ビット Windows 8で署名されていないドライバーが原因でアプリが失敗する
  • 互換性設定を使用してインストールされたアプリの追跡
  • アプリがインストーラーまたはアップデーターを起動できない
  • 管理特権で実行する必要があるアプリ インストーラー
  • 管理特権で実行する必要があるレガシ コントロール パネル アプレット

これらの各シナリオを以下に展開します。

アプリのインストールまたはアンインストールに失敗する

最も一般的な種類のアプリエラーの 1 つは、アプリのインストール中に発生します。 古いセットアップ プログラムは、次の 2 つの方法で最も一般的に失敗します。

  • セットアップ プログラムは、Windows 8のユーザー アカウント制御 (UAC) 機能を認識していないため、Windows 8の保護された領域にシステムを変更するために必要な完全な特権で実行されない可能性があります。
  • セットアップ プログラムは、Windows のバージョンを確認し、バージョンが予想よりも高い場合は、それ自体の実行をブロックします

これらのエラー状態は、セットアップで最も一般的な互換性エラーの 2 種類です。 PCA は、UAC などの他のさまざまな Windows コンポーネントの助けを借りて、起動時にセットアップ プログラムを検出し、インストールの最後まで追跡します。 セットアップ プログラムがファイルの追加に失敗した場合、または Windows コントロール パネルの [プログラムの削除の追加] 部分に有効なエントリを追加できない場合、PCA はセットアップが失敗したと見なします。

この場合、PCA はアプリに適した互換モードを推奨します。 互換モードを使用すると、セットアップ プログラムは、それが設計された Windows モードで実行でき、また、アプリが管理特権で実行されるようになります。 PCA は、適切な Windows XP、Windows Vista、または Windows 7 互換モードと共に RUNASADMIN 互換モードを適用します。 ユーザーは、失敗したインストールの最後に、PCA の推奨事項を示すダイアログが表示されます。

アプリのインストールまたはアンインストールダイアログに失敗する

その後、ユーザーは次の操作を行うことができます。

  • 互換性設定 (推奨オプション) を使用してプログラムを実行し、その後 PCA が推奨設定 (互換モード) を適用し、セットアップ プログラムを再起動し、セットアップが正常に完了するまで追跡します
  • プログラムが正しくインストールされていることを示します。その場合、PCA は設定を追加せず、セットアップの追跡を停止します
  • [閉じる] をクリックします。その場合、PCA は設定を追加せず、このセットアップの追跡を停止します

同じメカニズムを使用して、ユーザーが Windows の [プログラムの削除] セクションまたはアプリのアンインストーラー ショートカットからアプリをアンインストールしようとしたときに、アプリのアンインストールに役立ちます。

Windows バージョンのチェック メッセージでアプリを実行できない

アプリ ランタイムでの一般的な互換性エラーの 1 つは、Windows バージョンのチェックが原因です。 多くのアプリは、Windows バージョンチェック起動時に、バージョンが認識されない場合は、アプリが問題なく実行できたとしても、アプリ自体をブロックします。

一般に、このようなチェックは、PCA が追跡する 2 つの条件に関連付けられます。

アプリには、ユーザーに警告するメッセージ ボックスが表示されます。 次に例を示します。

Windows バージョンのメッセージ ダイアログでアプリチェック実行できない

  • アプリが直ちに終了するか、クラッシュする

PCA がアプリに対してこれらの両方の条件を識別すると、ユーザーに推奨事項が提供されます。 PCA を使用すると、ユーザーは互換性設定を使用してアプリを再実行できます。 PCA は、アプリに基づいて、適切な Windows XP、Windows Vista、または Windows 7 互換モードを適用します。 どのシナリオでも同様に、ユーザーは PCA にアプリが正しく実行されたことを通知するか、[閉じる] ボタンをクリックして推奨設定をオプトアウトできます。 ダイアログの例を次に示します。

Windows バージョンのメッセージ オプション ダイアログでアプリチェック実行できない

管理者特権のためにアプリの起動または実行に失敗する

一部のアプリでは、その機能を実行して実行するために管理特権が必要です。 ただし、Windows 8では、Windows 7 や Windows Vista と同様に、UAC により、アプリは既定で低い特権レベルで実行されます。 Windows Vista 以降用に設計された新しいアプリでは、通常、EXE マニフェストの TRUSTINFO セクションを使用して実行する必要がある特権レベルが宣言されます。 ただし、古いアプリは通常、次の 2 つの方法で失敗します。

  • 次の例のように、管理者特権が必要であることを示すメッセージがアプリによってユーザーに表示されます。

管理者特権ダイアログが原因でアプリの起動または実行に失敗する

  • アプリが直ちに終了するか、クラッシュする

PCA がアプリに対してこれらの両方の条件を識別すると、ユーザーに推奨事項が提供されます。 PCA を使用すると、ユーザーは管理特権でアプリを再実行できます (PCA は RUNASHIGHEST 互換モードを適用します)。 アプリが再実行されると、ユーザーに UAC プロンプトが表示されます。 どのシナリオでも同様に、ユーザーは推奨設定を使用して再実行するか、[閉じる] をクリックして推奨設定をオプトアウトすることができます。 ダイアログの例を次に示します。

管理者特権オプション ダイアログが原因でアプリの起動または実行に失敗する

特定のメモリの問題が原因でアプリがクラッシュする

一部のアプリは、既知のメモリの問題が原因でクラッシュします。 アプリはメモリから DLL を参照解除し、関数を呼び出して同じ DLL 内のコードを実行します。 これにより、アプリが直ちにクラッシュします。 この問題はWindows 8互換性の変更によるものではありませんが、さまざまなアプリで見られる比較的一般的な問題です。 PCA は、この問題を追跡して、ユーザーがアプリをより確実に実行できるようにする機会を提供します。

これらのアプリの場合、PCA は PINDLL 互換モードを自動的にサイレントモードで適用します。 PCA によって呼び出された互換モードでは、アプリが DLL をメモリから解放できなくなります。 そのため、アプリによる DLL への関数呼び出しが機能し、アプリがクラッシュするのを防ぎ、正常に機能し続けることを可能にします。

システム ファイルの不一致が原因でアプリが失敗する

Windows XP 以前用に設計された一部のアプリには、インストーラーと共に Windows システム DLL のコピーが含まれています。 このようなアプリがインストールされると、アプリには、独自のフォルダー内の DLL の古いコピーと、Windows システム フォルダーにある最新バージョンの DLL の両方があります。

Windows Vista 以降では、この DLL は現在の Windows システム DLL の残りの部分では適切に動作しないため、ローカル DLL の読み込みを試みると、この条件によってアプリが失敗する可能性があります。 アプリは通常、この DLL の新しいバージョンを認識していないため、正常に動作しません。

PCA は、DLL が正しく読み込めなかったことを検出すると、互換性設定を適用して、アプリを正常に実行できるように Windows システム フォルダーから最新バージョンの DLL を読み込むことができます。

アプリの最初の失敗した実行の最後に、次のように適用された設定を通知する PCA ダイアログが表示されます。

システム ファイルダイアログの不一致が原因でアプリが失敗する

64 ビット Windows のハンドルされないエラーが原因でアプリが失敗する

Windows 8の 64 ビット バージョンでは、メッセージ ループ コールバック メカニズムに対して新しい例外が有効になりました。 この例外は Windows 7 で最初に導入されましたが、このエラーを処理することは必須ではありません。 Windows 8では、メッセージ ループを使用するアプリでこの新しい例外を処理する必要があります。 そうでない場合は、クラッシュします。 古いバージョンの Windows 用に設計されたアプリは、この例外を認識していない可能性があるため、このエラー (例外) を適切に処理しない可能性があります。

PCA は、この未処理のエラーのために失敗するアプリを検出し、アプリの DISABLEUSERCALLBACKEXCEPTION 互換モードを自動的に適用します。 実行の最後に設定が適用されると、ユーザーに次のように通知されます。 アプリは次の実行時にモードを取得し、このエラーを回避できます。

64 ビット Windows ダイアログでハンドルされないエラーが原因でアプリが失敗する

保護された Windows 以外のファイルを削除しようとしているときにアプリが失敗する

Windows XP 以前用に設計された一部のアプリでは、通常、完全な管理特権で実行されると想定されています。 通常のアプリ動作のコースとして、保護された Windows 以外のファイル (プログラム ファイルまたは Windows フォルダー内) を削除しようとする場合があります。 削除操作が失敗すると、このようなアプリの多くがクラッシュする可能性があります。

PCA は、保護されたファイルの削除とクラッシュに失敗するこれらのアプリを検出し、ユーザーに推奨事項を提供します。 PCA を使用すると、ユーザーは互換性設定を使用してアプリを再実行できます。 いずれのシナリオでも同様に、ユーザーはアプリが正しく実行されたことを PCA に通知したり、[閉じる] ボタンをクリックして推奨設定をオプトアウトしたりできます。 この場合、PCA は VIRTUALIZEDELETE 互換モードを適用します。 ダイアログの例を次に示します。

保護された Windows 以外のファイルの削除ダイアログの試行中にアプリが失敗する

Windows ファイルまたはレジストリ キーの変更中にアプリが失敗する

Windows XP 以前用に設計された一部のアプリでは、通常、完全な管理特権で実行されると想定されています。 通常のアプリ動作のコースとして、Windows で保護されたファイル (プログラム ファイルまたは Windows フォルダー内) または Windows が所有するレジストリ キーを変更、削除、または書き込もうとすることがあります。 ファイルまたはレジストリ キーに対する書き込み、削除、または変更操作のいずれかが失敗した場合、このようなアプリの多くはクラッシュまたは失敗する可能性があります。

PCA は、保護された Windows ファイルまたはレジストリ キーへの書き込みに失敗するこれらのアプリを検出し、アプリが終了したときにユーザーに推奨事項を提供します。 PCA を使用すると、ユーザーは互換性設定を使用してアプリを再実行できます。 いずれのシナリオでも同様に、ユーザーはアプリが正しく実行されたことを PCA に通知するか、[閉じる] ボタンをクリックして推奨設定をオプトアウトできます。 この場合、PCA は WRPMITIGATION 互換モードを適用します。 ダイアログの例を次に示します。

Windows ファイルまたはレジストリ キーダイアログの変更中にアプリが失敗する

8 ビットまたは 16 ビットのカラー モードを使用しているため、アプリが失敗する

Windows ストア アプリのWindows 8の再考の一環として、重要な変更の 1 つは、デスクトップ ウィンドウ マネージャー (DWM) がWindows 8で 32 ビット色のみをサポートするようになった点です。 低い色モードがシミュレートされるようになりました。

Windows XP または 8 ビットまたは 16 ビットのカラー モードを使用する前に設計された古いアプリやゲームの多く。 軽減策がないため、これらのアプリはWindows 8で実行できない可能性があります。 ただし、これらのアプリが表示に 8 ビットまたは 16 ビットのカラー モードのいずれかを列挙または使用しようとすると、PCA はすぐに問題を特定し、DWM の助けを借りて、シミュレートされたカラー モードでアプリが適切に動作することを保証します。

これは、アプリが低色モードを要求し、ユーザーに対して透過的になるとすぐに発生します。 この軽減策を取得するためにユーザーがアプリを再起動する必要はありません。これは、アプリが正しく動作するように常にこの修正が必要であるためです。

グラフィックスと表示の問題が原因でアプリケーションが失敗する

デスクトップ ウィンドウ マネージャー (DWM) は常にWindows 8でオンになっているため、GDI API と DirectX API の両方を使用して画面に描画する場合と同様に、アプリで混合モードのグラフィックス API (ほとんどの場合は古いゲーム) を使用し、全画面表示モードを使用しようとすると、一部の古い Windows XP 時代のアプリが失敗する可能性があります。

  • DWM はデスクトップに直接描画することを防ぎ、ゲームまたはアプリが失敗するか、デスクトップに黒い画面を描画し、どのグラフィックスも表示されません
  • このような場合、アプリが終了すると、Windows はアプリまたはゲームに全画面表示モードに問題があることを検出し、アプリまたはゲームを全画面表示モードではなく最大化ウィンドウ モードで実行できるようにする DXMAXIMIZEDWINDOWEDMODE 互換モードを適用します。
  • 実行の最後に設定が適用されると、ユーザーは次に示すように PCA によって通知されます。アプリは次の実行時に互換モードを取得し、適切に実行できるようになります

グラフィックスと表示の問題ダイアログが原因でアプリケーションが失敗する

アプリで DPI 認識を宣言できない

多くの古いアプリのもう 1 つの一般的な表示の問題は、Windows とアプリが高 DPI モードで実行されるときに発生しますが、アプリは EXE マニフェストを通じて高 DPI の認識を宣言しません。 この設定の不一致が原因で発生する可能性がある一般的な問題の中には、UI 要素またはテキストのクリップとフォント サイズが正しくありません。 問題の詳細については、 こちらのリンクを参照してください

このような場合、Windows はアプリが高 DPI 対応であることを検出し、最初の実行の終了時に HIGHDPIAWARE 互換モードをアプリに適用します。 PCA は、次に示すように、このことをユーザーに通知します。

アプリで dpi 認識ダイアログを宣言できない

Windows 機能がないためにアプリケーションが失敗する

一部のアプリは、Windows Vista 以降に削除された Windows 機能に依存します。 これらのアプリが不足している DLL または COM コンポーネントを読み込もうとすると、動作しません。

PCA は、不足している Windows 機能を読み込もうとしたときにアプリを検出し、アプリの終了後にこれらのコンポーネントをダウンロードしてインストールするための推奨事項を提供します。 ユーザーは[オンラインヘルプを表示]をクリックして代替手段を見つけるか、機能をダウンロードしてインストールすることができます。 必要に応じて、ユーザーは [閉じる] をクリックして何も行わないよう選択できます。

Windows 機能ダイアログがないため、アプリケーションが失敗する

64 ビット Windows 8の署名されていないドライバーが原因でアプリが失敗する

64 ビット Windows では、Windows Vista 以降、デジタル署名されたドライバー (SYS ファイル) が必要です。 ただし、Windows Vista のリリース前に設計された古いアプリには、デジタル署名されていないドライバーが付属していました。 このような署名されていないドライバーがインストールされている場合、Windows では読み込まれません。 まれに、このようなドライバーがブート時ドライバーとしてマークされている場合、Windows が起動しない可能性があります。

一部の古いアプリでは、64 ビット Windows で署名されていないドライバーがインストールされます。 このドライバーを使用しようとするデバイスまたはアプリが失敗したり、システムクラッシュが発生したりする可能性があります。 このようなシナリオを防ぐために、PCA は署名されていないドライバーをインストールするときにアプリを検出し、ブート時ドライバーとしてマークされているドライバーを無効にします。

また、アプリが正常に動作するようにデジタル署名されたドライバーを取得するようにユーザーに指示します。 メッセージは、ドライバーのインストールの結果として表示され、アプリのインストールの結果として表示されます。 別のアプリが同じドライバーをインストールすると、そのアプリも同じメッセージを受け取ります。

64 ビット Windows 8 ダイアログで署名されていないドライバーが原因でアプリが失敗する

互換性設定を使用してインストールされたアプリの追跡

インストーラーが失敗した場合、PCA は、エラーの種類に応じてさまざまな互換性モードでインストーラーを支援します。 互換性設定でインストーラーが成功すると、PCA はインストーラーが追加したショートカットを追跡します。 これは、インストールされたアプリがインストーラーに適用されている互換性設定も必要になる可能性があるかどうかを追跡するために行われます。

ユーザーがこのようなアプリを起動すると、PCA はアプリが正常に動作したかどうかをユーザーに確認するように求めます。 ユーザーが "はい" と答える場合、PCA はアプリの追跡を停止します。 ユーザーが "いいえ" と答えた場合、アプリのインストーラーに適用されたのと同じ互換モードが適用され、互換性モードが適用された状態でアプリが再実行されます。

アプリがインストーラーまたはアップデーターを起動できない

アプリは、管理者として実行する必要がある子プログラムを起動することがあります。 これは通常、アプリがアップデーター ソフトウェアを起動してアプリに新しい更新プログラムをチェックしてインストールしようとしたときに発生します。 アプリがこのような子プログラムを直接実行すると、アプリ自体に管理者権限がないため、または子プログラムが UAC マニフェストで昇格用に適切にマークされていないため、子プログラムの起動に失敗する可能性があります。

PCA はこれらのエラーを追跡し、プライマリ アプリが閉じると、子プログラムの正常な実行に役立つ ELEVATECREATEPROCESS 互換モードが自動的に適用されます。 アプリが後続の実行時に子アプリを起動すると、子プログラムの UAC ダイアログが表示されます。

PCA ダイアログの例を次に示します。

アプリがインストーラーまたはアップデーター ダイアログを起動できない

管理特権で実行する必要があるアプリ インストーラー

Windows デスクトップ アプリのインストーラーでは、保護されたシステム領域にファイル、フォルダー、レジストリ エントリを書き込むため、管理者特権が必要です。 Windows (UAC) には、インストーラーがいつ実行されたかを識別する検出ロジックがあり、UAC ダイアログを使用して管理者特権を提供するようにユーザーにすぐに求めます。 ただし、場合によっては、このロジックは、アプリが実際にインストーラーであり、管理者権限を取得できない可能性があることを判断できません。 これらは通常、Windows インストーラーや Install Shield などの既知のインストール テクノロジを使用しないカスタムインストーラーです。

このような場合、PCA はインストーラーがファイルを書き込めなかったことを検出します。 インストールが失敗した場合、PCA は互換性設定を適用するための推奨事項を提供します。 ユーザーが [プログラムの実行] をクリックすると、PCA によって RUNASADMIN 互換モードが適用され、インストーラーが再実行されます。 ユーザーが閉じる場合、設定は適用されません。 PCA ダイアログの例を次に示します。

管理特権で実行する必要があるアプリ インストーラーのダイアログの例を示すスクリーンショット。

管理特権で実行する必要があるレガシ コントロール パネル アプレット コントロール パネル アプレットは、通常、システム設定を変更し、広告管理者を実行する機能が必要です。 ただし、Windows Vista より前に記述されたものには、EXE マニフェストがないか、必要な特権レベルを宣言する TRUSTINFO セクションがありません。 このようなアプレットが実行されると、PCA によってアプレットが検出され、最初の実行の最後に、管理設定を使用して実行するための推奨事項が提供されます。 ユーザーが [プログラムの実行] をクリックすると、PCA は RUNASADMIN 互換モードを適用し、インストーラーを再実行します。 ユーザーが閉じる場合、設定は適用されません。 PCA ダイアログの例を次に示します。

管理特権ダイアログで実行する必要があるアプリ インストーラー

ユーザーからのフィードバックを通じて推奨される設定を確認する

各シナリオの最後に (推奨される互換性設定でアプリを実行した後)、PCA はユーザーに簡単な質問をします。

ユーザー フィードバック ダイアログを使用して推奨される設定を確認する

アプリが互換性設定で動作または失敗した場合、ユーザーはフィードバックを提供できます。 このデータは匿名で Microsoft に送信されます。 これにより、Windows Update プロセスを通じてこのような修正プログラムをWindows 8に組み込むことができるので、Windows 8の将来のユーザーはアプリの障害が発生しなくなり、PCA はアプリの障害を追跡する必要がなくなります。

推奨事項がない問題の追跡

アプリは、互換性の理由からさまざまな方法で失敗する可能性があります。 PCA は、上記のシナリオに記載されているよりも多くの互換性の問題を追跡します。 このような場合、多くの場合、問題の症状はアプリによって異なります。 つまり、一部のアプリではこのような問題を適切に処理して復旧しますが、そうでないアプリもあります。 そのため、このような問題の場合、PCA はまだアプリを追跡していますが、修正のための直接の推奨事項は提供されません。

推奨される設定やダイアログがない PCA が追跡する問題には、次のアプリが含まれます。

  • 非常に短いランタイムを使用する – アプリは 3 秒以下で実行されます
  • 管理特権を使用せずにグローバル メモリ オブジェクトを作成する
  • 起動時にエラー (Win32 例外) がある
  • 管理特権を確認します (ただし、失敗しない可能性があります)
  • Indeo コーデックを使用する (Windows Vista から非推奨)
  • HKLM などの保護されたレジストリの場所からキーを書き込むか削除してみてください
  • 起動時にクラッシュする

互換性タブと互換性のトラブルシューティング ツールを使用して修正プログラムを適用する

前述のように、アプリはさまざまな互換性の理由で失敗する可能性があります。 設定がアプリに依存しているため、これらのすべてが明確な PCA 推奨事項を持っているわけではありません。 ただし、ユーザーは互換性のトラブルシューティング ツールまたは [互換性] タブに移動して、失敗したアプリをWindows 8で正常に動作させるために、特定の一般的な修正プログラムを適用できます。 このような場合でも、PCA は、修正プログラムが適用される前と適用後に、互換性の問題についてアプリを追跡します。 修正プログラムが適用された状態でアプリを実行すると、PCA は修正が機能したかどうかをユーザーに確認します。 ユーザーが質問に答えると、データはテレメトリを通じて匿名で Microsoft に送信されます。 このデータは多くのユーザーから収集され、分析され、対象となる修正プログラムは Windows 更新プログラムを通じてすべてのWindows 8ユーザーに広く配布されます。

互換性トラブルシューティング ツールの使用

互換性のトラブルシューティング ツールは、Windows のメカニズムであり、アプリに関する問題を診断し、推奨される修正プログラムを適用して適切に動作させます。 これは、PCA がアプリの推奨事項を提供しない場合にのみ必要です。

トラブルシューティング ツールを使用すると、ユーザーは一連の質問を確認して回答できます。応答に基づいて、一連の修正プログラムが適用され、ユーザーはアプリをテストして修正プログラムを検証できます。 検証が完了すると、修正プログラムはアプリに永続的に適用され、Windows 8での動作が向上します。

参考のため、トラブルシューティング ツール UI を次に示します。

互換性のトラブルシューティング ツール ダイアログの使用

互換性トラブルシューティング ツールは、次の 2 つの方法で起動できます。

スタート画面から:

  1. 種類: 互換性のトラブルシューティング ツール
  2. [設定] セクションで、[以前のバージョンの Windows 用に作成したプログラムを実行する] タイルをクリックします

アプリ タイルから:

  1. [スタート] 画面で、アプリ タイルを右クリックします
  2. [ファイルの場所を開く] をクリックします (デスクトップ アプリのみ)
  3. [エクスプローラー] リボンの [アプリ] タブをクリックします。
  4. [互換性のトラブルシューティング] を選択する

[互換性] タブの使用

これは、異なる互換性設定を試す専門家であるユーザーにのみ推奨されます。 このメソッドでは、アプリに適用する修正プログラムの種類に関する推奨事項は提供されません。 ここでは、アプリを動作させるために適用できる修正プログラムをユーザーが把握している必要があります。 修正プログラムがわからない場合は、互換性のトラブルシューティング ツールを使用してアプリの修正プログラムを見つけてください。

[互換性] タブにアクセスするには:

スタート画面から:

  1. アプリ タイルを右クリックする
  2. ファイルの場所を開く (デスクトップ アプリのみ)

エクスプローラー リボンから次の手順を実行します。

  1. [プロパティ] をクリックします。

  2. [互換性] タブに移動します

  3. 互換性の修正プログラムを選択する

  4. アプリを再実行する

    注意

    同じ場所にもう一度戻って、修正プログラムを変更または削除することもできます。 また、タブに表示されるボタンを使用して、マシン上のすべてのユーザーに修正プログラムを適用することもできます。

     

互換性タブを使用する

互換性に関する既知の問題があるアプリ

上記のランタイムの問題検出シナリオとは別に、PCA はアプリの起動時に、アプリに既知の互換性の問題があるかどうかをユーザーに通知します。 リストは、システム アプリ互換性データベースに格納されます。 次の 2 種類のメッセージがあります。

  • [メッセージのハード ブロック] - アプリに互換性があることがわかっていて、アプリの実行を許可すると、システムに重大な影響が生じる場合 (Windows のクラッシュやインストール後に起動できないなど)、次に示すようにブロックメッセージが表示されます

互換性に関する既知の問題を持つアプリ - [メッセージのハード ブロック] ダイアログ

  • ソフト ブロック メッセージ— アプリに既知の互換性の問題があり、正しく動作しない可能性がある場合は、次のメッセージが表示されます。

互換性に関する既知の問題があるアプリ - [ソフト ブロック メッセージ] ダイアログ

どちらの場合も、[オンライン ヘルプを表示] オプションを選択すると、Windows エラー レポートが送信され、Microsoft からオンライン応答が取得され、ユーザーに表示されます。 通常、応答はユーザーに次の 3 種類のリソースのいずれかを指します。

  • アプリ ベンダーからの更新プログラム
  • 詳細については、アプリ ベンダーの Web サイトを参照してください。
  • 詳細については、Microsoft サポート技術情報の記事を参照してください。

PCA のテレメトリ

PCA は、Windows 8 コンピューター上のアプリの問題に対処し、すべてのユーザー フィードバックを取得した後、アプリ、インストーラー、検出された問題、アプリに適用された互換性設定に関する匿名データを収集し、Microsoft に送り返します。 このデータは、(カスタマー エクスペリエンス向上プログラム - CEIP を通じて) そのような匿名データを提供する任意のユーザーから収集されます。 このデータが収集されると、アプリのエラーと修正プログラムが分析され、修正プログラムが Windows Update メカニズムを通じて Windows エコシステム全体に配布され、今後アプリのユーザーが修正プログラムから自動的にメリットを得られます。

管理コントロールと PCA 設定の管理

IT 管理者は、次の 2 つの方法で PCA の動作を制御できます。

  • PCA をオフにする – この設定により、IT 管理者は PCA がユーザーに表示するダイアログをオフにすることができます。PCA は引き続き問題を追跡して検出し、テレメトリを返送します

  • [アプリ テレメトリをオフにする ] – この設定では、PCA によるテレメトリ データの収集と送信がオフになります

    注意

    CEIP がオフになっている場合、この設定は影響しません。

     

PCA で動作するようにアプリを設計する

開発者は、上記のすべての互換性シナリオでアプリが適切に動作することを確認する必要があります。 開発者は、上記のシナリオごとにアプリをテストして検証し、互換性の問題がないことを確認する必要があります。 互換性の問題が特定された場合、開発者は互換性の問題が解決されるようにするために必要な修正プログラムをアプリに対して行う必要があります。 開発者が行う必要がある一般的な修正プログラムには、次のようなものがあります。

  • インストール時と実行時に Windows オペレーティング システムのバージョン チェックを排除する
  • 特権チェックを排除する (管理者アクセスを確認する)、EXE マニフェストを使用して、必要な特権の適切なレベルを宣言します
  • Windows バイナリがアプリ インストーラー内に出荷されていないことを確認する
  • 保護された領域 (レジストリ、フォルダー) への書き込みまたは保護されたファイルへの書き込みを排除する
  • すべてのバイナリ (EXE、DLL、SYS ファイル) にデジタル署名する
  • インストーラーの場合は、適切な [プログラムの追加と削除] エントリが追加されていることを確認します。少なくとも、このアプリ メタデータ エントリには、アプリ名、発行元、バージョン文字列、サポートされている言語を含める必要があります。 これにより、インストーラーが正常に完了したことが PCA に示され、ユーザーがアプリをアンインストールするための便利な方法も提供されます

アプリ (実行可能) マニフェストの TRUSTINFO と COMPATIBILITY セクションが、Windows 8互換性クックブックに記載されているように更新されていることを確認すると、PCA はアプリがWindows 8用に設計されたことを PCA に通知し、互換性モードが適用されることなく常にアプリがネイティブで実行されるようにします。

PCA でアプリがWindows 8用に設計されていることを確認するには、次の手順を実行します。

  • すべての EXEs (インストーラーまたはランタイム) は、Windows 8の TRUSTINFO セクションと COMPATIBILITY セクション用にマニフェストする必要があります
  • インストーラーは、"プログラムの追加と削除" エントリを追加する必要があります

用語集

PCA で使用される互換性モードを以下に示し、モードが有効にする内容の簡単な説明を示します。

モード 説明
Windows7RTM このモードでは、オペレーティング システムのバージョン番号 6.1 を含む Windows 7 の一般的な動作がエミュレートされます
WindowsVistaSP2 このモードでは、オペレーティング システムのバージョン番号 6.1 を含む Windows 7 の一般的な動作がエミュレートされます
WindowsXPSp3 このモードでは、オペレーティング システムのバージョン番号 5.1 を含む Windows XP SP3 の一般的な動作がエミュレートされます。 これには、RUNASHIGHEST モードも含まれます
RUNASHIGHEST このモードでは、使用可能な最高の特権でアプリを実行するようにユーザーに求められます。 管理者特権を持つユーザーには、アプリの UAC 昇格プロンプトが表示されます
Runasadmin このモードでは、常に管理者特権でアプリを実行するようにユーザーに求められます。このモードのアプリでは、常に UAC 昇格プロンプトが表示されます
ELEVATECREATEPROCESS このモードでは、メイン アプリの子プロセスが管理特権で実行されます。子プロセスは UAC 昇格ダイアログを取得します
PINDLL このモードでは、アプリが DLL をアンロードした場合でも、アプリのメモリ内に DLL が強制されます
DISABLEUSERCALLBACKEXCEPTION このモードでは、ユーザーコールバック例外をインターセプトし、例外を処理することなくアプリを続行できます
VIRTUALIZEDELETE このモードでは、保護されたファイルに対する削除操作をインターセプトし、削除操作のハンドルされない例外が原因でアプリが失敗するのを防ぎます
WRPMITIGATION このモードは、アプリが Windows で保護されたファイルまたはレジストリ エントリの書き込み、変更、または削除を試みた場合に成功を返します (実際に操作を完了する必要はありません)
DXMAXIMIZEDWINDOWEDMODE このモードでは、全画面表示モードに移行するアプリを識別し、最大化されたウィンドウ モードにリダイレクトします
HIGHDPIAWARE このモードでは、アプリが高 DPI 対応であることを Windows の残りの部分で認識でき、UI 要素、テキスト、フォントなどの適切なレンダリングに役立ちます。