当前位置:  开发笔记 > 编程语言 > 正文

删除Windows性能计数器类别

如何解决《删除Windows性能计数器类别》经验,为你挑选了2个好方法。

我有一个自定义的性能计数器类别.Visual Studio Server Explorer拒绝删除它,声称它"未注册或系统类别".如果没有以编程方式进行,我该如何删除该类别?我可以删除一个注册表项吗?



1> Jaykul..:

据我所知,除了编程之外没有办法安全地删除它们(它们是用于在安装期间创建和删除的应用程序),但从PowerShell命令行控制台进行操作是微不足道的.只需运行此命令:

[Diagnostics.PerformanceCounterCategory]::Delete( "Your Category Name" )

但是:(编辑)

可以删除已创建的注册表项,这将使该类别消失.

对于所谓的"库存"类别您可以删除整个键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory......虽然我不会愿意打赌,清理一切,它令类别消失.(如果在运行Delete()方法时运行Process Monitor,则可以看到可能发生了很多其他活动,并且似乎没有进行任何其他更改).

重要的是要注意,正如我原先所说:当您从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



2> Kieran Bento..:

您也可以使用LinqPad,因为它不涉及任何类型的安装 - http://www.linqpad.net/.

将以下代码作为"C#语句"运行:

System.Diagnostics.PerformanceCounterCategory.Delete("Name of category to delete");

我会运行两次,第一次执行实际删除,第二次获取错误消息以确认删除成功.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有