自プロセスに関する情報を取得するには、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クラスを使って自プロセスの情報を取得する
Imports System
Imports System.Diagnostics
Class Sample
Shared Sub Main()
' 現在のプロセス(プロセス自身)を取得する
Dim p As Process = 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) ' 合計のプロセッサ使用時間
End Sub
End Class
メモリ使用量など、プロセスの詳細な状態を計測するにはパフォーマンスカウンタを用いることもできます。 詳しくはパフォーマンス情報の計測を参照してください。
マシンなどプロセスの実行環境・プラットフォームに関する情報を取得する方法についてはランタイム・システム・プラットフォームの情報、環境変数・自プロセスのパスなどに関する情報についてはプロセス・アセンブリの情報を参照してください。