プログラムが起動できない場合の対応

Process Monitor を利用したプログラムが起動されない原因を特定する方法

更新日: 2011 年 5 月 25 日

使用ツール

  • Process Monitor
    ファイル システム、レジストリ、プロセス、スレッド、および DLL の活動をリアルタイムで監視します。

トラブルの状況

Process Explorer の使い方を調べたいと思い、ヘルプのプログラムである procexp.chm を起動したところ、エラー ページが表示されました。

図 1: ヘルプのプログラム起動時のエラー画面

解決方法

プログラムが正常に起動できない問題を調べるときには、Process Monitor を使ってプログラム起動時の様子を記録します。そして、記録した内容から問題の原因を探ります。

  1. あらかじめ起動時の様子を記録した Process Monitor で、procexp.chm に関連した処理を確認するため、Process Monitor で、[Filter] - [Filter] メニューを開き、[Process Name] [is] [procexp.chm] then [Include] と設定しました。ところが、procexp.chm が Process Name になっている処理はひとつもありませんでした。

    図 2: Process Monitor Filter 画面

  2. 続いて Process Monitor の検索機能 (Ctrl + F) を使って、procexp.chm の文字列を検索します。すると、Explorer.exe から hh.exe procexp.chm というコマンドを実行している処理を発見しました。このことから、procexp.chm ファイルは hh.exe プログラムから実行されていることがわかりました。

    図 3:Process Monitor の検索機能を使って、procexp.chm の文字列を検索した画面

  3. hh.exe プログラムを使ってヘルプ ファイルは動作していることがわかりましたので、hh.exe のプロセスだけが表示されるようにフィルターを設定します。フィルターの設定は前述の [Filter] - [Filter] メニューを利用する方法もありますが、hh.exe を右クリックし、[Include "hh.exe"] をクリックすると、hh.exe プロセスだけが表示されるようにフィルターされます。

    図 4: hh.exe のプロセスだけが表示されるようにフィルターを設定している画面

  4. hh.exe プロセスだけが Process Monitor 画面に表示されていますが、それでもなお多くの処理が表示されています。ひとつずつ順番に見ていくのは大変なので、エラーの処理を行っている箇所をまずは探してみましょう。検索機能 (Ctrl + F) を使って "error" というキーワードで検索します。
  5. "error" というキーワードで検索した結果、Temporary Internet Files フォルダーへのアクセスを行っている処理を発見しました。

    図 5: Process Monitor の検索機能を使って、error の文字列を検索した画面

  6. ヘルプのファイルを開こうとしているにもかかわらず、なぜ Temporary Internet Files フォルダーという Internet Explorer のキャッシュ フォルダーへアクセスしようとしているのでしょうか? そこで、検索エンジンを使ってヘルプ ファイル (chm) と Temporary Internet Files をキーワード (Bing での検索キーワード "chm Temporary Internet Files") にして調べました。すると、サポート技術情報のページを発見しました。このページでは、.chm ファイルのプロパティを開き、[ブロックの解除] をクリックすると問題解決できると記載があります。この内容に従い、procexp.chm ファイルのプロパティを開くと、[ブロックの解除] というボタンを押せる状態になっています。[ブロックの解除] をクリックして、[OK] をクリックします。

    図 6: procexp.chm ファイルのプロパティ画面

  7. もう一度 procexp.chm ファイルを実行すると、今度は正しくヘルプ ファイルが表示されるようになりました。

    図 7: ヘルプ ファイルの正しい表示画面

このように、Process Monitor ではプログラムを実行した時の様子を記録し、その内容からどのような処理を実行しているか確認することで、不可解な現象を見つけることができます。
不可解と思われる現象を見て、すぐに問題の原因がわかればよいですが、今回のケースのように不可解と思っても問題の原因まではわからない場合も多いと思います。そのような場合には、Process Monitor で調べて確認できたことを、検索エンジンを使って調べてみると問題解決につなげられる確率が高くなります。

違ったアプリケーション起動時のトラブルを見極める方法

ここまで見てきた方法では、error というキーワードで Process Monitor に出力された大量のログから目的の情報を探し出しました。アプリケーションでトラブルが発生するときは error という文字のやり取りがよく発生するため、error という文字でエラーの原因を探すのは効果的な方法です。また、error という文字以外にも、denied という文字を使って探す方法や、アプリケーションのエラー メッセージに表示されている文字を利用して探す方法も有効です。

ページのトップへ