致电' PerformanceCounterCategory'类成员抛出Windows服务异常

时间:2016-04-15 17:08:41

标签: c# .net windows exception windows-services

当我尝试使用System.Diagnostics.PerformanceCounterCategory类时,如本例所示:

if (PerformanceCounterCategory.Exists("Network Interface")) {
   // ...
}

条件时出现Win32Exception HRESULT -2147467259 ,并显示以下消息:

  

无法启动服务,因为它已被禁用或   因为它没有与之关联的已启用设备。

我在Windows 10下使用该类所需的Windows服务是什么?我认为我已经启用了所有相关的性能计数器(和网络)Windows服务。

注意:我需要所需Winows服务的标识符名称(以及服务的英文显示名称)。

2 个答案:

答案 0 :(得分:4)

作为this SO回答指出,可能在性能计数器内部存在一些错误。尝试启动它以重置系统:

cd %systemroot%\system32
lodctr /R

另外,请检查this以了解原始详情。

更新(1)

这也可能是一个命名问题:如果你做了

lodctr /Q(或{#1}}来自C#)

您将获得计算机上所有可用性能计数器的列表。也许该计数器未注册或以其他名称注册。

您可以查看this答案以获取其他有用的详细信息。

希望有所帮助:)

答案 1 :(得分:2)

您的应用程序是以64位运行吗?

我会查看Performance Counter DLL Host服务并确保其未被停用和/或正在运行。

  

服务名称:PerfHost

     

说明

     

允许远程用户和64位进程查询性能   计数器由32位DLL提供。如果此服务仅停止   本地用户和32位进程将能够查询性能   计数器由32位DLL提供。