カスタム パフォーマンス カウンター カテゴリがあります。Visual Studio サーバー エクスプローラーは、「登録されていないか、システム カテゴリである」と主張して、削除を拒否します。プログラムで行う以外に、どうすればカテゴリを削除できますか? 削除できるレジストリ キーはありますか?
4 に答える
私の知る限り、プログラムを使用する以外にそれらを安全に削除する方法はありません(インストール中にアプリが作成および削除することを目的としています) が、 PowerShellコマンドライン コンソールから行うのは簡単です。次のコマンドを実行するだけです。
[Diagnostics.PerformanceCounterCategory]::Delete( "Your Category Name" )
ただし:(編集)
作成されたレジストリ キーを削除すると、カテゴリが消え ます。
「Inventory」というカテゴリの場合、キー全体を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
http://www.linqpad.net/などのインストールを必要としないため、LinqPad を使用することもできます。
次のコードを「C# ステートメント」として実行します。
System.Diagnostics.PerformanceCounterCategory.Delete("Name of category to delete");
1 回目は実際の削除を行い、2 回目は削除が成功したことを確認するエラー メッセージを表示します。
古い場合はこの質問を知っていますが、プログラムを使用せずにこれを行う方法を見つけました: 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
Microsoftリソースキットツールを使用して無効にすることができます-からインストールします
またはレジストリから手動で無効にします(試していません)ここで説明されています
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/94214.mspx?mfr=true