我们有一个使用Process.GetProcessesByName()
的应用程序,但它仅在一台用户PC上失败,并出现以下错误:
进程性能计数器已禁用
我在注册表中搜索了Disable Performance Counters条目,但它的值设置为1时不存在。
用户环境是具有管理权限的XP。
我知道在Windows Server 2003上,用户帐户必须是Performance Counter用户组的成员才能完成此操作。
关于如何启用流程性能计数器的任何想法?
引自MSDN
在.NET 1.0 / 1.1中,Process类依赖于性能计数器来提供有关本地和远程进程的性能信息。。NET 2.0,不再依赖于本地进程。
可以出于两个原因引发此异常:
禁用性能计数器-Windows资源工具包包含一个称为可扩展计数器列表的工具,可用于启用/禁用计数器
- 用户没有足够的权限-非管理员用户(我认为)可能没有足够的权限访问性能计数器。
这里有一个教程,向您展示如何使用可扩展计数器列表来启用性能计数器here
通过单击开始>运行>输入Perfmon打开Performance Monitor,然后选择确定。验证过程监视器对象是否存在,如上面发布的屏幕快照所示。如果存在Process对象,请选择所有Process对象计数器和所有实例,单击Add,然后观察图形。
它们都成功运行了吗?
如果缺少计数器,则需要启用它们。Microsoft提供了一些KB文章来处理这种情况。首先阅读http://support.microsoft.com/default.aspx?kbid=300956
如果此KB中的步骤无法正常运行,并且您的服务器是Microsoft Windows Server 2003,请尝试下一步在Notification Server或Task Server上下载并安装Windows Server 2003资源工具包
打开Windows Server 2003资源工具包命令提示符键入“ exctrlst.exe”以弹出可扩展计数器列表,如下面的屏幕快照所示,然后向下滚动并启用性能计数器