GetProcessesByName()抛出进程性能计数器已禁用

时间:2009-03-30 20:15:11

标签: .net-1.1 performancecounter

我们有一个使用Process.GetProcessesByName()的应用程序,但它只在一台用户PC上失败,并出现以下错误:

  

禁用流程效果计数器

我在注册表中搜索了禁用性能计数器条目,但是没有将值设置为1。

用户env是具有管理权限的XP。

我知道在Windows Server 2003上,用户帐户必须是Performance Counter Users Group的成员才能完成此任务。

有关如何启用流程性能计数器的任何想法?

1 个答案:

答案 0 :(得分:-1)

可能负责的问题:.NET版本不兼容,需要启用性能计数器或权限问题

引自MSDN

在.NET 1.0 / 1.1中,Process类依靠性能计数器来提供有关本地和远程进程的性能信息。

.NET 2.0,不再依赖于本地进程。

引发此异常的原因有两个:

  1. 性能计数器被禁用-Windows资源工具包包含一个称为可扩展计数器列表的工具,可用于启用/禁用计数器
  2. 用户没有足够的权限-非管理员用户(我认为)可能没有足够的权限访问性能计数器。

如果可能,请安装.NET> 2.0并定位较新的版本

有一个教程向您展示了如何使用可扩展计数器列表来启用性能计数器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”以弹出可扩展计数器列表,如下面的屏幕截图所示,然后向下滚动并启用性能计数器