「サフィックス」、つまり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()
を持っていますが、上記を与え、私はあなたが必要なものを達成するためにリフレクションを使用することがneccessaryであるとは思いません。
Process.GetProcessesを使用するとあなたが助けになりますか? http://msdn.microsoft.com/en-us/library/system.diagnostics.process.getprocesses.aspx –
私は探しているものを持っていないようです。 – TheGateKeeper
それは新規です。 "p4952"と "ad1"はどういう意味ですか?これはあなた自身のカウンターですか?次に、作成に使用したコードを投稿します。 –