2008-09-26 16 views

Respuesta

39

Por lo que yo sé, no hay manera eliminar con seguridad ellos, excepto mediante programación (que están destinados a aplicaciones para crear y eliminar durante la instalación), pero es trivial para hacerlo desde una consola PowerShell de línea de comandos. Sólo tiene que ejecutar este comando:

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

Sin embargo: (EDIT)

Usted puede eliminar la clave de registro que se crea, y que va a hacer desaparecer la categoría.

Para una categoría denominada "Inventario" puede eliminar toda la clave en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory ... y aunque yo no estaría dispuesto a apostar que limpia todo, que se hacer desaparecer la categoría. (Si ejecuta Process Monitor mientras ejecuta el método Delete(), puede ver que puede haber muchas otras actividades sucediendo, y no parece haber ningún otro cambio realizado).

Es importante tener en cuenta que como dije originalmente: cuando obtiene ese error de Visual Studio, es posible que ya se haya eliminado y deba actualizar la vista en VS. En mis pruebas, tuve que reiniciar las aplicaciones para que realmente obtuvieran una lista clara de las categorías disponibles.

Puede consultar la lista completa de categorías de PowerShell para ver si aparece en la lista:

[Diagnostics.PerformanceCounterCategory]::GetCategories() | Format-Table -auto 

Pero si comprueba que, a continuación, elimine la clave de registro ... que todavía va a aparecer, hasta que se reinicie PowerShell (si inicia otra instancia, puede ejecutar la misma consulta allí, y NO mostrará el elemento eliminado, pero volver a ejecutar GetCategories en el primero seguirá mostrándolo.

Por cierto, usted puede filtrar esa lista si desea usar -like para patrones, o -match para expresiones regulares completas:

[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -like "*network*" } | Format-Table -auto 
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -match "^SQL.*Stat.*" } | Format-Table -auto 
0

Se puede desactivar mediante la herramienta Kit de recursos de Microsoft - instalarlo desde

http://download.microsoft.com/download/win2000platform/exctrlst/1.00.0.1/nt5/en-us/exctrlst_setup.exe

o desactivarlo desde el registro de forma manual (no lo he probado) descrito aquí

http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/94214.mspx?mfr=true

+0

Creo que esto desactiva todos los contadores de un servicio específico ... y no ayuda a deshacerse de una "categoría" – Jaykul

10

También podría usar LinqPad, ya que eso no implica una instalación de ningún tipo - http://www.linqpad.net/.

Ejecutar el siguiente código como "C# Declaración (s)":

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

había corrido dos veces, la primera vez para hacer el eliminar, por segunda vez real para obtener un mensaje de error confirmar que la eliminación fue exitosa.

+0

Impresionante. Rápido y fácilmente extraíble – mwjackson

+0

Útil cuando los "administradores de sistemas" con los que trabaja no pueden molestarse en instalar PowerShell en sus propios servidores ... –

+0

Encontré que tenía que ejecutar LINQPad como administrador para que esto funcione, de lo contrario obtuve un "no" excepción autorizada. –

2

Sé que esta pregunta si el viejo, pero me pareció una manera de hacer esto no programáticamente: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372130%28v=vs.85%29.aspx

Uso unlodctr del símbolo del sistema, es posible que también tenga que utilizar lodctr/q para consultar su categoría.

o hacerlo de la manera difícil mediante la modificación de la clave de registro (no lo borre): 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

Cuestiones relacionadas