「サフィックス」全体、つまり、Application.exe
.NET フレームワーク (パフォーマンス カウンターなど) と同じインフラストラクチャを使用した後の部分を取得できます。
それを行うことができるメソッドSystem.Runtime.Versioning.VersioningHelper.MakeVersionSafeNameがあります。このメソッドは「インフラストラクチャ」および「この API は .NET Framework インフラストラクチャをサポートしており、コードから直接使用することを意図していません。」と説明されていますが、公開されていることに注意してください。必要な情報を取得するための「よりサポートされた」方法はないと思います。少なくとも、将来の変更に対してより堅牢で回復力があり、ドキュメントに基づいて情報をリバースエンジニアリングします。
string suffix = System.Runtime.Versioning.VersioningHelper.MakeVersionSafeName("",
System.Runtime.Versioning.ResourceScope.Machine,
System.Runtime.Versioning.ResourceScope.AppDomain));
_p4472_r16_ad1
たとえば、これは を返します。
もちろん、パフォーマンス カウンターのベース名を直接渡して、完全な名前を直接取得することもできます。上記の空の文字列の使用は、単に「接尾辞」を取得するためのトリックにすぎません。
string str = VersioningHelper.MakeVersionSafeName("Application.exe",
ResourceScope.Machine, ResourceScope.AppDomain);
// str -> "Application.exe_p4472_r16_ad1".
クラスVersioningHelpers
にはプライベートメソッドもありますがGetRuntimeId()
、上記を考えると、必要なものを達成するためにリフレクションを使用する必要はないと思います。