据我所知,有没办法安全地删除它们,除非以编程方式(它们旨在供应用程序在安装过程中创建和删除),但从电源外壳 http://Microsoft.com/PowerShell命令行控制台。只需运行这个命令:
[Diagnostics.PerformanceCounterCategory]::Delete( "Your Category Name" )
但是:(编辑)
You can删除创建的注册表项,这将使该类别消失。
对于名为“库存”的类别,您可以删除整个键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory
...虽然我不愿意打赌它会清理一切, it will使类别消失。 (如果你跑过程监控器 http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx运行Delete()方法时,您可以看到发生了很多其他活动,并且似乎没有任何其他活动changes made).
重要的是要注意正如我最初所说:当您从 Visual Studio 收到该错误时,可能是它已被删除,您需要刷新 VS 中的视图。在我的测试中,我必须重新启动应用程序才能让它们真正获得可用类别的干净列表。
您可以从 PowerShell 检查类别的完整列表,看看它是否已列出:
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Format-Table -auto
但是,如果您检查它们,然后删除注册表项...它们仍然会显示,直到您重新启动 PowerShell(如果您启动另一个实例,您可以在那里运行相同的查询,并且它不会显示已删除的项目,但在第一个中重新运行 GetCategories 将继续显示它。
顺便说一句,如果您想对模式使用 -like 或对完整正则表达式使用 -match ,您可以过滤该列表:
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -like "*network*" } | Format-Table -auto
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -match "^SQL.*Stat.*" } | Format-Table -auto