Проблема с виджетами в Windows 7.

На прошлой недели столкнулся с проблемой в 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. Как только он был удален из галлерии проблема исчезла.

А ведь в прошлые времена легче было снести систему. Но теперь гораздо интереснее отлавливать проблемы. Чувствуешь себя детективом.