某日做程序,发现简单的一句
var p = new PerformanceCounter("Processor", "% Processor Time", "_Total");
}
}
竟然无法通过,提示“目录不存在”,异常为“InvalidOperationException”
查阅资料,并通过
PerformanceCounterCategory.GetCategories()
对所有计数器目录列表发现,居然有些服务器Processor真的不存在,经过google发现
http://support.microsoft.com/kb/300956解决这个问题
需要重新生成性能计数器
解决
然后从其他服务器上copy了
%Systemroot%\System32\Perfc009.dat 文件和 %Systemroot%\System32\Perfh009.dat 文件
到故障服务器的%Systemroot%\System32\目录下,发现大小确实不同
并修改注册表
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib
Last Counter=1846(十进制),Last Help=1847(十进制)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
如果有First Counter,First Help,Last Counter,Last Help四项就删除,我的是没有
就可以发现丢失的计数器目录都回来了