自プロセスに関する情報を取得するには、System.Diagnostics.Processクラスのメンバを参照します。 このクラスでは他プロセスを扱うこともできますが、現在のプロセス(自プロセス)を扱うにはProcess.GetCurrentProcessメソッドによってプロセスのインスタンスを取得します。
Processクラスからは、プロセス名・プロセスIDをはじめとして、以下のような情報を取得することができます。
| プロパティ | 取得できる情報 | 備考 | |
|---|---|---|---|
| 基本情報 | ProcessName | プロセス名 | |
| Id | プロセスID | .NET 5以降では、Environment.ProcessIdプロパティからも自プロセスIDを取得できる | |
|
SafeHandle
Handle |
プロセスのネイティブハンドル | SafeHandleは、.NET Framework 4.6以降で使用可能 | |
|
BasePriority
PriorityClass |
プロセスの優先順位 | ||
| StartTime | プロセスが起動した時刻 | ||
| プロセッサ使用時間 | UserProcessorTime | ユーザーモードでのプロセッサ使用時間 | |
| PrivilegedProcessorTime | 特権モードでのプロセッサ使用時間 | ||
| TotalProcessorTime | ユーザーモード・特権モード合計のプロセッサ使用時間 | ||
| メモリ | PagedMemorySize64 | プロセスに割り当てられたメモリ量 | |
| WorkingSet64 | |||
| VirtualMemorySize64ほか | |||
| PeakPagedMemorySize64 | 同ピーク値 | ||
| PeakWorkingSet64 | |||
| PeakVirtualMemorySize64ほか | |||
| プロパティ | 取得できる情報 | 備考 | |
この他、Processクラスから取得できる情報についてはProcessクラスのドキュメントを参照してください。
Processクラスを使って自プロセスの情報を取得する
using System;
using System.Diagnostics;
class Sample {
static void Main()
{
// 現在のプロセス(プロセス自身)を取得する
var p = Process.GetCurrentProcess();
Console.WriteLine(p.ProcessName); // プロセス名
Console.WriteLine(p.Id); // プロセスID
Console.WriteLine(Environment.ProcessId); // プロセスID(.NET 5以降)
Console.WriteLine(p.PriorityClass); // プロセスの優先順位
Console.WriteLine(p.SafeHandle); // プロセスのネイティブハンドル (.NET Framework 4.5以前ではHandleプロパティのみ参照可能)
Console.WriteLine(p.StartTime); // プロセスの起動日時
Console.WriteLine(p.UserProcessorTime); // ユーザーモードでのプロセッサ使用時間
Console.WriteLine(p.PrivilegedProcessorTime); // 特権モードでのプロセッサ使用時間
Console.WriteLine(p.TotalProcessorTime); // 合計のプロセッサ使用時間
}
}
メモリ使用量など、プロセスの詳細な状態を計測するにはパフォーマンスカウンタを用いることもできます。 詳しくはパフォーマンス情報の計測を参照してください。
マシンなどプロセスの実行環境・プラットフォームに関する情報を取得する方法についてはランタイム・システム・プラットフォームの情報、環境変数・自プロセスのパスなどに関する情報についてはプロセス・アセンブリの情報を参照してください。