在我的机器上调用下面的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);
}
答案 0 :(得分:1)
要创建性能计数器,您需要具有足够的权限。尝试在管理员帐户下运行此代码。
另一个重要的注意事项。以下是documentation:
的引用强烈建议新的 性能计数器类别 安装过程中创建的 应用程序,而不是在执行期间 申请。这允许时间 为操作系统刷新 其登记表现清单 柜台类别。如果列表有 没有刷新,尝试使用 该类别将失败。