1

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

进程性能计数器已禁用

我在注册表中搜索了禁用性能计数器条目,但它不存在,值设置为 1。

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

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

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

4

1 回答 1

-1

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

引用自MSDN

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

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

出于以下几个原因,可能会引发此异常:

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

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

这里有一个教程向您展示如何使用可扩展计数器列表来启用性能计数器

通过单击 Start > Run > Type in Perfmon 打开 Performance Monitor,然后选择 Ok。验证 Process Monitor 对象是否存在,如上面发布的屏幕截图所示。

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

他们都成功运行了吗?

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

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

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

于 2020-01-02T00:35:26.713 回答