Как исправить темы Wmi из источников ошибок Windows – Omg Windows

Восстановление работы windows management instrumentation (wmi) после фатального сбоя

Я столкнулся с этой ситуацией на днях: мои студенты тестировали управление системными функциями и две машины в домене (на обеих – Windows 10) стали возвращать ошибки при работе с Windows Management Instrumentation. Основной админ ещё не вышел из отпуска, пришлось вспоминать, что я бывший руководитель Отдела ИТ 🙂

Сразу отвечу на третий вопрос: без рабочего WMI, на мой взгляд, можно оставлять лишь домашний игровой компьютер, на котором, кроме игр и просмотра видео, больше ничего не делается (разве что дети учатся программировать). В остальных случаях, особенно на корпоративных машинах, тем более в домене, WMI должна работать как часы. Это моё мнение, кто-то может не согласиться.

Теперь о причинах произошедшего: их может быть очень много. Забегая вперед, скажу что на одной машине это произошло из-за того, что на жестком диске закончилось место, а затем был сбой по питанию из-за сломанного ИБП (увы, никто не застрахован; сервера, конечно, защищены от подобного, а обычная рабочая машинка не была). На второй хуже: нефатальный сбой жесткого диска с последующим BSOD. В целом, разобраться с причинами не так уж и важно, главное, выяснить, что причиной не является вирус или попытка взлома. Впрочем, намеренное удаление или случайная порча системных файлов тоже должны быть рассмотрены достаточно пристально.

Восстановление работоспособности WMI следует проводить поэтапно, от щадящих методов к деструктивным. Следует быть готовым к тому, что в самом худшем случае систему придётся переустановить. Не стоит лишний раз напоминать, что большинство команд должно выполняться от имени администратора.

1 этап. Проверка работы сервиса.

Проверяем имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она. Вызываем Службы (в Windows 10 проще всего через Пуск/Средства администрирования/Службы, но я предпочитаю в любой версии Windows, кроме самых старых, напечатать в командной строке services.msc), ищем Инструментарий управления Windows/Windows Management Instrumentation, проверяем, запущена ли она:

введите сюда описание изображения

Если она не запущена, пытаемся запустить, выставим режим запуска в «Автоматически». Если запущена, пытаемся перезапустить (Остановить/запустить). После этого проверяем работоспособность WMI. Проще всего сделать это, выполнив любой WMI-запрос в powershell (напоминаю, что powershell в Windows 10 запускается через Пуск/Windows PowerShell/Windows Power Shell, но проще, на мой взгляд, запустить командную строку с админовскими правами, а в ней уже набрать powershell), например, такой: (вы можете выполнить другой, свой любимый :))

Get-WmiObject -List -ComputerName localhost

Если у вас вылетела портянка объектов, всё в порядке. Если же полезли ошибки, значит, работоспособность не восстановлена, переходим ко второму этапу.

Между делом скажу пару слов об официальной утилите Microsoft WMI Diagnosis. Все почему-то наперебой её рекомендуют, как хороший помощник при восстановлении. Увы, я убил достаточно много времени на анализ результатов действия этой утилиты: скрипт создал кучу лог-файлов, через которые продраться можно, если вы никуда не торопитесь, у вас есть куча времени и полкило пуэра/кофе-машина. В причинах сбоев я разобрался быстрее без неё. Вероятность того, что она может помочь непосредственно в скором восстановлении работы WMI – очень мала.

2 этап. Недеструктивное восстановление

Стоит попытаться вначале выполнить перерегистрацию библиотек и рекомпиляцию файлов расширения свойств объектов (Managed Object Format, MOF) и языковую составляющую этих файлов (MFL). Практически гарантированно сработает, если попытка WMI-запроса у вас вызывала ошибку вида “Ошибка в файле WMI.MOF” или любом другом MOF-файле. Для этого выполним следующие операции:

  1. Остановим службу WMI, обязательно запретив её автостарт
  2. Перерегистрируем все библиотеки в папке Windowssystem32wbem
  3. Перерегистрируем службы WMI и WMI Provider Host
  4. Запускаем службу WMI и разрешаем её автостарт
  5. Рекомпилируем MOF и MFL файлы

Можно собрать всё это в один BAT-файл и запустить:

# пункт 1
sc config winmgmt start= disabled
net stop winmgmt
# пункт 2
cd %windir%system32wbem
for /f %%s in ('dir /b *.dll') do regsvr32 /s %%s
#пункт 3
wmiprvse /regserver
winmgmt /regserver
#пункт 4
sc config winmgmt start= auto
net start winmgmt
#пункт 5
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s

Отмечу, что таким образом я восстановил работу WMI на первой машине. Со второй, увы не получилось. Если у вас не получается, пора переходить к 3му этапу

3 этап. Деструктивное восстановление

Фактически, на 3м этапе мы пересоздаем хранилище WMI, как таковое, которое находится в папке WindowsSystem32WbemRepository и является базой данных, в которой хранятся данные и определения стандартных WMI-классов и статическая информация дополнительных WMI-классов, если они создавались на вашей машине.

Перед операциями проверьте состояние жёсткого диска и файловой системы!!!

Проверяем целостность (На Windows XP и ниже не работает):

winmgmt /verifyrepository

В случае ответа отличного от “База данных WMI согласована”, можно выполнить «мягкое восстановление» командой:

winmgmt /salvagerepository

с последующим перезапуском службы:

net stop Winmgmt
net start Winmgmt

Если мягкое восстановление не помогло, пробуем вернуть хранилище в начальное состояние (последствия: все дополнительные классы WMI, когда-либо зарегистрированные в вашей системе, скорее всего, придётся регистрировать заново):

winmgmt /resetrepository

с последующим рестартом системы. Отмечу, что вторая машина заработала после этого этапа. Последствия были не сильно удручающими, но серьёзными: пришлось переинсталлировать Visual Studio и Delphi Starter, MS Office отказался работать и его пришлось деинсталлировать вручную, удаляя папки, файлы и записи из реестра, с последующей повторной установкой. Также слетели все наши собственные классы WMI.

Но, если и это не помогло, придётся удалять и создавать хранилище заново. Это можно сделать следующим BAT-файлом:

# Остановим службу WMI, обязательно запретив её автостарт
sc config winmgmt start= disabled
net stop winmgmt
# проводим реинициализацию WMI
cd %windir%system32wbem
winmgmt /kill
winmgmt /unregserver
winmgmt /regserver
winmgmt /resyncperf
# создаем на всякий случай резервную копию нашего хранилища в папку WMI_VicoNT_Backup
# у вас, разумеется, может быть другое имя папки
if exist WMI_VicoNT_Backup rd WMI_VicoNT_Backup /s /q
rename Repository Repos_bakup
# воссоздаем хранилище
regsvr32 /s %systemroot%system32scecli.dll
regsvr32 /s %systemroot%system32userenv.dll
for /f %%s in ('dir /b *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
# запускаем службу WMI, заново регистрируем WMI Provider Host
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver

Перегружаем компьютер. Если и после этих действий WMI не заработала, путь один – переустановка системы.

Детали отображения события

Имя протокола — Приложение Источник — WMI Идентификатор события — десять Уровень — Ошибка Пользователь — Н/Д Код операции — Информация Cat Task — Нет Ключевые слова — Классический Детали — Фильтр событий вместе с «SELECT * FROM __InstanceModificationEvent IN 60mph O TargetInstance ISA» Win32_Processor «AND TargetInstance.

LoadPercentage> 99â € ³ не может оставаться повторно -enabled inset â € œ // пространство имен. / root / CIMV2 â € из-за проблемы 0x80041003. О событиях, которые невозможно транслировать через такое, позаботьтесь, пока проблема не будет явно компенсирована.

Дополнительная информация

Это указанное выше тестовое сообщение об ошибке с кодом события 10 можно смело игнорировать. На самом деле это не означает проблемы с магазином услуг или работой кабельной коробки.

  • Статья
  • 2 минуты на осмысление.
  • Могут быть другие приложения для сообщений об ошибках с идентификатором события 10. Этот обходной путь предотвращает только нашу собственную ошибку сообщения выше.

    Если вы устранили несоответствие на своем компьютере, и вы видите ошибку на своем экране, специальный журнал просмотра событий приложений Windows в отношении одной из наших служб WMI, расположенных в Windows 7, вот правильное решение для вас. . р>

    Исключение

    Автоматизированный метод 1: Возможность решить эту проблему автоматизирована с помощью какой-либо функциональной утилиты Microsoft Fixit, специально созданной для обработки этого сообщения об ошибке. Это Microsoft Fix It 50688.

    Просто загрузите это в свой приват и пройдите процедуру установки. Когда компьютер перезагрузится, вы увидите, и каждый раз будет появляться другая запись в журнале для использования службы WMI. Если реальных багов вообще просто нет, то этот удивительный метод — устаревшая проблема.

    Ручной метод: Если приложение не аварийно завершает работу или оно является просто руководством, вы вполне можете обратиться к этому методу.

    Откройте Блокнот и смоделируйте важный сценарий в пустом страховом плане. Когда вы закончите, сохраните бренд как Workaround.vbs.

    Определить objWMIService. = GetObject («winmgmts:» _ & «impersonationLevel = impersonate! » _ & strComputer & «rootsubscription»)

    Установить для obj1 значение objWMIService.ExecQuery («выбрать из __eventfilter, где специально name= ‘BVTFilter’ query = ‘SELECT and (blank) FROM __InstanceModificationEvent INSIDE 60 WHERE TargetInstance ISA «» Win32_Processor «» AND TargetInstance.LoadPercentage 99’ «)

    Для> каждого объекта в obj1

    установить вместо obj2set = obj1elem.Associators _ («__ FilterToConsumerBinding»)

    установить obj3set на obj1elem.References _ («__ FilterToConsumerBinding»)

    Для каждого объекта obj2 в obj2set

    Причина

    Эта проблема вызвана процессом создания DVD/ISO с пакетом обновления 1 (SP1) для Windows 7. Возникла проблема с процессом формирования, из-за которой реестр компьютера WMI сохранялся на всем DVD/ISO. Так как запись идет только во время работы с DVD/ISO, авторинг не может быть выполнен на хорошо работающей системе и вызывает эти бедствия.

    Эти важные события на самом деле не являются проблемой для автомобиля, и их можно смело игнорировать. Если вы действительно хотите предотвратить возникновение этих инцидентов и хотите самостоятельно удалить тип конкретной записи WMI, обычно запускайте сценарий.

    Разрешение

    Чтобы решить вашу конкретную проблему, запустите какой-нибудь сценарий для отображения сообщений об остановке, предназначенных для события с идентификатором 10. Выполните следующие способы запуска сценария:

  • В редакторе создайте обновляющийся документ с именем Workaround.txt.

  • Оцените статью
    OverComp.ru