次の方法で共有


プロセス モニターを使用して、起動に失敗するアプリをトラブルシューティングする

この記事では、プロセス モニター ツールをインストールして、Modern、Inbox、および Microsoft Store Apps の起動に失敗する問題のトラブルシューティングを行う方法について説明します。

Process Monitor ツールをダウンロードします。 プロセス モニター ツールがローカルにダウンロードされたら、ファイルを抽出します。

イベントのキャプチャ

プロセス モニター トレースをキャプチャするには、管理者特権で実行します (管理者として実行)。

Note

プラットフォーム (x86 システムの場合はProcmon.exe 、X64 システムの場合は Procmon64.exe 、ARM の場合は Procmon64a.exe ) に一致するプロセス モニターのバージョンが実行されていることを確認します。

開始したら、以前に保存したフィルターを既定値にリセットして、以前に設定したフィルターによって潜在的なイベントが除外されないようにします。 プロセス モニターを初めて実行する場合、またはフィルターが設定されていない場合は、ポップアップ ウィンドウなしで記録を開始できます。

[リセット] ボタンが表示された [プロセス モニター フィルター] ウィンドウのスクリーンショット。

既定では、記録は自動的に開始されます。 ただし、次のアイコンを選択すると、実行されていることを確認できます。

ツールが実行されているかどうかを確認するアイコンが選択されている [プロセス モニター] ウィンドウのスクリーンショット。

または、Ctrl + E を押すか、File メニューから Capture Events を選択して記録を開始することもできます。 ステータス バーに記録されたイベントは、次のように表示されます。

ステータス バーに表示されている記録されたイベントのスクリーンショット。

または、グラフィカル ユーザー インターフェイス (GUI) がオプションではない場合、またはシステムがコンソール アクセスでのみリモートでアクセスできる場合は、Windows PowerShell またはコマンド プロンプトを使用して問題をトレースできます。 例えば次が挙げられます。

C:\ProcessMonitor>procmon64.exe -accepteula -backingfile C:\ProcessMonitor\Recording.pml -quiet -minimized

フィルター処理や最大ファイル サイズの設定など、その他のオプションを使用できます。 詳細については、「 Process Monitor」を参照してください。

プロセス モニターの使用状況のコマンド ライン引数のスクリーンショット。

トレースを終了して保存するには、次のコマンドを使用します。

C:\ProcessMonitor>procmon64.exe -terminate -quiet

さらに、PowerShell または PsExec ツールを使用してプロセス モニターをリモートで実行。 例えば次が挙げられます。

C:\PSTools>psexec.exe -sd \\<Computer Name> C:\ProcessMonitor\procmon64.exe -accepteula -backingfile C:\ProcessMonitor\Recording.pml -quiet -minimized

記録を停止するには、次のコマンドを使用します。

C:\PSTools>psexec.exe -sd \\<Computer Name> C:\ProcessMonitor\procmon64.exe -terminate -quiet

イベントの保存と保存

イベントを格納および保存するには、いくつかの方法があります。 File メニューから Backing files を選択できます。 次に、イベントを格納する 2 つのメソッドを確認できます。

  • 仮想メモリを使用する
  • 名前付きファイルを使用する

イベントを格納する 2 つの方法を含む [プロセス モニターのバッキング ファイル] ウィンドウのスクリーンショット。

仮想メモリを使用する

このメソッドは、ユーザーが手動で保存するまで、システムのメモリを使用してファイルを格納します。

Note

仮想メモリに基づくプロセス モニターを長時間実行すると、プロセス モニターが使用可能なすべてのシステム仮想メモリを消費する可能性があり、システムが応答を停止する可能性があります。

ステータス バーに表示されている仮想メモリに基づくイベントのスクリーンショット。

として記録を開始する場合はプロセス モニターを終了する前に記録を保存する必要があります。

[すべてのイベント] と [ネイティブ プロセス モニターの形式] が選択されている [保存] アイコンと [ファイルに保存] ウィンドウのスクリーンショット。

[すべてのイベント 選択し 形式が Native Process Monitor Format (PML)として設定されていることを確認します。 記録にすべてのイベントが含まれていない場合は、表示または強調表示されたイベントのみを分析に使用できるため、不十分な可能性があります。

ファイルに基づく

この方法では、ファイルを使用して記録を保存し、プロセス モニターを終了する前にファイルを手動で保存する必要はありません。

Note

ファイルの最大サイズが定義されていない場合、プロセス モニターを実行する時間が長すぎると、プロセス モニターで使用可能なすべてのシステム ディスク領域が消費され、システムが応答を停止する可能性があります。

ステータス バーに表示されているファイルによってバックアップされたイベントのスクリーンショット。

プロセス モニターが設定され、記録が開始されたら、問題を再現する必要があります。

トラブルシューティングの例

この問題を例として取り上げます。機能していない電卓アプリケーションがあります。 まず、上記のいずれかの方法でプロセス モニターの記録を開始します。 次に、アプリケーションを起動して問題を再現します。 問題が再現されたら、プロセス モニターの記録を停止し、データを保存します。

記録されたプロセス モニター トレースを分析するには、プロセス モニターで開きます。 メニューの Tools の下にある Process Tree を選択して、記録中にアプリケーションが起動するかどうかを確認します。

電卓プロセスを選択します。

[計算ツール] プロセスが選択されている [プロセス ツリー] ウィンドウのスクリーンショット。

プロセスに焦点を当てるには、アプリケーション名を右クリックし、 フィルターを含めるプロセスの追加を選択します。

右クリックされ、[フィルターを含めるプロセスの追加] が表示されている電卓プロセスのスクリーンショット。

同様に、プロセス ID のフィルターを手動で追加することもできます。

プロセス ID が定義されている [プロセス モニター フィルター] ウィンドウのスクリーンショット。

プロセス ツリービューを終了するか、Process Monitor フィルターウィンドウで OK を選択して、プロセスを含むフィルター処理されたキャプチャされた行を表示します。 この例では、 Calculator.exe プロセスが開始されています。

[電卓] プロセスが選択されている [プロセス モニター] ウィンドウのスクリーンショット。

次に、プロセス キャプチャの最後に進み、Process Exit イベントの直前にある Thread Exit イベントのグループを探します。

電卓プロセスが選択され、上記のスレッド終了イベントが表示された [プロセス モニター] ウィンドウのスクリーンショット。

WerFault.exeProcess Create イベントも表示できます。 その時点で、アプリケーションは既に回復不可能な条件に達しており、既定のエラー ハンドラーを呼び出しています。

また、アプリケーションのクラッシュに関連する一部のイベント ログも記録されていることにも注意してください。

アプリケーション エラー イベントを示す [イベント ビューアー] ウィンドウのスクリーンショット。

イベント 5961 を示す [イベント ビューアー] ウィンドウのスクリーンショット。

この行から始めて、Access Denied Results イベントを見つけることができるかどうかを確認できます。

アクセスが拒否された電卓プロセスが選択されている [プロセス モニター] ウィンドウのスクリーンショット。

このような場合は、次のレジストリ キーのアクセス許可と作業マシンのアクセス許可を確認して、いくつかの違いがあるかどうかを確認する必要があります。

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

この例では、 すべてのアプリケーション パッケージ に、 User シェル フォルダーからの "読み取り" アクセス許可がありません。

すべてのアプリケーション パッケージが選択されているユーザー シェル フォルダーのアクセス許可のスクリーンショット。

この操作は、PowerShell またはコマンド プロンプトを使用して行うこともできます。

作業システムの場合:

作業システムのユーザー シェル フォルダーアクセス許可の PowerShell コマンドレットのスクリーンショット。

非稼働システムの場合:

非稼働システムのユーザー シェル フォルダーアクセス許可の PowerShell コマンドレットのスクリーンショット。

疑わしい可能性がある近くのアクセス許可の問題が見つからない場合は、疑わしいアクセス許可ブロックがないか、トレース全体を常に確認できます。 まず、Filter メニューの [フィルターの設定を選択して、電卓プロセスのフィルター削除します。 次に、Tools メニューから Count Occurrences オプションを選択します。 ドロップダウン メニューから結果 Result を選択し、 Count を選択できます。

フィルター処理が完了したら、[アクセスが拒否されました] 行をダブルクリックして、フィルター処理されたイベントを表示できます。

[Count Values Occurrences]\(カウント値の出現\) ウィンドウのスクリーンショット。アクセス拒否行が選択されています。

電卓プロセスのスクリーンショット。その後、アクセスが拒否されたプロセスがいくつか続きます。

一覧を操作する場合は、すべての "アクセスが拒否されました" という結果によってコードが失敗するわけではありません。

一般に、"すべてのアクセス" を要求するものは拒否されることが多いため、調査から除外できます。 次のように、 Desired Access: All Access を含むイベントをフィルター処理することで、自動的に行うことができます。

[Desired Access All Access]\(すべてのアクセス\) フィルターが表示された [プロセス モニター フィルター] ウィンドウのスクリーンショット。

この例では、結果は次のようになります。

StartMenuExperienceHost と Calculator プロセスが選択されている [プロセス モニター] ウィンドウのスクリーンショット。

StartMenuExperienceHost プロセスが選択されているプロセス モニター ウィンドウのスクリーンショット。

"すべてのアプリケーション パッケージ" に適切なアクセス許可を追加すると、両方のアプリケーションで両方の問題が同時に解決されます。

アプリケーションの起動を停止しているアクセス許可の変更を解決できない場合があります。 プロセス モニターは、プロセス アクティビティの一部のみをキャプチャします。

多くのマシンが同じ問題の影響を受ける場合は、新しくインストールされた新しいマシンから開始し、アプリケーションの再起動に失敗するまでポリシーをゆっくりと追加して、トラブルシューティングを行います。

影響を受けるコンピューターが 1 つだけの場合は、コンピューターを回復またはリセットします。 影響を受けるユーザーが 1 人だけの場合は、ユーザーのプロファイルを再作成します。