【发布时间】:2010-09-13 11:59:28
【问题描述】:
我有一个自定义性能计数器类别。 Visual Studio Server Explorer 拒绝删除它,声称它“未注册或系统类别”。如果没有以编程方式进行,我该如何删除该类别?有可以删除的注册表项吗?
【问题讨论】:
标签: windows performancecounter
我有一个自定义性能计数器类别。 Visual Studio Server Explorer 拒绝删除它,声称它“未注册或系统类别”。如果没有以编程方式进行,我该如何删除该类别?有可以删除的注册表项吗?
【问题讨论】:
标签: windows performancecounter
据我所知,除了以编程方式之外,没有办法安全地删除它们(它们是供应用程序在安装过程中创建和删除的),但从 @987654321 中删除它们是微不足道的@ 命令行控制台。只需运行以下命令:
[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
【讨论】:
您可以使用 microsoft 资源工具包工具禁用它 - 从
安装它或在此处描述的手动从注册表中禁用它(未尝试过)
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/94214.mspx?mfr=true
【讨论】:
您也可以使用 LinqPad,因为这不涉及任何类型的安装 - http://www.linqpad.net/。
将以下代码作为“C# 语句”运行:
System.Diagnostics.PerformanceCounterCategory.Delete("Name of category to delete");
我会运行它两次,第一次执行实际删除,第二次收到错误消息以确认删除成功。
【讨论】:
我知道这个问题如果老了,但我找到了一种非编程方式来解决这个问题: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372130%28v=vs.85%29.aspx
在命令提示符下使用 unlodctr,您可能还需要使用 lodctr /q 来查询您的类别。
或者通过修改注册表项(不要删除它)来做这件事: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009 http://msdn.microsoft.com/en-us/library/windows/desktop/aa373172%28v=vs.85%29.aspx
【讨论】: