【问题标题】:GetProcessesByName() Throws Process performance counter is disabledGetProcessesByName() 抛出进程性能计数器被禁用
【发布时间】:2009-03-30 20:15:10
【问题描述】:

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

进程性能计数器已禁用

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

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

我知道在 Windows Server 2003 上,用户帐户需要是性能计数器用户组的成员才能完成此操作。

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

【问题讨论】:

    标签: .net-1.1 performancecounter


    【解决方案1】:

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

    引自MSDN

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

    .NET 2.0,这种对本地进程的依赖不再存在。

    抛出这个异常有几个原因:

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

    如果可能,安装 .NET > 2.0 并以较新版本为目标

    有一个教程告诉你如何使用可扩展计数器列表来启用性能计数器here

    通过单击开始 > 运行 > 键入 Perfmon 并选择确定来打开性能监视器。 验证 Process Monitor 对象是否存在,如上面发布的屏幕截图所示。

    如果 Process 对象存在,请选择所有 Process 对象计数器和所有实例,单击“添加”,然后查看图表。

    它们都运行成功了吗?

    如果缺少计数器,则需要启用它们。 Microsoft 提供了几篇知识库文章来处理这种情况。首先阅读http://support.microsoft.com/default.aspx?kbid=300956

    如果此 KB 中的步骤无法正常工作,并且您的服务器是 Microsoft Windows Server 2003,请尝试下一步 在 Notification Server 或 Task Server 上下载并安装 Windows Server 2003 Resource Kit

    打开 Windows Server 2003 Resource Kit 命令提示符 键入“exctrlst.exe”以打开可扩展计数器列表,如下面的屏幕截图所示,然后向下滚动并启用性能计数器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多