Удаление категорий счетчиков производительности Windows

StackOverflow https://stackoverflow.com/questions/140149

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня есть настраиваемая категория счетчика производительности.Visual Studio Server Explorer отказывается удалять его, утверждая, что он «не зарегистрирован и не относится к системной категории».Если не делать этого программно, как я могу удалить категорию?Есть ли ключ реестра, который я могу удалить?

Это было полезно?

Решение

Насколько я знаю, там это никоим образом безопасно удалить их, кроме как программно (они предназначены для создания и удаления приложений во время установки), но это тривиально сделать из PowerShell консоль командной строки.Просто запустите эту команду:

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

ОДНАКО:(РЕДАКТИРОВАТЬ)

Ты может удалите созданный раздел реестра, и категория исчезнет.

Для категории «Инвентарь» вы можете удалить весь ключ по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Inventory ...и хотя Я бы не готов поспорить, что это все очистит., это воля заставить категорию исчезнуть.(Если вы запустите Монитор процессов при запуске метода 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

Другие советы

Вы также можете использовать 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\009http://msdn.microsoft.com/en-us/library/windows/desktop/aa373172%28v=vs.85%29.aspx

Вы можете отключить его с помощью инструмента Microsoft Resource Kit — установите его из

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top