1

私のマシンで以下の PerformanceCounterCategory.Create() を呼び出すと、この例外がスローされます。

System.ComponentModel.Win32Exception: アクセスが拒否されました

また、イベント ビューアーで報告されるメッセージは次のようになります。

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib キーを開いたり、カウンター文字列をインストールするためにアクセスしたりできませんでした。呼び出しによって返された Win32 ステータスは、データ セクションの最初の DWORD です。

それについて何が問題なのか知っていますか?

ありがとうございました!

        if (!PerformanceCounterCategory.Exists("MyCategory"))
        {
            CounterCreationDataCollection counters = new CounterCreationDataCollection();

            CounterCreationData avgDurationBase = new CounterCreationData();
            avgDurationBase.CounterName = "average time per operation base";
            avgDurationBase.CounterHelp = "Average duration per operation execution base";
            avgDurationBase.CounterType = PerformanceCounterType.AverageBase;
            counters.Add(avgDurationBase);


            // create new category with the counters above
            PerformanceCounterCategory.Create("MyCategory",
                "Sample category for Codeproject", PerformanceCounterCategoryType.SingleInstance, counters);
        }
4

1 に答える 1

1

パフォーマンス カウンターを作成するには、十分な権限が必要です。管理者アカウントでこのコードを実行してみてください。

もう一つの重要な注意事項。ドキュメントからの引用は次のとおりです。

アプリケーションの実行時ではなく、アプリケーションのインストール時に新しいパフォーマンス カウンター カテゴリを作成することを強くお勧めします。これにより、オペレーティング システムが登録済みのパフォーマンス カウンター カテゴリのリストを更新する時間ができます。リストが更新されていない場合、カテゴリを使用しようとすると失敗します。

于 2010-03-29T08:52:51.133 に答える