
Microsoftが提供するSysinternalsの「Process Explorer」を使うと、ジョブオブジェクトを調べることができる。Optionメニューの「Configure Color」でJobsのチェックボックスをオンにする。ジョブでグループ化されているプロセスに指定した色がつく
コンピューターでは、プログラムを実行するとメモリに読み込まれて「プロセス」になる。プロセスからはさまざまな情報が得られる。今回は、プロセスから情報を取得する方法について解説する。その前に、プロセスや関連の用語が混乱しているので、1回整理しておこう。
そもそもWindowsにおける「プロセス」とは
「プログラム」とは命令の連なりであり、これを記録したものが実行ファイルだ。ほとんどのプログラムは、実行ファイルという形を持つが、プログラムがプログラムを作って、実行ファイルという形を経ずに実行させることもできる。しかし、セキュリティの観点上、こうした手法には制限がかかる。悪意のある多くのプログラムが実際そうするからだ。そのため、通常はプログラムとは実行ファイルに記録されているものと考えていい。
プロセスは、プログラムのインスタンス(実体)とも呼ばれることがある。実行ファイルに記録されているものはプログラムの定義であり、実行することで実体となるという考え方だ。あえてたとえるなら、プログラムとプロセスの関係は楽譜と演奏の関係である。
Windowsは、実行ファイルから読み込まれたコードやデータなどを、一定の方法でメモリ上に配置する。このメモリ領域を実行イメージと呼ぶ。プロセスには、実行時間やファイルへのアクセス、接続しているネットワークポートといった「資源」(リソース)がプロセスに割り当てられる。Windowsでプロセスは、このようなリソースの割り当て、管理単位である。
プロセスは、1つ以上のスレッドから構成される。スレッドとは、実行スケジューリングの管理単位だ。最初に起動されるのがメインスレッドで、この中でさらにスレッドを作り出すことができる。
そのほかの用語として「ジョブ」と「タスク」がある。一般的な定義もあるが、Windowsではプロセスをグループとして管理するものがジョブ(正確にはジョブオブジェクト)である。たとえば、Google Chromeは多数のChrome.exeプロセスを作るが、これらはジョブオブジェクトでグループ化されている。ジョブに対しては、起動や停止といった操作をし、ジョブに属するプロセスをまとめて制御できる。
Windowsでは、「タスク」は、ほぼプロセスの同義語として使われる。たとえば、タスクマネージャーやタスクリスト(tasklist.exe)といったプログラムは、プロセスに関する情報を扱うものだ。ただし、タスクスケジューラーは、プロセスではなく、プログラムの起動を管理している。
プログラムよりもプロセスからの情報を得るほうが簡単
Windowsを含む多くのOSは、プロセスから情報を得るためのAPIが用意されている。このため、プロセスからプログラムに関する情報を得ることが可能になる。
もちろん、プログラム自体からも情報を得られるが、そのためにはプログラム(の実行ファイルなど)を解析して、挙動を推測しなければならない。これは、かなり面倒で高度な作業だ。しかし、プログラムを実行してプロセスから情報を得ることは簡単にできる。
たとえば、アプリケーションのウィンドウに表示されるタイトルはプロセスから簡単な方法で確認できる。しかし、プログラムから得るためには、プログラムコードを追いかけて、タイトルに表示される文字列を作る処理を突き止める必要がある。
プロセスには、ユーザーが直接起動したプログラムだけでなく、Windowsが起動したプログラムのプロセスや、アプリケーションが起動したプロセスもある。適切な権限さえあれば、こうしたプロセスからさまざまな情報を得られる。
たとえば、新旧の複数バージョンがインストールされているプログラムでも、プロセスから情報を得ることで、どちらが起動しているのかを判定可能だ。
タスクマネージャーやリソースマネージャーは、プロセスの情報を表示することができる。またWindowsには、tasklistのようなプロセスを列挙し情報を表示するプログラムもある。ただし、これらは、プロセスが持つ情報の一部しか出力することができない。
PowerShellのGet-ProcessコマンドやMicrosoftが提供するSysinternalsの「Process Explorer」(https://learn.microsoft.com/ja-jp/sysinternals/downloads/process-explorer、要インストール)は、プロセスからより詳細な情報を得ることができる(記事冒頭画面)。また、Windowsの管理機構であるWMI/CIMを使っても、同様に可能だ。

この連載の記事
-
第407回
PC
2025年以降もWindows 10に延長サポートがある可能性!? 対応ハードを絞る真の本命は次期Windows? -
第406回
PC
Windowsにおける言語設定とは -
第405回
PC
WSLプレビューVer.2.0.7でMirroredネットワーク、DNSトンネリングを試す -
第404回
PC
開発者向けに性能が高い、Windowsの「開発ドライブ」を試す -
第403回
PC
WSL Ver.2.0の新機能「自動メモリ回収」を実際に試す -
第402回
PC
プレビュー版が登場したWSLのVer.2.0 新機能を具体的に見る -
第401回
PC
内部的な改良で便利になったWindows Terminal v1.19での新機能を確認 -
第400回
PC
Windowsにおける音声認識など、ボイス機能を整理 -
第398回
PC
Windows Subsystem for Androidの進化を確認 エクスプローラーからのファイルのドラッグ&ドロップが可に -
第397回
PC
Windowsにおけるディスク、ドライブ、パーティションの扱いの違い - この連載の一覧へ