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 回答