Share via


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

プラットフォーム

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

説明

プログラム互換性アシスタント (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 が Windows システム フォルダーから最新バージョンの DLL を読み込んでアプリを正常に実行できるようになります。

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

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

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

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

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

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

保護された 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 更新プロセスを通じてこのような修正プログラムを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 のクラッシュやインストール後に起動できない)、次に示すようにブロック メッセージが表示されます

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

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

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

どちらの場合も、[オンライン ヘルプの取得] オプションは、Microsoft からオンライン応答を取得してユーザーに表示する Windows エラー レポートを送信します。 通常、応答はユーザーに次の 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 でアプリがWindows 8用に設計されていることを確認するには、次の手順を実行します。

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

用語集

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 要素、テキスト、フォントなどの適切なレンダリングに役立ちます。