Насколько я знаю, не может безопасно их удалить, кроме как программно (они предназначены для приложений, которые создаются и удаляются во время установки), но это просто сделать из Консоль командной строки PowerShell . Просто запустите эту команду:
[Diagnostics.PerformanceCounterCategory]::Delete( "Your Category Name" )
ОДНАКО: (РЕДАКТИРОВАТЬ)
Вы можете удалить созданный раздел реестра, что приведет к исчезновению категории.
Для категории «Инвентаризация» вы можете удалить весь ключ на HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory
... и, хотя я бы не хотел ставить, что все очищает , он будет , чтобы категория исчезла. (Если вы запустите Process Monitor во время выполнения метода Delete (), вы увидите, что может произойти много других действий, и никаких других изменений не произошло) .
Важно отметить, что , как я говорил ранее : когда вы получаете эту ошибку из 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