システム

Environment クラス

プロパティ

プロパティ 内容
int ProcessorCount 現在のプロセスで使用可能な、プロセッサの数。これは以下の最小値となる
  • 論理プロセッサの数
  • プロセスがCPUアフィニティ付き実行されているときは、プロセスとのアフィニティ (関係) があるプロセッサの数
  • プロセスがCPU利用制限付きで実行されているときは、CPU利用制限は次の整数に切り上げられる

この値は.NETランタイムの起動時に決定され、プロセス実行中の変更は反映されない

OperatingSystem OSVersion 現在のプラットフォーム識別名と、バージョン番号
string NewLine 環境で定義されている改行文字列。Unix以外では"\r\n"、Unixでは"\n" NewLine - environment.cs
string StackTrace スタック トレースの情報。呼び出し階層ごとに情報を得たいならば、StackTraceクラスを用いる
bool HasShutdownStarted trueならば、現在のアプリケーション ドメインがアンロードされているか、CLRがシャットダウンしている。
string CurrentDirectory 現在の作業ディレクトリの完全修飾パス (fully qualified path)
     
Properties - Environment Class (System) | Microsoft Learn

メソッド

メソッド 機能
GetEnvironmentVariable(String) 現在のプロセスから、指定の環境変数の値を取得できる
GetEnvironmentVariables() 現在のプロセスから、すべての環境変数の名前と値を取得できる
ExpandEnvironmentVariables(String) 指定の文字列に埋め込まれた環境変数の名前を、その値に等しい文字列に置換できる
   

ExpandEnvironmentVariables()

public static string ExpandEnvironmentVariables (string name);
Environment.ExpandEnvironmentVariables(String) Method (System) | Microsoft Learn
string variables = Environment.ExpandEnvironmentVariables("%AppData%\\TEST");
// "C:\\Users\\username\\AppData\\Roaming\\TEST"
.net - C# getting the path of %AppData% - Stack Overflow

SystemInformation クラス

プロパティ 内容
     
プロパティ - SystemInformation クラス (System.Windows.Forms) | Microsoft Learn

RuntimeInformation クラス

実行環境の.NETに関する情報を得られます。ただしこのクラスがサポートされるのが.NET Framework 4.7.1以降のため、それより前のバージョンの情報は得られません。Applies to - RuntimeInformation Class (System.Runtime.InteropServices) | Microsoft Learn

プロパティ

プロパティ 内容
string FrameworkDescription アプリケーションで使用されている.NETの名前
string OSDescription アプリケーションが実行されているOSの、説明
Architecture OSArchitecture アプリケーションが実行されているOSの、アーキテクチャ
Architecture ProcessArchitecture アプリケーションの、アーキテクチャ
Properties - RuntimeInformation Class (System.Runtime.InteropServices) | Microsoft Learn

FrameworkDescription

アプリケーションで使用されている.NETの情報を得られます。それは以下の説明から始まり、現在のバージョンが続く文字列です。Remarks - RuntimeInformation.FrameworkDescription Property (System.Runtime.InteropServices) | Microsoft Learn

アプリケーションが対象とする.NETの情報

アプリケーションが対象とする.NETのバージョンはMSBuildのTargetFrameworkVersion要素で指定でき、そこで指定されているバージョンはAssemblyのカスタム属性から取得できます。

Assembly assembly = typeof(MyClass).Assembly;
object[] attributes = assembly.GetCustomAttributes(typeof(TargetFrameworkAttribute), false);
TargetFrameworkAttribute targetFramework = (TargetFrameworkAttribute)attributes[0];

string str1 = targetFramework.FrameworkName;        // ".NETFramework,Version=v4.8"
string str2 = targetFramework.FrameworkDisplayName; // ".NET Framework 4.8"
c# - How to get the version of the .NET Framework being targeted? - Stack Overflow

SystemEvents クラス

システムの変更を検出できます。SystemEvents クラス (Microsoft.Win32) | Microsoft Learn

Microsoft Learnから検索