2008-09-26 2 views
22

사용자 지정 성능 카운터 범주가 있습니다. Visual Studio Server Explorer는 '등록되지 않았거나 시스템 범주가 아닙니다'라고 주장하면서 삭제를 거부합니다. 프로그래밍 방식으로 수행하는 것보다 짧지 만 카테고리를 삭제하려면 어떻게해야합니까? 삭제할 수있는 레지스트리 키가 있습니까?Windows 성능 카운터 범주 삭제

답변

39

는 지금까지 내가 아는 한, 안전하게 (자신이 만든 설치 중에 제거 애플 리케이션위한 것), 프로그램을 제외하고 삭제하는 방법이 없지만 PowerShell 명령 줄 콘솔에서 할 간단하다. 그러나이

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

: 그냥이 명령을 실행 (EDIT)를

당신은 만들어지는 레지스트리 키를 삭제할 수 있으며, 그 범주가 사라지게 만들 것입니다. 라는 범주의

는 "재고"는 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory에서 모든 키를 삭제할 수 있습니다 ... 그리고 하지만 나는 그 모든 것을를 정리 내기 기꺼이되지 않을 것, 그것은 범주가 사라지게됩니다. (Delete() 메소드를 실행하는 동안 Process Monitor을 실행하면 다른 많은 활동이 일어날 수 있으며 변경 사항이없는 것으로 보입니다.).

원래이라고 말한대로 에주의해야합니다. Visual Studio에서이 오류가 발생하면 이미 삭제 되었기 때문에 VS에서보기를 새로 고침해야합니다. 필자는 테스트를 통해 응용 프로그램을 다시 시작해야만 실제로 사용 가능한 범주 목록을 얻을 수있었습니다.

당신이 열거 된 있는지 PowerShell을에서 카테고리의 전체 목록을 확인할 수 있습니다

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

을하지만 당신이 그들을 선택하면 다음 레지스트리 키를 삭제 ... 그들은 여전히까지 표시합니다 PowerShell을 다시 시작합니다 (다른 인스턴스를 시작하면 그 곳에서 같은 쿼리를 실행할 수 있지만 삭제 된 항목은 표시되지 않지만 첫 번째 인스턴스에서 GetCategories를 다시 실행하면 계속 표시됨)

그런데 패턴과 같이 -like를 사용하려면이 목록을 필터링하거나 전체 정규 표현식의 경우 :

를 사용하려면 해당 목록을 필터링 할 수 있습니다.
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -like "*network*" } | Format-Table -auto 
[Diagnostics.PerformanceCounterCategory]::GetCategories() | Where {$_.CategoryName -match "^SQL.*Stat.*" } | Format-Table -auto 
0

당신은 마이크로 소프트 리소스 키트 도구를 사용하여 비활성화 할 수 -

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

에서 설치하거나 수동으로 레지스트리에서 비활성화 (시도하지 않은)

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

여기에 설명
+0

\ 나는이에 대한 모든 카운터를 비활성화 생각 특정 서비스 ... "카테고리"를 제거하는 데 도움이되지 않습니다. – Jaykul

10

어떤 종류의 설치도 필요하지 않으므로 LinqPad를 사용할 수도 있습니다 - http://www.linqpad.net/.

는 "C#을 문 (들)"로 다음 코드를 실행

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

내가 두 번에 오류 메시지가 얻을 수있는 실제 삭제를 두 번 할 수있는 처음 실행 줄을 삭제가 성공적 이었는지 확인하십시오.

+0

굉장합니다. 빠르고 쉽게 제거 할 수 있습니다. – mwjackson

+0

함께 일하는 "시스템 관리자"가 자신의 서버에 PowerShell을 설치하는 데 방해가되지 않을 때 유용합니다 ... –

+0

LINQPad를 관리자로 실행해야만 작동합니다. 그렇지 않으면 작동하지 않습니다. 승인 된 "예외입니다. –

2

나는 오래된 경우이 문제를 알고 있지만 나는이 비 프로그래밍 방식으로 할 수있는 방법을 발견 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa372130%28v=vs.85%29.aspx

사용 UNLODCTR을 명령 프롬프트에서를, 당신은 또한 당신의 카테고리를 조회/Q를 LODCTR 사용해야 할 수도 있습니다.

또는 레지스트리 키 (삭제하지 않음) 수정하여 어려운 방법을 : 마이크로 소프트 \ 윈도우 NT를 \ CurrentVersion \ HKEY_LOCAL_MACHINE \ 소프트웨어를 \ Perflib는 009 http://msdn.microsoft.com/en-us/library/windows/desktop/aa373172%28v=vs.85%29.aspx