На прошлой недели столкнулся с проблемой в Windows 7. Проблема заключалась в службе WMI Provider Host и в частности в файле wmiprvse.exe которые загружали процессор на 40-70% постоянно. Выключения процесса не помогло, как и все мне знакомые способы. За помощью обратился на форум oszone.net и тут началась эппопея борьбы.
Для начала стоило выяснить система это или стороние процессы это вызывают. Тут порядок действий простой:
- загружаемся в безопасном режиме и если проблемы сохраняется значит дело в системе. У меня же проблема исчезла.
- Запускаем msconfig и отключаем все на вкладке автозагрузка и службы. Примерно как на скриншотах. На вкладке службы стоит поставить галку «НЕ показывать службы Microsoft»


- После этого загружаемся в обычном режиме. И если проблемы нет, то стоит включать по очереди смотреть что вызывает. Тем самым можно выявить проказника. Мне это не помогло и тогда по совету пришлось сделать трабшутинг именно для сервиса WMI. Он описан здесь http://blogs.msdn.com/wmi/archive/2009/05/27/is-wmiprvse-a-real-villain.aspx
Я приведу здесь перевод на русский язык. Дабы показать как выявлять.
Что бы выявить процесс который запрашивает данные у сервиса WMI понадобиться включить журнал для него. Для этого идем в Панель Управления \ Администрирование \ Просмотр Событий (Control Panel\System and Security\Administrative Tools\Event Viewer). Во вкладки вид включить пункт «Отобразить аналитические и отладочные журналы».
Затем выбираем необходимый нам журнал который находится в Журналы приложений и служб -> Microsoft -> Windows -> WMI-Activity. Щелкаем правой кнопкой по Trace и выбираем Включить журнал или свойства и там установить галку «Включить ведение журнала».
Далее переходим в этот журнал и наблюдаем за элементами его. В свойствах действия на вкладке общие приведено может примерно такое
GroupOperationId = 732; OperationId = 40435; Operation = Start IWbemServices::ExecQuery – SELECT LastBootUpTime FROM Win32_OperatingSystem; ClientMachine = User-ПК; User = User-ПК\User; ClientProcessId = 3892; NamespaceName = \\.\root\CIMV2
Для нас ключевое значение принимает параметр ClientProcessId. Именно по нему мы можем узнать какой процесс требует к себе ресурсы. Для этого запускам Диспетчер задач -> Вкладка процессы, но сначала нужно включить отображение ID процесса Вид -> Выбрать столбцы и устанавливаем галку напротив ID процесса (PID).
Далее мы сравниваем ID процесса с ClientProcessId и находим нужный. В моем случае был sidebar.exe, который явно указывает на Боковую панель и гаджеты. Далее простым методом исключения гаджетов выяснилось что проблемой был виджет под названием IP Config. Как только он был удален из галлерии проблема исчезла.
А ведь в прошлые времена легче было снести систему. Но теперь гораздо интереснее отлавливать проблемы. Чувствуешь себя детективом.



