プロセスの履歴をとる
すべてのプロセスの開始時間と終了時間を記録します。作業時間の把握とかに使えるかもしれませんね。勢いだけで書いたので人柱ですが、それでもよければどうぞー(process_history.cab)。
アーカイブはドライバと実行可能ファイルで構成されています。ドライバをロードする機能は提供されていないので ldsys あたりを利用してください。
ドライバがロードされている期間に生成されたプロセスのみが対象です。したがってWindows起動後に読み込ませた場合、それ以前のプロセス情報は管理されません。Windowsを再起動すると、すべてのプロセス情報が管理されるようになります。
実行可能ファイルをビルドするには boost が必要です。ドライバを VisualStudio からビルドするには DDKBUILD.CMD が必要です。
出力
>process_history.exe No ImageName ProcessId ParentId CreateTime TerminateTime 0 System 4 0 1207 0 *1 1 smss.exe 496 4 1215 0 *2 2 autochk.exe 504 496 1218 1219 3 smss.exe 552 496 1370 1615 4 csrss.exe 564 552 1374 0 ...
- ImageName
- ファイル名を16文字で示します。
- ProcessId
- プロセスIDです。
- ParentId
- 本プロセスを生成したプロセスのIDです。
- CreateTime
- プロセスが生成された時間を、システムが起動してからの経過時間[ms]で示します。
- TerminateTime
- プロセスが破棄された時間を、システムが起動してからの経過時間[ms]で示します。
- *1
- System の CreateTime が0ではないのは、ドライバファイルのロードがWindowsの起動直後ではなく 1207ms 後であったためです。
- *2
- TerminateTime が 0 になっているプロセスはまだ終了していないものです。
>process_history.exe -c No,ImageName,ProcessId,ParentId,CreateTime,TerminateTime 0,System,4,0,1207,0 1,smss.exe,496,4,1215,0 2,autochk.exe,504,496,1218,1219 3,smss.exe,552,496,1370,1615 4,csrss.exe,564,552,1374,0 ...
実行可能ファイルは -c 引数を与えて起動するとCSV形式で出力します。excelなどに食わせてあげると、こんな感じでグラフにすることができます。