自プロセスに関する情報を取得するには、System.Diagnostics.Processクラスのメンバを参照します。 このクラスでは他プロセスを扱うこともできますが、現在のプロセス(自プロセス)を扱うにはProcess.GetCurrentProcessメソッドによってプロセスのインスタンスを取得します。

Processクラスからは、プロセス名・プロセスIDをはじめとして、以下のような情報を取得することができます。

Processクラスのプロパティ
プロパティ 取得できる情報 備考
基本情報 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);      // 合計のプロセッサ使用時間
  }
}

メモリ使用量など、プロセスの詳細な状態を計測するにはパフォーマンスカウンタを用いることもできます。 詳しくはパフォーマンス情報の計測を参照してください。

マシンなどプロセスの実行環境・プラットフォームに関する情報を取得する方法についてはランタイム・システム・プラットフォームの情報、環境変数・自プロセスのパスなどに関する情報についてはプロセス・アセンブリの情報を参照してください。