Включить wmi в windows 8

Обновлено: 08.07.2024

Windows Management Instrumentation (WMI) в дословном переводе - это инструментарий управления Windows. Если говорить более развернуто, то WMI - это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows. Технология WMI - это расширенная и адаптированная под Windows реализация стандарта WBEM, принятого многими компаниями, в основе которого лежит идея создания универсального интерфейса мониторинга и управления различными системами и компонентами распределенной информационной среды предприятия с использованием объектно-ориентированных идеологий и протоколов HTML и XML.

В основе структуры данных в WBEM лежит Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы. CIM является расширяемой моделью, что позволяет программам, системам и драйверам добавлять в нее свои классы, объекты, методы и свойства.

WMI, основанный на CIM, также является открытой унифицированной системой интерфейсов доступа к любым параметрам операционной системы, устройствам и приложениям, которые функционируют в ней.

Важной особенностью WMI является то, что хранящиеся в нем объекты соответствуют динамическим ресурсам, то есть параметры этих ресурсов постоянно меняются, поэтому параметры таких объектов не хранятся постоянно, а создаются по запросу потребителя данных. Хранилище свойств объектов WMI называется репозиторием и расположено в системной папке операционной системы Windows:

Так как WMI построен по объектно-ориентированному принципу, то все данные операционной системы представлены в виде объектов и их свойств и методов.

Все классы группируются в пространства имен, которые иерархически упорядочены и логически связаны друг с другом по определенной технологии или области управления. В WMI имеется одно корневое пространство имен Root, которое в свою очередь имеет 4 подпространства: CIMv2, Default, Secutiry и WMI.

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

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

Каждому экземпляру класса можно обратиться по полному пути, который имеет следующую структуру:

Пример обращения к процессу с именем "Calc.exe", который запущен на локальной машине:

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

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

Каждый объект операционной системы имеет свое описание безопасности (SD) со своим списком доступа (ACL), в котором перечислены идентификаторы пользователей (SID) и их привилегии. Каждое пространство имен может иметь собственное SD со своим ACL, где пользователям могут быть назначены разрешения на чтение данных, выполнение методов, запись классов и данных и другие. Данные о дополнительных разрешениях хранятся в репозитории WMI. Отдельные классы из пространств имен не имеют собственных описаний безопасности, они наследуют их от своего пространства имен.

По умолчанию администратор компьютера имеет полные права на использование WMI, а остальные пользователи могут лишь вызывать методы, считывать данные и записывать в репозиторий экземпляры классов провайдеров WMI.

Для доступа к инфраструктуре WMI используется протокол DCOM, через который пользователь подключается к WMI. Чтобы определить, какие права будут у подключившегося пользователя, используется механизмы олицетворения и аутентификации протокола DCOM.

Уровни олицетворения могут принимать следующие значения:

Anonymous Анонимный WMI-объект не может получить информацию о пользователе - доступ по такому типу не предоставляется
Identify Идентификация WMI-объект запрашивает маркер доступа пользователя - доступ предоставляется только локально
Impersonate Олицетворение WMI-объект имеет такие же права, какие имеет пользователь - рекомендуемый уровень для выполнения команд на удаленном компьютере
Delegate Делегирование WMI-объект может обратиться от имени пользователя к другому WMI-объекту - нерекомендуемый уровень, так как команды можно выполнять удаленно через цепочку из нескольких компьютеров

Уровни аутентификации (подлинности) могут принимать следующие значения:

None Отсутствует Проверка подлинности отсутствует
Default По умолчанию Стандартные настройки безопасности, которые задаются компьютером-целью команды
Connect Подключение Проверка только во время подключения к компьютеру-цели команды, проверка в ходе работы отсутствует
Call Вызов Проверка подлинности при каждом запросе к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
Pkt Пакет Проверка подлинности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktIntegrity Целостность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки пакетов подписываются, но содержимое не шифруется
PktPrivacy Секретность пакета Проверка подлинности и целостности всех пакетов к компьютеру-цели команды, заголовки и содержимое пакетов подписываются и шифруются

wmimgmt.msc - оснастка консоли управления MMC для настройки WMI на локальном компьютере.

Administration via WMI - wmimgmt

winmgmt.exe - консольная утилита управления WMI локального компьютера.

Administration via WMI - winmgmt

wbemtest.exe - графическая утилита для взаимодействия со структурой WMI на локальном или удаленном компьютере.

Administration via WMI - wbemtest

Графическая утилита для взаимодействия со структурой WMI

wmic.exe - консольная утилита для взаимодействия со структурой WMI на локальном компьютере.

Administration via WMI - wmic

Консольная утилита для взаимодействия со структурой WMI

mofcomp.exe - компилятор MOF-файлов для расширения структуры WMI, управления библиотекой классов WMI и восстановления репозитория.

Administration via WMI - mofcomp

Для обращения к объектам WMI используется специфический язык запросов WMI Query Language (WQL), который является одним из разновидностей SQL. Основное его отличие от ANSI SQL - это невозможность изменения данных, то есть с помощью WQL возможна лишь выборка данных с помощью команды SELECT. Помимо ограничений на работу с объектами, WQL не поддерживает такие операторы как DISTINCT, JOIN, ORDER, GROUP, математические функции. Конструкции IS и NOT IS применяются только в сочетании с константой NULL.

Запросы WQL обычно применяются в скриптах, но их также можно протестировать в программе Wbemtest и в консольной утилите Wmic (утилита wmic не требует написания ключевого слова SELECT и полей выборки)

Общий синтаксис запроса WQL выглядит так:

Как видно из примеров, оператор FROM - это источник (класс), коллекцию экземпляров которого нужно получить, а оператор WHERE - это фильтр в запросе.

В скриптах для подключения к WMI используются два метода: с использованием локатора (SWbemLocator) и с использованием моникера (WinMgmts). Метод локатора позволяет установить соединие с пространством имен от имени определенной учетной записи. Метод моникера разрешает подключаться к WMI только от имени текущей учетной записи.

Использование этого метода необходимо, когда в сценарии нужно явно задать имя и пароль учетной записи для подключения к WMI. Объект SWbemLocator создается так:

Подключение к репозиторию WMI производится с помощью метода ConnectServer:

Безопасность объекта указывается с помощью свойства Security_, в котором указывается уровень олицетворения и привилегии.

Пример использования локатора:

Моникер - это строка, задающая путь к классу WMI, экземпляр которого должен быть создан. Моникер состоит из обязательного префикса "winmgmts:", необязательных настроек безопасности, необязательного пути к требуемому классу:

Пример использования моникера:

В результате подключения к WMI получается объект SWbemServices, который обладает определенными свойствами и методами. Наиболее часто используемые из них - это Get, ExecQuery, ExecMethod.

Метод Get используется для возвращения определения класса или экземпляра управляемого ресурса:

Пример использования метода Get:

Метод ExecQuery используется для выполнения запросов на языке WQL:

Пример использования метода ExecQuery:

Метод ExecMethod используется для выполнения метода указанного объекта:

Пример использования метода ExecMethod:

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

Аналогично синхронным методам WMI позволяет выполнять команды асинхронно, то есть не дожидаться результатов выполнения очередного запроса и продолжать работу сценария или программы. Названия таких асинхронных методов имеют окончание "Async", а работа с ними почти не отличается от обычных методов, но должны быть использованы два обязательных параметра: ссылка на специальный объект "слив событий" и контекстная информация объекта.

Объект "слива событий" (от английского "sink" - раковина) создается следующим образом:

Наиболее часто используемые события, обрабатываемые таким "сливом" асинхронных методов, - это OnObjectReady и OnCompleted. Как можно догадаться из названий событий, первое происходит, когда возвращается очередной объект, порожденный асинхронным запросом. Второе происходит после полного завершения асихронного метода. Событие OnObjectReady выдает на выход объект, который был запрошен асихронной операцией, а событие OnCompleted - код ошибки или 0.

Пример использования асинхронного метода:

Работа с объектами и коллекциями объектов, полученных в результате запросов

Рассмотренные выше методы возвращают объекты и коллекции объектов, которые обладают своими методами и свойствами. Информацию о всех свойствах и методах, поддерживаемых конкретным объектом, можно получить с помощью такого скрипта:

Коллекция объектов всегда обладает общими для всех экземпляров свойствами, наиболее часто используемые свойства - это Count и Item.

Count - это свойство коллекции объекта, которое содержит количество элементов коллекции.

Item(mObjectPath) - это метод, который возвращает один объект коллекции, соответствующий указанному пути.

Как уже выяснилось, объект имеет свои методы и свойства, которые соответствуют классу данного экземпляра, но помимо классовых свойств и методов всем объектам присущи универсальные, которые оканчиваются на символ подчеркивания, чтобы отличать их от классовых. Наиболее часто используемые универсальные методы - это ExecMethod_ и Put_.

ExecMethod_(mMethod, mWbemInParamsm, mFlags, mWbemNamedValueSet) - это метод для исполнения классового метода у используемого объекта.

Put_(mFlags, mWbemNamedValueSet) - это метод для записи измененных свойств объекта в репозиторий WMI и в реальный объект.

Пример использования метода Put_ - изменение метки диска:

Пример использование класса CIM_DataFile для переименования файлов:

Аналогично приведенному примеру можно совершать и другие действия с файлами, так как класс CIM_DataFile поддерживает методы: копирование, удаление, переименование, NTFS-сжатие, смена разрешений, смена владельца.

Пример использования классов оборудования компьютера для получения информации о количестве портов USB 2.0 и используемых USB-устройствах:

Пример использования класса свойств принтеров для получения информации о настройках принтеров:

Пример использования класса свойств сетевого адаптера для изменения конфигурации сетевой карты - перевода с DHCP на статическую конфигурацию:

Ресурсы WMI доступны не только через скрипты, к ним можно обращаться из других языков программирования и даже из программ.

Первый способ берет свое начало из скриптов VBS. Он использует обращение к инстументу winmgmts, как это делалось в методе моникера:

Пример запроса модели комьютера (консольное приложение)

Второй способ является более правильным с точки зрения Visual Studio. Он использует классSystem.Managementдля запросов к WMI, в котором указываются пространство WMI, параметры подключения и WQL запрос:

Использование полученных объектов аналогично использованию в скриптах.

Пример запроса сервисов локального комьютера (консольное приложение):

Приложение разделено на две части: класс, который компилируется в динамическую библиотеку DLL, и программа, которая собирается в исполняемый файл EXE.

Листинг файла WMIClass.vb:

Листинг файла TestModule.vb:

Использование специальных средств для написания запросов

Для того, чтобы облегчить написание скриптов и программ, существуют специальные утилиты, которые помогают просмотреть структуру пространства WMI и показавают примеры использования всех классов. Наиболее распространенные утилиты - это Scriptomatic и WMI Code Creator.

Инструмент Scriptomatic предствляет из себя HTA-приложение, которое генерирует код, использующий WMI, на VBSScript, JScript, Perl и Python. Сам по себе WMI может оказаться трудным для изучения, поэтому рекомендуется использовать Scriptomatic для освоения классов WMI, а также для быстрого создания шаблонов обращения к ресерсум WMI. Scriptomatic позволяет выбрать интересующий объект WMI, а затем генерирует код на указанном языке программирования. Полученный код можно выполнить непосредственно в оболочке программы, а результаты вывести в консоль, текстовый файл, HTML, Excel или XML. Инструмент доступен на сайте Microsoft по этой ссылке.

Administration via WMI - wmiscriptomatic

Administration via WMI - wmiscriptomatic

Программа WMI Code Creator представляет из себя генератор кода, который использует WMI для получения информации и для осуществления задач упраления компьютерами. Программа может помочь научиться использовать WMI-скрипты и WMI-приложения для управления как локальным, так и удаленным компьютером. Инструмент доступен на сайте Microsoft по этой ссылке.

Используя WMI Code Creator можно найти любую информацию о компьютере: имя и версия операционной системы, свободное место на диске, состояние сервисов и так далее. Можно выполнить метод из WMI класса для осуществления управления компьютером: создать или удалить сервис, запустить или закрыть программы, назначить разрешения на папку или файл и многое другое. Этот инструмент так же позволяет просматривать доступное WMI-пространство и WMI-классы, чтобы найти нужную для программирования инстанцию с ее описанием, свойствами, методами и примером использования.

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Administration via WMI - wmicodecreator

Итак, Windows Management Instrumentation - это мощный инструмент для администрирования операционных систем семейства Windows с помощью скриптов. С помощью WMI можно управлять устройствами, учетными записями, сервисами, процессами, сетевыми интерфейсами и другими программами, которые расширяют базовую структуру WMI своими классами.

Помимо скриптов WMI может применяться и в полноценных программах, то есть программисты могут внедрять запросы к WMI в исполняемый код, завязывая свою программу с работой WMI, благодаря чему программа становится проще и легче, но зависимой от правильности работы Windows Management Instrumentation.

Столкнулся с неожиданными трудностями при удаленных подключениях к Windows по WMI. Постоянно получал "ОШИБКА. Описание: Отказано в доступе. Код ошибки: 80070005" При этом все учетные данные, настройки firewall и т.д. были на 100% верны. Где-то сразу все работало, как надо, а где-то ни в какую не получалось удаленно подключиться к Windows 10 по WMI.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

WMI - Windows Management Instrumentation, инструмент для управления Windows. В том числе поддерживает удаленную работу. С его помощью, к примеру, удобно мониторить Windows системы. Так как WMI встроен в саму систему, нет необходимости ставить что-то дополнительно. Базовые метрики можно собирать сразу же.

Для работы по WMI используется свой язык запросов WMI Query Language (WQL), который немного похож на SQL, так как является его разновидностью. Пример работы с WMI можно посмотреть прямо в командной строке Windows:

Простой WMI запрос

Вы получите информацию в байтах о доступной оперативной памяти компьютера.

Ошибка WMI 80070005 Отказано в доступе

Запросы по WMI можно делать по сети. Выглядит это примерно следующим образом:

win10-kvm\zerox учетная запись на целевом компьютере в формате домен или имя компьютера и сам пользователь
10.20.1.53 адрес компьютера в виде ip или имени

Ошибка WMI 80070005 Отказано в доступе

Разрешение удаленных вызовов по WMI

Первым делом вам надо локально убедиться, что WMI в принципе работает. Выше я уже показал пример с оперативной памятью. Так что прежде чем настраивать удаленные запросы, проверьте, работает ли все локально.

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

Просмотр типа сети в windows

Вам необходимо сменить тип сети на Частная. Для этого идем в Параметры -> Сеть и Интернет -> Состояние. Открываем свойства сетевого соединения.

Свойства сетевого подключения

Выбираете сетевой профиль - Частные.

Изменение сетевого профиля на частный

Должно получиться в итоге вот так:

Частная сеть в панели управления

В разных версиях Windows 10 изменение типа сети с общедоступной на частную выглядит по-разному. Даже сейчас, проверяя статью, я в двух разных системах вижу 2 разных способа. Пункты меню в Параметрах постоянно меняются. Каждый раз как Коломбо вынужден искать новое расположение старых настроек. Ума не приложу, зачем Microsoft это делает. Вот так меняется тип сети в одной из других версий:

Windows 10, изменение типа сети с общедоступной на частную

После того, как изменили профиль сети на частный, открывайте командную строку с правами администратора и выполните в ней команду:

Настройка удаленного запуска WMI

На все заданные вопросы отвечайте положительно. Если до этого тип сети не изменили, то данная команда отработает с ошибкой: Исключение брандмауэра WinRM не будет работать, поскольку одно из сетевых подключений, установленных для этого компьютера, является общим. Измените тип сетевого подключения либо на доменное, либо на частное и повторите попытку.

Измените тип сетевого подключения либо на доменное, либо на частное и повторите попытку.

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

Пример удаленного запроса WMI по сети

Заключение

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

WMI Provider Host процесс является важной частью Windows и часто работает в фоновом режиме. Это позволяет другим приложениям на Вашем компьютере запрашивать информацию о Вашей системе. Этот процесс обычно не должен использовать много системных ресурсов, но он может использовать много CPU, если другой процесс в Вашей системе ведет себя плохо.

Что такое WMI Provider Host

«WMI» означает «Инструмент управления Windows». Это функция Windows, которая предоставляет стандартизованный способ для программного и административного скриптов запрашивать информацию о состоянии Вашей операционной системы Windows и данных на нем. «WMI Providers» предоставляют эту информацию по запросу. Например, программное обеспечение или команды могут находить информацию о состоянии шифрования диска BitLocker, просматривать записи из журнала событий или запрашивать данные из установленных приложений, которые включают поставщика WMI. На веб-сайте Microsoft есть список включенных поставщиков WMI .

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

Вы также можете сами использовать WMI, чтобы найти множество полезных фрагментов информации, которые обычно не отображаются в интерфейсе Windows на Вашем ПК. Например, найти номер модели Вашей материнской платы или просто посмотреть состояние здоровья SMART на жестком диске.

Почему он использует так много процессора?

WMI Provider Host обычно не должен использовать много CPU, поскольку он обычно не должен делать ничего. Иногда он может использовать немного процессора, когда другая часть программного обеспечения или скрипта на Вашем ПК запрашивает информацию через WMI, и это нормально. Высокое использование ЦП, скорее всего, является признаком того, что другое приложение запрашивает данные через WMI.

Тем не менее, длительное использование большого количества CPU является признаком того, что что-то не так. Поставщик провайдера WMI не должен постоянно использовать большое количество ресурсов ЦП.

Перезапуск службы WMI может помочь, если он застрял в плохом состоянии. Вы также можете просто перезагрузить компьютер, но есть способ перезапустить службу без перезагрузки компьютера. Для этого откройте меню «Пуск», введите «Services.msc» и нажмите «Enter», чтобы запустить инструмент «Службы».

Найдите в списке «Инструментарий управления Windows», нажмите на него правой кнопкой мыши и выберите «Перезапустить».

На компьютере под управлением Windows 10 перестала работать WMI .
Никакие скрипты, раньше нормально работавшие, теперь не функционируют. Диапазон возвращаемых ошибок достаточно велик: 0x80041XXX, 0x800420XX, 0x700310XX (“Инициализация класса WMI невозможна”, “Вызов WMI запрещен”, “WMI вернул некорректный ответ”, "Ошибка в файле WMI.MOF" и так далее).


7,648 4 4 золотых знака 19 19 серебряных знаков 57 57 бронзовых знаков

Я столкнулся с этой ситуацией на днях: мои студенты тестировали управление системными функциями и две машины в домене (на обеих – 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 ), например, такой: (вы можете выполнить другой, свой любимый :))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: