セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ ITニュース. Sysinternals更新情報: Process Monitor v4.0(さらにv4.01)
2024年06月19日配信
2024年06月21日更新
執筆者:山内 和朗
Microsoftは2024年6月17日(米国時間)、同社が無料ダウンロード提供している「Sysinternals」ユーティリティの一部の更新版をリリースしました。今回は、Windows向け「Process Monitor(Procmon) v4.0」と、Linux向け「Sysmon 1.3.3 for Linux」が更新されています。
Process Monitor v4.0 and Sysmon 1.3.3 for Linux(Sysinternals Blog)
※ 6/21追記) 6月20日(米国時間)に更新版Procmon v4.01がリリースされました。v4.01では一部のアイコン(レジストリ、ファイルシステム、ネットワーク、プロセスとスレッド、プロファイリングイベント)がカラー化されました。 Process Monitor v4.01(Sysinternals Blog)
Sysmon for Linuxの今回の更新は主にバグ修正ですが、Procmonは1年ぶり(前回は2023年6月のv3.95)の更新であり、今回はメジャーバージョンアップとなります。メジャーバージョンアップとは言っても、Procmon v3.xで行われた数々の機能追加や改善、変更を考えると、Procmon v3.0(2012年リリース)の次というよりも、Procmon v3.9(2021年リリース)の次と考えるべきだと思います。例えば、Procmon v3.8でGUIのデザインがモダンなものに一新され、タークモードに対応しました。
Procmonは、Process Explorer(Procexp)と並ぶ、Sysinternalsで最もメジャーと言っていいユーティリティなので、唯一のSysinternals日本語解説書の作者(翻訳者)である私から今回も簡単に紹介しましょう。
メジャーバージョンアップとなるProcmon v4.0では、ユーザーインターフェイスの機能強化(アイコンのデザイン変更など)、検索、フィルター処理、およびイベントカウントのパフォーマンスの向上、「Process Start」というプロセスが開始したタイムスタンプを表示する新しいイベント列の追加が行われています。
「Process Start」をフィルター条件として使用する場合、既定でProcmon今回のインスタンスを開始したタイムスタンプを選択可能です。それ以前(less than)または以降(more than)条件を指定することで、Procmonが介した以前に既に開始されていたプロセスのアクティビティ、またはProcmonを開始した以後に新たに開始されたプロセスのアクティビティをキャプチャすることができ、キャプチャ対象のイベントを効率的に絞り込むことができます(画面1)。
画面1 フィルター条件として、新たに「Process Start」列を使用可能。条件としてProcmonのインスタンス開始時のタイムスタンプを選択できる
Procmonは膨大なイベントを記録するため、問題が再現できる場合は、Procmonのキャプチャを開始し、問題を再現させ、Procmonのキャプチャ停止して、イベントを調査するという使い方が一般的です。
例えば、「Windowsバージョン情報」(winver.exe)や「設定|システム|詳細情報」(ms-settings:about)に表示されるWindowsのバージョン、OSビルド、リビジョン番号がレジストリのどこに格納されているのかを、Procmonを使用して調べてみましょう。Procmonを起動し、既定のフィルターを受け入れると、自動的にキャプチャが開始します。
キャプチャが始まったら、「ファイル名を指定して実行」から「winver.exe」または「ms-settings:about」を実行します。バージョン情報が表示されたら、Procmonのキャプチャを停止します。
Procmonは、詳細なフィルター機能を持ちます。簡単なフィルターは、Procmonのメニューバーのアイコンでオン/オフすることができます。例えば、レジストリのアイコン(Show Registry Activity)だけをオンにすると、レジストリのイベントだけに絞り込むことができます。また、照準アイコン(Include Process From Window)をクリックしたまま、Windowsのバージョン情報を表示しているウィンドウの上でマウスを放すと、そのプロセス(例えば、winver.exe)だけのイベントにさらに絞り込むことができます。「Filter」メニューの「Filter」を開けば、さらに詳細なフィルター条件を定義できます。今回のケースでは、「Process Start」でProcmon開始後のイベントに絞り込むのも有効です。
虫眼鏡アイコン(Find)をクリックして「検索」ボックスを開くと、表示中(フィルター済み)のイベントから文字列(バージョン、ビルド、リビジョン番号など)で目的のレジストリの場所を検索することができます。イベントを右クリックして「Jump to」をクリックすると、レジストリエディターを開いてその場所まで誘導してくれます(画面2)。
画面2 照準アイコンと検索ボックスを利用して、目的のレジストリの場所を調べる
ちなみに、Windowsのバージョン情報は、「HKEY_LOCAL_MACHINE¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion」の「DisplayVersion(バージョン)」「CurrentBuild(OSビルド)」「UBR(リビジョン番号)に格納されています「DisplayVersion」値は、Windows 10バージョン20H2以降およびWindows Server 2019以降で利用されている値であり、それ以前は「ReleaseId」値が使用されていました。「ReleaseId」値は「2009」以降使用されておらず、Windowsの新しいバージョンではすべて「2009」を格納しています。
画面3 レジストリエディターが起動して、Windowsのバージョン情報を格納しているレジストリの場所までナビゲートしてくれる
このようにProcmonはWindowsの設定や情報が格納されているレジストリの場所を調べるのにとても便利です。原因不明の問題の調査には、問題発生の前後でProcmonのキャプチャを開始、停止して、フィルターを駆使しながら関連するイベントがないかを調査します。Procmonのブートログ(「Options」メニューの「Enable Boot Logging」)を使用すると、OS起動中のアクティビティやログオン時、ログオフ時のアクティビティをキャプチャすることができます。例えば、アプリケーションのインストール開始から終了までをキャプチャし、レジストリやファイルシステムに行われた変更を洗い出し、インストーラーなしでアプリケーションの実行環境を別のコンピューターに再現するといったユニークな使い方もできます。その具体的な例が、お勧めの一冊の「21.4 アプリの正常なインストールを記録して、インストーラーの問題を回避する」に掲載されています。
Windows Sysinternalsの生みの親であるMark Russinovich氏の人気の以下のブログ/Webキャストシリーズでは、その大部分でProcmonが使用されており、Procmonの具体的な使用例が分かります。お勧めの一冊の第3部にも、その一部が掲載されています。
Case of the Unexplained(原因不明のサポート案件)Webキャスト
Mark's Blog(アーカイブ)
Sysinternalsユーティリティのほとんどは、インストールせずに、ダウンロードした実行ファイルを単体で実行して利用することができます。その入手方法としては、以下の3つの方法があります。
最新版を利用するには、必要時にSysinternals Liveから最新版を実行するか、Microsoft Store版Sysinternals Suite(Windows 10およびWindows 11の場合)を利用することをお勧めします。Microsoft Store版Sysinternals Suiteは、更新版がMicrosoft Storeで利用可能になるまでタイムラグがありますが、アプリの更新機能で自動的に最新版に更新されます。
お勧めの一冊Windows Sysinternalsユーティリティの日本語解説については、少し古い書籍ですが、こちらをお勧めします。Windows Sysinternalsユーティリティは更新を続けていますが、ユーティリティのラインアップや基本的な使い方に変わりはありません。Procexpは第2部リファレンスガイドでかなりのボリューム(第5章丸ごと)を割いて詳しく説明されています。また、第3部のさまざまなトラブルシューティング事例でProcexpと並び利用されているユーティリティです。
Windows Sysinternals 徹底解説 改訂新版 著者 : Mark E. Russinovich、Aaron Margosis 著 ※書籍の正誤情報、およびユーティリティのこれまでの更新情報については、旧ブログサイトをご覧ください。 |