あるコンピュータに登録されているパフォーマンスカウンタのカテゴリ一覧を取得するには、PerformanceCounterCategory.GetCategoriesメソッドを使用します。また、あるパフォーマンスカウンタカテゴリのカウンタ一覧を取得するには、PerformanceCounterCategory.GetCountersメソッドを使用します。
なおWindows Vista以降でUACが有効になっている時は、管理者に昇格しないと失敗するかもしれません。この対処法については、「Vista以降でUACが有効だとファイルの作成等に失敗する問題の対処法」をご覧ください。
以下に、ローカルコンピュータに登録されているパフォーマンスカウンタのカテゴリ一覧と、カウンタ一覧を取得し、その名前を表示する例を示します。
'ローカルコンピュータに登録されている 'パフォーマンスカウンタカテゴリ一覧を取得する Dim pccs As System.Diagnostics.PerformanceCounterCategory() = _ System.Diagnostics.PerformanceCounterCategory.GetCategories() '次のようにしてコンピュータ名を指定することもできる 'pccs = PerformanceCounterCategory.GetCategories("MyComputer") Dim pcc As System.Diagnostics.PerformanceCounterCategory For Each pcc In pccs 'カテゴリのパフォーマンスオブジェクト名を表示する Console.WriteLine(pcc.CategoryName) Try 'カテゴリのパフォーマンスオブジェクトインスタンス一覧を取得 'インスタンス情報が無い時はInvalidOperationExceptionがスロー Dim instanceNames As String() = pcc.GetInstanceNames() 'インスタンス名を表示する Dim instanceName As String For Each instanceName In instanceNames Console.WriteLine("INSTANCE:" + instanceName) Next instanceName 'カテゴリのカウンタ一覧を取得 Dim pcs() As System.Diagnostics.PerformanceCounter If instanceNames.Length > 0 Then pcs = pcc.GetCounters(instanceNames(0)) Else pcs = pcc.GetCounters() End If 'パフォーマンスカウンタ名を表示する Dim pc As System.Diagnostics.PerformanceCounter For Each pc In pcs Console.WriteLine(">" + pc.CounterName) Next pc Catch ex As InvalidOperationException Console.WriteLine("インスタンス情報がありません") End Try Next pcc
//ローカルコンピュータに登録されている //パフォーマンスカウンタカテゴリ一覧を取得する System.Diagnostics.PerformanceCounterCategory[] pccs = System.Diagnostics.PerformanceCounterCategory.GetCategories(); //次のようにしてコンピュータ名を指定することもできる //pccs = PerformanceCounterCategory.GetCategories("MyComputer"); foreach (System.Diagnostics.PerformanceCounterCategory pcc in pccs) { //カテゴリのパフォーマンスオブジェクト名を表示する Console.WriteLine(pcc.CategoryName); try { //カテゴリのパフォーマンスオブジェクトインスタンス一覧を取得 //インスタンス情報が無い時はInvalidOperationExceptionがスロー string[] instanceNames = pcc.GetInstanceNames(); //インスタンス名を表示する foreach (string instanceName in instanceNames) { Console.WriteLine("INSTANCE:" + instanceName); } //カテゴリのカウンタ一覧を取得 System.Diagnostics.PerformanceCounter[] pcs; if (instanceNames.Length > 0) pcs = pcc.GetCounters(instanceNames[0]); else pcs = pcc.GetCounters(); //パフォーマンスカウンタ名を表示する foreach (System.Diagnostics.PerformanceCounter pc in pcs) { Console.WriteLine(">" + pc.CounterName); } } catch (InvalidOperationException) { Console.WriteLine("インスタンス情報がありません"); } }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。