c#debug:禁用进程性能计数器

时间:2017-05-05 12:15:00

标签: c# performance visual-studio debugging process

我在c#中的vs2003中有一个应用程序,它运行正常,我可以毫无问题地进行调试。

几天后,我尝试再次启动调试一些东西,现在当我尝试调试应用程序时崩溃了。这一行引起了异常:

Process[] procesos = Process.GetProcessesByName(ProcessName);

例外是:

An unhandled exception of type 'System.InvalidOperationException' occurred in system.dll

Additional information: Process performance counter is disabled, so the requested operation cannot be performed.

我不明白为什么因为几天前,在同一台机器上,它工作正常,我可以调试没有任何问题。我没有修改任何代码行,应用程序代码是相同的,没有变化所以我不明白。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在Google上搜索并在以下不同网站寻求帮助后:

最后,我结束了page所说的话。基本上我所做的是从命令提示符窗口(cmd)下执行下面的代码行 C:\ Windows \ System32 下的

LODCTR /R

重要:必须以管理员身份打开命令提示符窗口。如果没有,则上述命令不起作用。

性能计数器再次正常运行。您可以通过执行性能监视器(perfmon.exe)来查看它们是否正常工作。执行perfmon后,如果收到一些错误,则表示性能计数器已损坏,因此您必须执行上面的代码行来修复它们。如果没有,您需要检查过程计数器是否出现在可用控制器下,标题为Process,您可以添加一些。如果是这样,性能计数器就可以了。

最后,在我的情况下,它在那行代码中崩溃,因为Process.GetProcessesByName方法使用性能计数器。似乎有些.NET方法使用它们。因此,如果性能计数器已损坏,您将获得此类异常。