GetProcessesByName()引发进程性能计数器被禁用

问题描述 投票:2回答:1

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

进程性能计数器已禁用

我在注册表中搜索了Disable Performance Counters条目,但它的值设置为1时不存在。

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

我知道在Windows Server 2003上,用户帐户必须是Performance Counter用户组的成员才能完成此操作。

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

.net-1.1 performancecounter
1个回答
0
投票
可能负责的问题:.NET版本不兼容,需要启用性能计数器或权限问题

引自MSDN

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

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

可以出于两个原因引发此异常:

    禁用性能计数器-Windows资源工具包包含一个称为可扩展计数器列表的工具,可用于启用/禁用计数器
  1. 用户没有足够的权限-非管理员用户(我认为)可能没有足够的权限访问性能计数器。
  • 如果可能,请安装.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”以弹出可扩展计数器列表,如下面的屏幕快照所示,然后向下滚动并启用性能计数器

  • © www.soinside.com 2019 - 2024. All rights reserved.