Любой бывалый Windows-админ периодически сталкивается с проблемами в работе службы WMI (Windows Management Instrumentation) и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования Windows, поэтому администратору необходимо проверить и восстановить работоспособность WMI. В этой статье мы опишем простую методику диагностирования и устранения неполадок службы WMI в Windows.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений (
0x80041002 - WBEM_E_NOT_FOUND
,
WMI: Not Found
,
0x80041010 WBEM_E_INVALID_CLASS
); - Ошибки обработки GPO, связанные на WMI ( некорректная работа wmi фильтров групповых политик, и пр.);
- WMI запросы выполняются очень медленно;
- Ошибки при установке или работе агентов SCCM/SCOM;
- Ошибки в работе скриптов (vbs или PowerShell), использующих пространство имен WMI (скрипты с Get-WmiObject и т.д.).
Содержание:
- Диагностика проблем с WMI
- Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов
- Сброс и пересоздание WMI репозитория (хранилища)
Диагностика проблем с WMI
В первую очередь нужно проверить служба Windows Management Instrumentation (Winmgmt) установлена в Windows и запущена. Вы можете проверить состояние службы в консоли services.msc или с помощью PowerShell:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
Если служба Winmgmt запущена, вы можете проверить работоспособность WMI, обратившись к ней с помощью простого WMI-запроса. Вы можете выполнить wmi запрос из командной строки или из PowerShell. Например, следующая команда выведет список установленных в Windows программ:
wmic product get name,version
Простейшая PowerShell команда для получения информации о версии и билда Windows 10 через WMI может выглядеть так:
get-wmiobject Win32_OperatingSystem
Как вы видите, служба WMI ответила на запрос корректно. Если при выполнении такого WMI-запроса Windows возвращает ошибку, скорее всего сервиса WMI работает некорректно, поврежден WMI репозиторий или есть какие-то другие проблемы.
В моем случае, например, при открытии свойств WMI Control в консоли управления компьютером (compmgmt.msc) появлялась надпись:
Failed to initialize all required WMI classes Win32_Processor. WMI: Invalid namespace Win32_WMISetting. WMI: Invalid namespace Win32_OperationSystem. WMI: Invalid namespace
Ранее для диагностики WMI существовала официальная утилита от Microsoft – WMIDiag.vbs (Microsoft WMI Diagnosis). WMIdiag это vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:USERS%USERNAME%APPDATALOCALTEMP). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.2 и включает в себя следующие типы фалов:
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag;
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание;
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI.
Совет. В 64 битных версиях Windows wmidiag нужно запускать так:
c:windowsSystem32cscript.exe wmidiag.vbs
в противном случае появится ошибка:
WMIDiag must be run from native 64-bit environment. It is not supported in Wow64.
После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.
К сожалению, последняя версия WMIDiag 2.2 корректно работает только с версиями до Windows 8.1/Windows Server 2012 R2. На данный момент Microsoft даже удалила ссылку на загрузку WMIDiag из Download Center. Но при желании, этот скрипт можно найти в сети.
WMIDiag может дать подробную информацию по исправлению частных ошибок в WMI, но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей сбросить и пересоздатьWMI репозиторий в Windows.
Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов
В Windows 10/Windows Server 2016 вы можете проверить целостность репозитория WMI с помощью команды:
winmgmt /verifyrepository
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT или WMI repository verification failed), стоит попробовать выполнить “мягкое” исправление ошибок репозитория:
Winmgmt /salvagerepository
WMI repository has been salvaged.
Данная команда выполняет проверку согласованности хранилища WMI и при обнаружении несогласованности перестраивает базу данных WMI.
Перезапустите службу WMI:
net stop Winmgmt
net start Winmgmt
Если стандартный способ исправления ошибок в WMI не помог, попробуйте следующий скрипт. Данный скрипт представляет собой ”мягкий” вариант восстановления службы WMI на компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%system32wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
На 64 битной версии Windows эти действия нужно также выполнить для каталога SysWOW64. Замените третью строку на
cd %windir%SysWOW64wbem
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле wmi_soft_repair.bat и запустить его с правами администратора. После окончания работы скрипта, перезагрузите Windows и проверьте работу WMI.
Сброс и пересоздание WMI репозитория (хранилища)
Если вам не помогли мягкие способ восстановления WMI, рассмотренные выше, придется перейти к более “жесткому” способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилищаWMI.
WMI репозиторий (хранилище) находится в каталоге
%windir%System32WbemRepository
и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях WMI репозиторий может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
Если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание — это последняя шаг, к которому нужно прибегнуть только тогда, когда другие операции не помогают реанимировать WMI.
Следующая команда выполнит сброс базы данных WMI к исходному состоянию (как после чистой установки Windows). Используйте эту команду для выполнения hard reset репозитория WMI, если параметре salvagerepository не исправил проблему:
Winmgmt /resetrepository
Совет. На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Это связано с тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такие программы скорее всего, придется переустанавливать в режиме восстановления.
Если обе команды (
Winmgmt /salvagerepository
и
Winmgmt /resetrepository
) не восстановили консистентное состояние базы WMI, попробуйте выполнить “жесткое” пересоздание базы WMI вручную таким скриптом:
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%system32wbem
winmgmt /resetrepository
winmgmt /resyncperf
if exist Repos_bakup rd Repos_bakup /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
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver
На 64 битной версии Windows нужно также перерегистрировать dll/exe и перекомпилировать mof файлы в каталоге %windir%sysWOW64wbem.
Данный скрипт полностью пересоздает хранилище WMI (старый репозиторий сохраняется в каталог Repos_bakup). После окончания работы скрипта нужно перезагрузить Windows. Затем протестируйте работу службы WMI простым запросом.
Проверьте состояние WMI репозитория. Если ошибки исправлены, команда
winmgmt /verifyrepository
должна вернуть:
WMI repository is consistent
В этой статье мы собрали основные способы, позволяющие продиагностировать и устранить неполадки службы и репозитория WMI.
Рубрика: Администрирование / Продукты и решения |
Мой мир Вконтакте Одноклассники Google+ |
Константин Леонтьев
Узнай секреты WMI: события и провайдеры
Часть I: дополнительные возможности
Алиса терпеливо ждала, пока Гусеница не соблаговолит снова обратить на нее внимание.
Минуты через две та вынула кальян изо рта, зевнула –раз, другой – и потянулась.
Потом она сползла с гриба и скрылась в траве, бросив Алисе на прощанье:
– Откусишь с одной стороны – подрастешь, с другой – уменьшишься!
– С одной стороны чего? – подумала Алиса. – С другой стороны чего?
– Гриба, – ответила Гусеница, словно услышав вопрос, и исчезла из виду.
С минуту Алиса задумчиво смотрела на гриб, пытаясь определить,
где у него одна сторона, а где – другая; гриб был круглый, и это совсем сбило ее с толку.
Наконец, она решилась: обхватила гриб руками и отломила с каждой стороны по кусочку.
Приключения Алисы в стране чудес.
Чарльз Латвидж Доджсон
(Пер. Н. М. Демуровой)
Вы уже используете WMI, и эта технология помогает вам решать повседневные задачи? Настало время копнуть поглубже и открыть новые возможности WMI, о которых многие, возможно, даже и не догадываются!
В поход за белым кроликом…
После того как азы WMI изучены [1], наша следующая цель – рассмотреть расширенные возможности технологии, до использования которых добирается лишь небольшая часть системных администраторов, так как их применение часто требует написания сценариев, что администраторы ОС Windows делать обычно не любят. Мне хочется сразу отметить, что эти возможности настолько удобны в использовании и полезны для решения нетривиальных задач, что затраты сил и времени на их освоение и применение окупятся с лихвой. К тому же я постараюсь облегчить вам эту задачу, включив в текст большое количество рабочих примеров из реальной жизни, которые послужат хорошими шаблонами для решения ваших собственных задач.
Эта статья рассчитана на подготовленного читателя. К таким читателям я отношу тех, кто уже использует в своей повседневной практике WMI и самостоятельно создает сценарии, использующие WMI для решения задач системного администрирования.
Однако не стоит отчаиваться и тем, кто хочет изучить эту технологию с нуля. Для таких читателей я порекомендовал бы предварительно ознакомиться с моей статьей под названием «Вы все еще не используете WMI?» из предыдущих номеров журнала «Системный администратор» [1].
Для понимания материала этой статьи также необходимы знания по программированию сценариев в среде WSH (Windows Scripting Host). С подробной информацией по этому вопросу можно ознакомиться в переводной книге Гюнтера Борна [2] и в оригинальной документации Microsoft [3]. Все примеры, которые я использую, приведены на языке VBScript и протестированы на ОС Windows XP Service Pack 2 и Windows Server 2003, хотя многие из них так же успешно будут работать и на Windows 2000, правда, для этого потребуется выполнить ряд подготовительных действий.
Напомню, что в предыдущей моей статье о технологии WMI [1] очень кратко рассматривалась возможность обработки событий WMI и объяснялись общие различия между синхронной и асинхронной техникой обработки событий, а также была обозначена тема стандартных подписчиков на события WMI (Standard Event Consumers), которые могут также применяться для обработки событий. В этой статье настал черед рассмотреть все эти темы подробнее и детально разобрать примеры использования основных провайдеров WMI, установленных по умолчанию в ОС Windows.
Типы событий WMI и способы их обработки
Итак, приступим к изучению расширенных возможностей WMI. Для того чтобы мой рассказ об этой теме был более предметным, я решил выбрать конкретную практическую задачку и рассмотреть ее решение поэтапно. Я остановился на задаче отслеживания событий подключения/отключения съемных дисковых устройств USB и реакции на них. Во многих организациях съемные устройства (в основном USB FlashDrive) являются головной болью для службы безопасности и администраторов. Обычно проблемы, связанные с несанкционированным применением пользователями съемных устройств памяти, довольно эффективно решают с помощью различного дополнительного ПО (например, DeviceLock). Мы же с вами попробуем решить часть из них стандартными средствам WMI. Наша цель – зафиксировать факт события подключения таких устройств и выполнить некоторое ответное действие (например, сценарий VBScript).
Для начала давайте рассмотрим простой пример кода на VBScript, использующего WMI для синхронного отслеживания событий подключения съемных дисковых устройств. Он послужит нам отправной точкой в данной работе. Этот пример приведен на листинге 1. Попробуйте запустить этот сценарий командой cscript <имя сценария> и посмотреть на результат его работы при подключении устройств USB FlashDrive.
Листинг 1. Пример сценария синхронного отслеживания подключения устройств USB
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootCIMV2»)
Set objEvents = objWMIService.ExecNotificationQuery _
(«SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE » & _
«TargetInstance ISA ‘Win32_LogicalDisk'» & _
» AND TargetInstance.DriveType = 2″)
Wscript.Echo «Ожидаем события …»
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
Wscript.Echo «Name: » & objReceivedEvent.TargetInstance.Name
Wscript.Echo «Caption: » & objReceivedEvent.TargetInstance.Caption
Wscript.Echo «FileSystem: » & objReceivedEvent.TargetInstance.FileSystem
Wscript.Echo «Description: » & objReceivedEvent.TargetInstance.Description
Loop
Теперь давайте чуть подробнее разберем этот пример. Первые две строки служат для подключения к репозиторию WMI и не вызывают особого интереса. Третий же оператор сценария представляет для нас существенный интерес. Здесь мы вызываем метод ExecNotificationQuery объекта objWMIService (он принадлежит к классу SWbemServices), который регистрирует временный подписчик на события WMI. Этот метод возвращает нам специальный объект-подписчик, который по заданным нами критериям следит за событиями WMI. Этот объект мы сохраняем в переменной objEvents. У класса SWbemServices также существует второй метод регистрации временного подписчика на события WMI, который называется ExecNotificationQueryAsync. Этот метод позволяет регистрировать временные подписчики для асинхронной обработки событий WMI, о нем мы поговорим чуть-чуть позже.
Рассмотрим внимательнее WQL-запрос, с помощью которого наш сценарий подписывается на события WMI. Для того чтобы получать уведомления об интересующих нас событиях, мы делаем выборку объектов специального класса __InstanceCreationEvent, который служит для отслеживания внутренних событий WMI, возникающих при создании экземпляров объектов любого класса, зарегистрированного в репозитории WMI. Заметим, что существуют и другие специальные классы отслеживания внутренних событий WMI, например: __InstanceDeletionEvent, __InstanceModificationEvent, __InstanceOperationEvent или __ClassCreationEvent, __ClassDeletionEvent и другие. Довольно очевидно из их названия, для отслеживания каких именно внутренних событий WMI эти специальные классы созданы. В таблице 1 перечислены все основные системные классы, обеспечивающие отслеживание внутренних событий WMI. Все они выведены из абстрактного WMI класса __Event.
Таблица 1. Список основных классов для подписки на внутренние (intrinsic) события WMI
Внутренне классы событий |
Описание |
__ClassCreationEvent |
Извещает подписчика о создании нового класса WMI |
__ClassDeletionEvent |
Извещает подписчика об удалении класса WMI |
__ClassModificationEvent |
Извещает подписчика об изменении класса WMI |
__InstanceCreationEvent |
Извещает подписчика о создании экземпляра объекта класса WMI |
__InstanceOperationEvent |
Извещает подписчика об изменении, удалении или создании экземпляра объекта класса. |
__InstanceDeletionEvent |
Извещает подписчика об удалении экземпляра объекта класса WMI |
__InstanceModificationEvent |
Извещает подписчика о модификации экземпляра объекта класса WMI |
__NamespaceCreationEvent |
Извещает подписчика о создании нового пространства имен WMI |
__NamespaceDeletionEvent |
Извещает подписчика об удалении пространства имен WMI |
__NamespaceModificationEvent |
Извещает подписчика об изменении в пространстве имен WMI |
__ConsumerFailureEvent |
Извещает подписчика о том, что некоторые события не были доставлены подписчику из-за ошибок на стороне подписчика |
__EventDroppedEvent |
Извещает подписчика о том, что некоторые события не были доставлены до их подписчика |
__EventQueueOverflowEvent |
Извещает подписчика о том, что некоторые события WMI не были доставлены до подписчика из-за переполнения очереди событий |
__MethodInvocationEvent |
Извещает подписчика о том, что был выполнен вызов метода WMI. Не поддерживается на Windows NT/2000 |
Далее обратим внимание на ключевое слово WITHIN в запросе WQL – в отличие от обычного языка SQL ключевое слово WITHIN в языке WQL определяет интервал опроса приходящих событий в секундах или служит для группировки событий (в сочетании с ключевым словом GROUP) в течение указанного количества секунд.
В нашем конкретном случае временный подписчик событий WMI – это объект, который мы получаем в переменную objEvents в результате вызова метода ExecNotificationQuery. Он будет каждые 5 секунд осуществлять проверку всех событий WMI по созданию экземпляров объектов, соответствующих критериям, заданным после ключевого слова WHERE, а именно отслеживать появление новых объектов класса Win32_LogicalDisk, у которых свойство DriveType равно 2.
Закончим разбор сценария анализом цикла ожидания событий. Вполне очевидно, что сам по себе цикл бесконечный и условия завершения не имеет. Внутри тела цикла вызывается метод NextEvent нашего экземпляра объекта objEvents – временного подписчика на события WMI. Этот метод возвращает управление VBS-сценарию в тот момент, когда в системе происходит событие WMI, соответствующее условиям, заданным при создании объекта-подписчика. Возвращаемый этим методом объект является объектом-описателем происшедшего события и имеет свойства TargetInstance и TIME_CREATED. Свойство TargetInstance содержит не что иное как ссылку на экземпляр объекта, вызвавшего это событие.
Теперь необходимо обратить наше пристальное внимание на тот факт, что существуют два типа событий WMI. Внутренние (системные) события WMI и внешние (чуждые). Эти типы событий принципиально отличаются по своему происхождению, обслуживаются разными группами классов WMI и как следствие отличаются по некоторым приемам работы с ними. Все внутренние (intrinsic) классы отслеживания событий WMI выведены непосредственно из абстрактного класса __Event, как я уже упоминал ранее, а вот все внешние (extrinsic) классы событий выведены из класса __ExtrinsicEvent, который уже в свою очередь выведен из класса __Event.
По сути дела за генерацию событий, доступ к которым обеспечивают классы внутренних событий, отвечает само ядро службы WMI, а за генерацию событий, доступ к которым обеспечивают классы внешних событий, отвечают уже WMI-провайдеры. Таким образом, если мы хотим отслеживать события WMI, используя внутренние механизмы службы WMI, то мы будем пользоваться универсальными внутренними (intrinsic) классами. Если же интересующий нас WMI-провайдер предоставляет свои собственные (внешние) классы отслеживания событий, то использовать следует именно их, так как они по определению будут работать эффективнее.
К сожалению, далеко не все провайдеры предоставляют достаточный набор собственных внешних классов для отслеживания событий. В листинге 3 дан пример использования специального внешнего класса отслеживания событий Win32_ProcessStartTrace провайдера Win32. Также в этом листинге используется пример отслеживания событий таймера с использованием внутренних классов отслеживания событий. Хочу обратить ваше внимание на тот факт, что у всех внутренних классов отслеживания событий существует свойство TargetInstance, но его нет у внешних классов отслеживания событий WMI. Зато, как правило, внешние классы, отслеживающие внешние события WMI, обладают довольно широким дополнительным набором атрибутов, позволяющим легко устанавливать источник этого события.
Также надо заметить, что ключевое слово WITHIN языка WQL, позволяющее подписчику устанавливать интервал опроса экземпляров внутренних классов отслеживания событий, не требуется использовать с внешними классами отслеживания событий.
Асинхронная обработка событий WMI в сценариях WSH
Вернемся к сравнению синхронного и асинхронного способа обработки событий WMI. Синхронная обработка событий – это когда процесс ожидает события и более ничем не занят. Обычно это ожидание – бесконечный цикл проверки условия: поступило событие или нет. В нашем случае в сценарии на листинге 1 для синхронного получения очередного события вызывается метод NextEvent объекта objEvents. Этот метод возвращает сценарию управление только тогда, когда в системе происходит событие, на которое мы подписались.
Асинхронная обработка подразумевает, что сценарий VBScript регистрирует специальный обработчик (подписчик) события в объектной модели WSH и далее продолжает выполнять различные свои задачи. Когда событие возникает, нормальная работа сценария прерывается, запоминается место, где произошло прерывание, а управление передается на зарегистрированный ранее обработчик событий (event sink). После обработки события обработчиком управление возвращается на то действие сценария, которое было прервано.
Для реализации такой техники в объектной модели WSH для сценариев WMI предусмотрен ряд функций, названия которых оканчиваются на суффикс Async. К таким функциям, в частности, относятся: ExecMethodAsync, ExecNotificationQueryAsync, ExecQueryAsync, GetAsync и PutAsync. Эти функции мало чем отличаются от своих синхронных аналогов. Основное их отличие состоит в двух моментах. Во-первых, эти функции ничего не возвращают в вызывающую их программу. Во-вторых, в качестве первого аргумента все они требуют передавать зарегистрированный объект асинхронного подписчика, который создается стандартной функцией CreateObject на базе класса WbemScripting.SWbemSink. Создание этого объекта регистрирует в среде WSH специальный отличительный префикс для процедур-обработчиков событий WMI. Это может быть любая текстовая строка, которая удовлетворяет правилам именования процедур в VBScript. События WMI, которые могут обрабатываться в сценариях WSH, имеют следующие названия – OnCompleted, OnObjectPut, OnObjectReady и OnProgress. Таким образом, все события WMI будут обрабатываться в процедурах, имя которых состоит из зарегистрированного префикса обработчика и названия события. Примеры этого подхода даны в листингах 2, 3.
Листинг 2. Пример сценария асинхронного отслеживания подключения дисковых устройств USB
Sub SINK_OnObjectReady(objReceivedEvent, objAsyncContext)
Wscript.Echo «Name: » & objReceivedEvent.TargetInstance.Name
Wscript.Echo «Caption: » & objReceivedEvent.TargetInstance.Caption
Wscript.Echo «FileSystem: » & objReceivedEvent.TargetInstance.FileSystem
Wscript.Echo «Description: » & objReceivedEvent.TargetInstance.Description
End Sub
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootCIMV2»)
Set MySink = WScript.CreateObject( _
«WbemScripting.SWbemSink»,»SINK_»)
objWMIservice.ExecNotificationQueryAsync MySink, _
«SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE » & _
«TargetInstance ISA ‘Win32_LogicalDisk'» & _
» AND TargetInstance.DriveType = 2″
WScript.Echo «Ожидаем события …»
While (True)
Wscript.Sleep(1000)
Wend
Листинг 3. Одновременное использование синхронной и асинхронной техники обработки событий на примере Таймера
Dim tCount
Sub TIMER_OnObjectReady(objReceivedEvent, objAsyncContext)
tCount = tCount + 1
Wscript.Echo «Произошло событие Таймера, счетчик tCount=» & tCount
End Sub
strComputer = «.»
tCount = 0
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootCIMV2»)
Set MySink = WScript.CreateObject(«WbemScripting.SWbemSink»,»TIMER_»)
objWMIservice.ExecNotificationQueryAsync MySink, _
«SELECT * FROM __InstanceModificationEvent WHERE » & _
«TargetInstance ISA ‘Win32_LocalTime'»& _
» AND TargetInstance.Second = 30″
Set objEvents = objWMIService.ExecNotificationQuery(«SELECT * FROM Win32_ProcessStartTrace»)
Wscript.Echo «Ожидаем запуска новых процессов…»
Do While(tCount < 10)
Set objReceivedEvent = objEvents.NextEvent
WScript.Echo «Новый процесс: PID=» & objReceivedEvent.ProcessID _
& » Name=» & objReceivedEvent.ProcessName
Loop
MySink.Cancel
Обратите внимание на технические особенности сценария, представленного на листинге 3. Асинхронный обработчик внутренних событий таймера, зарегистрированный в этом сценарии, увеличивает переменную tCount на единицу каждые 60 секунд (в тот момент, когда показания секунд на системных часах равны 30) и выводит об этом сообщение. Синхронный обработчик событий запуска процессов внутри цикла вызывает метод NextEvent, который возвращает управление сценарию только после того, как произойдет запуск очередного нового процесса. Становится понятно, что цикл завершится только тогда, когда от начала работы сценария пройдет более 10 минут и в системе будет запущен новый процесс.
Временные и постоянные подписчики на события
Ознакомившись с вышеизложенной частью этой статьи, вы можете решить, что все, что вам необходимо для работы с событиями WMI, вы уже знаете. Теперь вы можете написать любой сценарий, который будет реагировать на подключения съемных запоминающих устройств USB и запустить его при старте компьютера через групповую политику или через системный планировщик задач. Однако все выше рассмотренные нами примеры обладают одним существенным недостатком – события WMI будут отслеживаться только тогда, когда временный подписчик существует, то есть созданный нами сценарий работает. Стоит только остановить сценарий, и обработка событий закончится. В каких то ситуациях такое решение неприемлемо, и необходимо, чтобы события отслеживались постоянно. Для решения этой задачи существуют постоянные подписчики (permanent event consumer). В общем случае постоянный подписчик – это специальный компонент COM+, который постоянно зарегистрирован получать определенные события от службы WMI.
Логика такой регистрации очень проста. У нас есть COM+ компонент, отвечающий за обработку событий – подписчик. У нас есть специальный класс WMI, который называется __EventFilter. Каждый экземпляр объекта класса __EventFilter содержит информацию о том, какие события WMI следует выбирать для передачи какому-нибудь постоянному подписчику. Среди этой информации наиболее важной является WQL-запрос к внутренним или внешним классам отслеживания событий WMI и пространство имен, в котором данный запрос будет выполняться. Для связывания конкретного экземпляра фильтра событий и конкретного экземпляра постоянного подписчика используется специальный связывающий объект WMI, принадлежащий к классу __FilterToConsumerBinding. Этот класс среди своих свойств содержит указатель на постоянного подписчика и указатель на фильтр событий. Таким образом, один и тот же фильтр событий может поставлять события нескольким постоянным подписчикам, а один и тот же постоянный подписчик может получать события от нескольких разных фильтров. Такой подход для связывания хорошо известен разработчикам и администраторам реляционных баз данных для создания связей типа «многие к многим».
Стандартные подписчики на события
Для того чтобы упростить жизнь системных администраторов и избавить их от программирования компонентов COM+, в стандартной инсталляции Microsoft Windows XP и Windows Server 2003 включены пять готовых постоянных подписчиков событий. Эти готовые постоянные подписчики носят название Стандартных Подписчиков (Standard Event Consumers). Все они перечислены в таблице 2.
Таблица 2. Cтандартные подписчики на события WMI (Standard Event Consumers)
Название подписчика |
Описание |
Служит для выполнения сценария при возникновении указанного события WMI |
|
LogFileEventConsumer |
Служит для записи произвольной строки в текстовый лог-файл при возникновении указанного события WMI. Не поддерживается на Windows 2000 |
NTEventLogEventConsumer |
Служит для записи события в журнал приложений (Application Log) системы при возникновении указанного события WMI. Не поддерживается на Windows 2000 |
SMTPEventConsumer |
Служит для отправки почтового сообщения по протоколу SMTP при возникновении указанного события WMI |
CommandLineEventConsumer |
Служит для локального запуска исполняемого файла приложения при возникновении указанного события WMI. Не поддерживается на Windows 2000 |
В Microsoft Windows 2000, к сожалению, их только два. Кроме того, один из них ActiveScriptEventConsumer не скомпилирован, поэтому прежде чем его использовать необходимо скомпилировать командой:
mofcomp %windir%wbemScrcons.mof
Классы стандартных подписчиков на события WMI в ОС Windows XP Service Pack 2 и Windows Server 2003 определены в специальном пространстве WMI-имен rootsubscription. Там же рекомендуется создавать экземпляры этих подписчиков, фильтры событий и объекты связывания подписчиков и фильтров событий.
Создание MOF-файла для подписки на события и его компиляция
Для того чтобы воспользоваться стандартными подписчиками на события WMI, вовсе не обязательно писать сценарии VBScript. Для этого достаточно взять в качестве шаблона приведенный на листинге 4 MOF-файл и немного модифицировать его под себя. Далее достаточно просто скомпилировать его штатной утилитой mofcomp – и все готово.
Листинг 4. Файл NTLog-for-remdev.mof для регистрации постоянного подписчика событий
// Создает экземпляр объекта стандартного подписчика NT Event log и обозначает его псевдонимом $CONSUMER
#pragma namespace («\\.\root\subscription»)
instance of NTEventLogEventConsumer as $CONSUMER
{
Name = «MyStandardConsumer»; // Уникальное имя экземпляра
SourceName = «MyMonitoring»; // Системный источник события
EventID = 235 ; // Номер события в журнале приложений
EventType = 3; // Нумеротор EVENTLOG_INFORMATION_TYPE
Category = 0; // Категорию сообщения мы не определяем (0)
NumberOfInsertionStrings = 1; // Число текстовых строк в параметре InsertionStringTemplates
InsertionStringTemplates = { «Removable Drive connected under «
«drive letter %TargetInstance.Caption% with file system %TargetInstance.FileSystem%» };
};
// Создание экземпляра объекта фильтра событий и присвоение ему псевдонима $FILTER
instance of __EventFilter as $FILTER
{
Name = «MyRemDevFilter»; // Уникальное имя экземпляра
// Определяем запрос WQL для отбора интересующих нас событий
Query = «SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA «
«»Win32_LogicalDisk» AND TargetInstance.DriveType = 2″ ;
QueryLanguage = «WQL»; // Определяем язык запроса
EventNamespace = «root\CIMv2»; // Определяем пространство имен, где будет выполняться запрос
};
// Создаем экземпляр объекта связывания между фильтром и подписчиком,
// используя их временные псевдонимы
instance of __FilterToConsumerBinding
{
Consumer = $CONSUMER;
Filter = $FILTER;
};
Создайте файл с именем NTLog-for-remdev.mof и заполните его в соответствии с листингом 4. Затем выполните синтаксическую проверку файла командой:
mofcomp –check NTLog-for-remdev.mof
Данный MOF-файл создает экземпляр стандартного подписчика на события WMI, который осуществляет запись информационного события с кодом 235 в журнал приложений системы (Application Log) в случае, если в системе появляется новое съемное запоминающее устройство типа USB FlashDrive. В данные события вносится информация о букве диска, которая была назначена этому съемному устройству, а также тип файловой системы, обнаруженной на подключенном съемном устройстве.
Для того чтобы созданный нами MOF-файл был импортирован в репозиторий WMI и события подключения съемных дисковых устройств типа USB FlashDrive стали регистрироваться в журнале приложений, нам необходимо скомпилировать этот MOF-файл. Для этого с правами администратора выполните команду:
mofcomp NTLog-for-remdev.mof
Если после выполнения команды вы увидите сообщение «Storing data in the repository… Done!», то это означает, что операция прошла успешно. Теперь проверьте журнал приложений («Event Viewer Application») на предмет ошибок от службы WinMgmt. Скорее всего, их не будет. Если же вы увидите запись об ошибке с кодом 10 (EventID 10), в тексте которого будет присутствовать информация об ошибке WMI номер 0x80041003 [5], то знайте, что той учетной записи, под которой вы проделали компиляцию MOF-файла, недостаточно прав для активации фильтра событий. Для решения этой проблемы выполните все эти действия из-под локальной встроенной учетной записи администратора. Это ситуация довольно редкая, но она случается с доменными учетными записями, включенными в группу локальных администраторов при отсутствии подключения к контроллеру домена. Рассматривать детально причину такого провидения системы мы сейчас не будем. Просто помните об этом.
После того как вы подключите к компьютеру съемное дисковое устройство, в журнале событий вы увидите событие с текстом примерно следующего содержания:
Event ID: 235
Source: MyMonitoring
Type: Information
Description:
The description for Event ID ( 235 ) in Source ( MyMonitoring ) cannot be found.
The local computer may not have the necessary registry information or message DLL files
to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag
to retrieve this description; see Help and Support for details. The following information
is part of the event: Removable Drive connected under drive letter E: with file system FAT32.
Давайте теперь немного подробнее разберем приведенный пример MOF-файла. Обратите внимание, что синтаксис MOF файлов [6] очень похож на синтаксис языка программирования C++. Первая значащая строка определяет пространство имен WMI, где будут размещены создаваемые нами экземпляры объектов. Затем идет описание экземпляра объекта класса стандартного подписчика NTEventLogEventConsumer и присвоение ему псевдонима (alias) для последующей ссылки на него. При определении экземпляра этого объекта мы задаем его свойства – это самое интересное. Мы определяем уникальное имя этого экземпляра стандартного подписчика, код события, которое будет вносить в журнал приложений этот экземпляр стандартного подписчика, тип события (0 – SUCCESS, 1 – ERROR, 2 – WARNING, 3 – INFORMATION, 4 – AUDIT_SUCCESS и 5 – AUDIT_FAILURE), источник события и его категорию. Далее мы определяем число текстовых строк, которые будут передаваться службе журнала Windows при создании события с указанным нами кодом. Для всех событий в системе обычно предусмотрены текстовые шаблоны для поля Description. Это помогает сильно экономить место в журналах событий системы. Эти шаблоны обычно содержат специальные поля для внесения текстовых строк с деталями о конкретном событии. Поскольку для нашего события такого шаблона не существует, то в поле описания события (Description) об этом будет записано предупреждение.
Далее в MOF-файле создается экземпляр объекта класса __EventFilter, в котором описываются те события, на которые мы хотим назначить постоянный подписчик. Мы, как и раньше, определяем уникальное имя этого экземпляра и задаем остальные свойства. Среди этих свойств мы определяем запрос WQL, отслеживающий интересующие нас события и пространство имен WMI, в котором этот запрос следует выполнять.
Наконец последнее, что мы определяем в этом MOF-файле – это связывающий объект, который собственно и отвечает за передачу событий от фильтра к подписчику.
Как описано выше, существует пять классов стандартных подписчиков (см. таблицу 2). Соответственно помимо записи событий в журнал событий мы можем, например, запускать сценарий VBScript как реакцию на интересующее нас событие WMI или приложение из командной строки. Давайте посмотрим, как очень легко можно модифицировать наш пример со стандартным подписчиком, оставляющим в журнале событий системы (Event Log) свою запись о подключении съемного запоминающего устройства, на запуск сценария VBScript.
Для начала давайте создадим сценарий, который мы бы хотели запускать при возникновении интересующих нас событий WMI. Я не буду подробно разбирать особенности этого сценария, так как это не соответствует тематике нашей статьи. Обозначу лишь один важный момент: когда данный сценарий WSH запускается ядром системы WMI, в объектное окружение WSH добавляется специальный объект TargetEvent, который по набору свойств соответствует тому, что возвращала бы функция NetEvent при синхронной обработке уведомляющих запросов в наших примерах выше.
Пример нашего сценария дан в листинге 5:
Листинг 5. Код из файла script.vbs. Файл должен находиться в папке c:windowssystem32wbem
Dim objFSO, objFile
Set objFSO = CreateObject(«Scripting.FileSystemObject»)
Set objFile = objFSO.CreateTextFile(«C:ScriptLog.txt», 8, true)
objFile.WriteLine «Time: » & Now & «; Entry made by: ASEC»
objFile.WriteLine «Script Started for USB Drive: » & TargetEvent.TargetInstance.Caption
objFile.Close
Поместите этот сценарий в папку c:windowssystem32wbem. В принципе его можно хранить и в любой другой папке, но вы должны понимать, что при наличии соответствующих прав на файл пользователь может изменить содержимое VBS-сценария, а поскольку он выполняется в контексте безопасности SYSTEM, то пользователь может поднять свои права на локальной машине и натворить еще много других бед. Рекомендуемая мной папка имеет достаточно надежные разрешения доступа к файлам по умолчанию и позволит избавиться от этой потенциальной уязвимости.
Теперь пришел черед модифицировать наш MOF-файл. На листинге 6 дано определение экземпляра объекта стандартного подписчика, ответственного за запуск сценариев. Как вы уже могли убедиться, все довольно просто. Мы, как и раньше, определяем уникальное имя экземпляра класса стандартного подписчика и задаем другие его свойства. Замените в нашем MOF-файле (см. листинг 4) описание стандартного подписчика на это новое описание.
Листинг 6. Пример кода MOF-файла для создания экземпляра стандартного подписчика, выполняющего сценарий из указанного текстового файла
instance of ActiveScriptEventConsumer as $CONSUMER
{
Name = «MyStandardConsumer»;
KillTimeout = 300;
ScriptingEngine = «VBScript»;
ScriptFileName = «c:\windows\system32\wbem\script.vbs»;
};
Наиболее важным для нас свойством является имя файла сценария, который следует исполнять в качестве реакции на события. Смысл всех остальных свойств вполне очевиден из их названия. Рассмотренная проблема с размещением файла сценария может быть решена еще одним способом. Зачем вообще сохранять сценарий на диск машины, где он может быть модифицирован пользователем, когда можно сохранить его код прямо в репозитории WMI. Конечно, в каких-то случаях этот способ может быть не очень удобным, однако я специально привел его пример на листинге 7, поскольку этот способ хранения сценария реакции на события априори более безопасный.
Листинг 7. Пример кода MOF-файла для создания экземпляра стандартного подписчика, выполняющего сценарий из сохраненного в репозитории WMI кода VBScript
instance of ActiveScriptEventConsumer as $CONSUMER
{
Name = «MyStandardConsumer»;
ScriptingEngine = «VBScript»;
KillTimeout = 300;
ScriptText =
«Dim objFSO, objFilen»
«Set objFSO = CreateObject(«Scripting.FileSystemObject»)n»
«Set objFile = objFSO.CreateTextFile(«C:\ScriptLog.txt», 8, true)n»
«objFile.WriteLine «Time: » & Now & «; Entry made by: ASEC2″n»
«objFile.WriteLine «Script Started for «
USB Drive: » & «
«TargetEvent.TargetInstance.Captionn»
«objFile.Closen»;
};
Обратите внимание, что сценарий VBScript задается в виде текстовой строки, как в языке C++, и для перевода строк используется спецсимвол «n», а для включения в текст двойных кавычек и обратных наклонных черт – спецсимволы «»» и «\» соответственно.
После того как вы проделали изменение нашего базового MOF-файла, еще раз проверьте синтаксис MOF-файла и компилируйте его, так как описано выше командой mofcomp. После этого подключите к системе съемное запоминающее устройство USB FlashDrive и убедитесь, что в корне диска C: создался файл отчета ScriptLog.txt о работе нашего сценария с примерно следующим содержимым:
Time: 20.03.2006 12:43:18; Entry made by: ASEC
Script Started for USB Drive: E:
Отмена регистрации постоянных подписчиков
После того как вы проделали упражнение с созданием постоянного стандартного подписчика на события WMI, этот подписчик будет работать в системе даже после ее перезагрузки. У пытливого читателя сразу же возникнет вопрос: «Как же теперь отменить все результаты наших экспериментов?» Эта задача решается довольно просто.
Для того чтобы отменить созданную нами постоянную регистрацию стандартных подписчиков, следует выполнить приведенный на листинге 8 сценарий VBScript.
Листинг 8. Отмена регистрации постоянного стандартного подписчика для NTEventLogEventConsumer
On Error Resume Next
Set objWIMService = GetObject(«winmgmts:\.rootsubscription»)
Set objList = objWIMService.ExecQuery(«references of {__EventFilter.Name=’MyRemDevFilter’}»)
For each objInst in objList
objInst.Delete_
Next
Set objList = objWIMService.ExecQuery»references of {NTEventLogEventConsumer.Name=’MyStandardConsumer’}»)
For each objInst in objList
objInst.Delete_
Next
Set objSTDConsumerInst = GetObject(«winmgmts:\.rootsubscription:NTEventLogEventConsumer=’MyStandardConsumer'»)
objSTDConsumerInst.Delete_
Set objEventFltInst = GetObject(«winmgmts:\.rootsubscription:__EventFilter=’MyRemDevFilter'»)
objEventFltInst.Delete_
Этот сценарий использует технику запроса WQL с ключевым словом references of для нахождения всех экземпляров связывающих объектов класса __FilterToConsumerBinding привязанных к экземпляру фильтра событий с именем NTLogConsumerForRemDevFilter и к экземпляру стандартного подписчика с именем NTLogConsumerForRemDev. После нахождения всех этих связывающих объектов он удаляет их, а затем удаляет и сами экземпляры объектов стандартного подписчика и фильтра событий.
Просмотр и модификацию регистрации постоянных подписчиков на события WMI также удобно осуществлять с использованием утилиты WMI Event Registration из комплекта WMI Administrative Tools [7].
Полезные примеры мониторинга системных событий
Перед заключением приведу пару простых, но часто используемых практических примеров отслеживания событий WMI. В целях упрощения эти примеры приведены в виде сценариев синхронной обработки событий на VBScript, однако вы уже хорошо понимаете, как их можно легко модифицировать к асинхронному виду или применить для их использования механизм стандартных подписчиков.
Для сравнения один из них, приведенный на листинге 9, использует внутренние (intrinsic) события и внутренние классы отслеживания событий WMI, а второй, приведенный на листинге 10, использует внешние (extrinsic) события, генерируемые провайдером WMI StdRegProv.
Листинг 9. Пример синхронного отслеживания событий с файлами TXT в папке c:temp
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootCIMv2»)
Set objEvents = objWMIService.ExecNotificationQuery _
(«SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE » & _
«TargetInstance ISA ‘CIM_DataFile'» & _
» AND TargetInstance.Drive = ‘c:'» & _
» AND TargetInstance.Extension = ‘txt'» & _
» AND TargetInstance.Path = ‘\temp\'»)
Wscript.Echo «Ожидаем события …»
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
WScript.Echo «Filename: » & objReceivedEvent.TargetInstance.FileName
WScript.Echo «Name: » & objReceivedEvent.TargetInstance.Name
Loop
В примере на листинге 9 сценарий, используя синхронную технику, отслеживает события создания удаления и переименования файлов с расширением TXT в папке C:TEMP. Если вы будете экспериментировать с этим сценарием, будьте аккуратны, не увлекайтесь расширением области мониторинга за счет захвата большего числа файлов и папок. В современных версиях OC Windows изменения в файловой системе происходят очень часто, и ядро WMI может не выдержать потока всех свалившихся на него событий и заберет почти 100% процессорного времени системы на их обработку.
Следующий пример, приведенный на листинге 10, показывает пример синхронной техники обработки внешних (extrinsic) событий WMI для провайдера StdRegProv.
Листинг 10. Пример синхронного отслеживания событий изменения значения в реестре
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\» & strComputer & «rootDEFAULT»)
Set objEvents = objWMIService.ExecNotificationQuery _
(«SELECT * FROM RegistryValueChangeEvent WHERE » & _
«Hive = ‘HKEY_LOCAL_MACHINE'» & _
» AND KeyPath = ‘SOFTWARE\MyKey\MySubKey\'» & _
» AND ValueName = ‘MyValue'»)
Wscript.Echo «Ожидаем события …»
Do While(True)
Set objReceivedEvent = objEvents.NextEvent
Wscript.Echo «Произошло событие RegistryValueChangeEvent.»
Loop
Поскольку пример довольно прост, мы не будем сейчас останавливаться на его внимательном рассмотрении и оставим это на вторую часть статьи, где среди прочего будет подробно рассматриваться работа с провайдером WMI для доступа к реестру.
Что еще есть на вооружении WMI?
Дополнительные возможности WMI не исчерпываются только обработкой событий и созданием постоянных стандартных подписчиков. В следующей части статьи мы поговорим о практическом использовании основных провайдеров WMI и приемах работы с ними. Среди этих провайдеров я особо хотел бы отметить следующие: Win32_Ping – осуществляющий формирование ICMP Echo-запросов к указанным хостам сети, Win32_NTEventLog – с которым мы частично знакомы и который обеспечивает доступ к журналам событий системы OC Windows. Также мы рассмотрим провайдер работы с реестром – StdRegProv и провайдер взаимодействия с Microsoft Active Directory. Кроме них, будет полезно обсудить провайдер для работы со счетчиками производительности и довольно простой вопрос, который, однако, вызывает частенько сложности, – работа с датами и временем через WMI.
Ссылки, литература:
- Леонтьев К. Вы все еще не используете WMI? Часть I. – Журнал «Системный администратор», №1, январь 2006 г. – 4-11 с. (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=01.2006;a=02);
- Леонтьев К. Вы все еще не используете WMI? Часть II: пишем сценарии. – Журнал «Системный администратор», №2, февраль 2006 г. – 6-14 с. (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=02.2006;a=02)
- Борн Г. Руководство разработчика на Microsoft Windows Scripting Host 2.0. Мастер класс. // Пер. с англ. – СПб.: Питер; М.: ИТД «Русская редакция», 2001. – 480 стр.: ил.
- Microsoft Windows Script 5.6 Documentation – http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en.
- WMI Code Creator 1.0 – http://download.microsoft.com/download/0/c/a/0ca7691c-6335-4143-8f9f-6708969f8212/WMICodeCreator.zip.
- Таблица кодов ошибок WMI – http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wbemerrorenum.asp.
- Синтаксис MOF-файлов – http://msdn.microsoft.com/library/en-us/wmisdk/wmi/managed_object_format.asp?frame=true.
- WMI Administrative Tools – http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe.
Мой мир
Вконтакте
Одноклассники
Google+
Любой бывалый Windows-админ периодически сталкивается с проблемами в работе службы WMI (Windows Management Instrumentation) и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования Windows, поэтому администратору необходимо проверить и восстановить работоспособность WMI. В этой статье мы опишем простую методику диагностирования и устранения неполадок службы WMI в Windows.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений (
0x80041002 - WBEM_E_NOT_FOUND
,
WMI: Not Found
,
0x80041010 WBEM_E_INVALID_CLASS
); - Ошибки обработки GPO, связанные на WMI ( некорректная работа wmi фильтров групповых политик, и пр.);
- WMI запросы выполняются очень медленно;
- Ошибки при установке или работе агентов SCCM/SCOM;
- Ошибки в работе скриптов (vbs или PowerShell), использующих пространство имен WMI (скрипты с Get-WmiObject и т.д.).
Содержание:
- Диагностика проблем с WMI
- Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов
- Сброс и пересоздание WMI репозитория (хранилища)
В первую очередь нужно проверить служба Windows Management Instrumentation (Winmgmt) установлена в Windows и запущена. Вы можете проверить состояние службы в консоли services.msc или с помощью PowerShell:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
Если служба Winmgmt запущена, вы можете проверить работоспособность WMI, обратившись к ней с помощью простого WMI-запроса. Вы можете выполнить wmi запрос из командной строки или из PowerShell. Например, следующая команда выведет список установленных в Windows программ:
wmic product get name,version
Простейшая PowerShell команда для получения информации о версии и билда Windows 10 через WMI может выглядеть так:
get-wmiobject Win32_OperatingSystem
Как вы видите, служба WMI ответила на запрос корректно. Если при выполнении такого WMI-запроса Windows возвращает ошибку, скорее всего сервиса WMI работает некорректно, поврежден WMI репозиторий или есть какие-то другие проблемы.
В моем случае, например, при открытии свойств WMI Control в консоли управления компьютером (compmgmt.msc) появлялась надпись:
Failed to initialize all required WMI classes Win32_Processor. WMI: Invalid namespace Win32_WMISetting. WMI: Invalid namespace Win32_OperationSystem. WMI: Invalid namespace
Ранее для диагностики WMI существовала официальная утилита от Microsoft – WMIDiag.vbs (Microsoft WMI Diagnosis). WMIdiag это vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:USERS%USERNAME%APPDATALOCALTEMP). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.2 и включает в себя следующие типы фалов:
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag;
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание;
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI.
Совет. В 64 битных версиях Windows wmidiag нужно запускать так:
c:windowsSystem32cscript.exe wmidiag.vbs
в противном случае появится ошибка:
WMIDiag must be run from native 64-bit environment. It is not supported in Wow64.
После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.
К сожалению, последняя версия WMIDiag 2.2 корректно работает только с версиями до Windows 8.1/Windows Server 2012 R2. На данный момент Microsoft даже удалила ссылку на загрузку WMIDiag из Download Center. Но при желании, этот скрипт можно найти в сети.
WMIDiag может дать подробную информацию по исправлению частных ошибок в WMI, но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей сбросить и пересоздатьWMI репозиторий в Windows.
Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов
В Windows 10/Windows Server 2016 вы можете проверить целостность репозитория WMI с помощью команды:
winmgmt /verifyrepository
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT или WMI repository verification failed), стоит попробовать выполнить “мягкое” исправление ошибок репозитория:
Winmgmt /salvagerepository
WMI repository has been salvaged.
Данная команда выполняет проверку согласованности хранилища WMI и при обнаружении несогласованности перестраивает базу данных WMI.
Перезапустите службу WMI:
net stop Winmgmt
net start Winmgmt
Если стандартный способ исправления ошибок в WMI не помог, попробуйте следующий скрипт. Данный скрипт представляет собой ”мягкий” вариант восстановления службы WMI на компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%system32wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
На 64 битной версии Windows эти действия нужно также выполнить для каталога SysWOW64. Замените третью строку на
cd %windir%SysWOW64wbem
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле wmi_soft_repair.bat и запустить его с правами администратора. После окончания работы скрипта, перезагрузите Windows и проверьте работу WMI.
Сброс и пересоздание WMI репозитория (хранилища)
Если вам не помогли мягкие способ восстановления WMI, рассмотренные выше, придется перейти к более “жесткому” способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилищаWMI.
WMI репозиторий (хранилище) находится в каталоге
%windir%System32WbemRepository
и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях WMI репозиторий может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
Если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание — это последняя шаг, к которому нужно прибегнуть только тогда, когда другие операции не помогают реанимировать WMI.
Следующая команда выполнит сброс базы данных WMI к исходному состоянию (как после чистой установки Windows). Используйте эту команду для выполнения hard reset репозитория WMI, если параметре salvagerepository не исправил проблему:
Winmgmt /resetrepository
Совет. На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Это связано с тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такие программы скорее всего, придется переустанавливать в режиме восстановления.
Если обе команды (
Winmgmt /salvagerepository
и
Winmgmt /resetrepository
) не восстановили консистентное состояние базы WMI, попробуйте выполнить “жесткое” пересоздание базы WMI вручную таким скриптом:
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%system32wbem
winmgmt /resetrepository
winmgmt /resyncperf
if exist Repos_bakup rd Repos_bakup /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
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver
На 64 битной версии Windows нужно также перерегистрировать dll/exe и перекомпилировать mof файлы в каталоге %windir%sysWOW64wbem.
Данный скрипт полностью пересоздает хранилище WMI (старый репозиторий сохраняется в каталог Repos_bakup). После окончания работы скрипта нужно перезагрузить Windows. Затем протестируйте работу службы WMI простым запросом.
Проверьте состояние WMI репозитория. Если ошибки исправлены, команда
winmgmt /verifyrepository
должна вернуть:
WMI repository is consistent
В этой статье мы собрали основные способы, позволяющие продиагностировать и устранить неполадки службы и репозитория WMI.
Содержание
- 1 Устранение неполадок в WMI
- 1.1 Утилита WMIDiag
- 1.2 Перерегистрация библиотек WMI и перекомпиляция mof файлов
- 1.3 Пересоздание репозитория (хранилища) WMI
- 2 Запуск устройства не возможен: Код 10 — ошибка в адаптарах
- 2.1 1 Вариант
- 2.2 2 Вариант
- 2.3 3 Вариант
- 2.4 4 Вариант
- 2.5 5 Вариант
- 2.6 6 Вариант
- 2.7 7 Вариант
- 2.8 8 Вариант
- 3 Код 10 – Запуск этого устройства невозможен: что означает, как исправить ошибку
- 3.1 Что означает код 10 – «Запуск этого устройства невозможен»
- 3.2 «Запуск этого устройства невозможен» код 10: как исправить ошибку
- 4 Ошибки в Windows 10: причины возникновения и способы устранения
- 4.1 Ошибки в Windows 10, причины их возникновения и способы исправления
- 4.2 Устранение ошибок в Windows 10
- 4.3 Код ошибки 0x80070422
- 4.4 Код ошибки 0xc004f074
- 4.5 Код ошибки 0xc00007b
- 4.6 Код ошибки 0x80070091
- 4.7 Код ошибки 0x80004005
- 4.8 Код ошибки 0x800f081f
- 4.9 Код ошибки 0xc000012f
- 4.10 Код ошибки 0xC1900101
- 4.11 Код ошибки 0x80000ffff
- 4.12 Где найти «Журнал событий» в Windows 10 и как им пользоваться
- 4.13 : как просмотреть информацию об ошибках в «Журнале событий» и исправить их в Windows 10
Любой бывалый Windows-админ не раз сталкивался с проблемами в работе службы WMI и ее компонентах.
Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений
- Ошибки GPO, завязанные на WMI ( некорректная работа wmi фильтров политик, и пр.)
- Ошибки в работе / невозможность установки агентов SCCM/SCOM
- Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI
В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.
Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:
get-wmiobject Win32_OperatingSystem
Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.
Утилита WMIDiag
Для «тонкой» диагностики службы WMI существует официальная утилита Microsoft — WMIDiag (Microsoft WMI Diagnosis).
Утилита представляет собой vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:USERS%USERNAME%APPDATALOCALTEMP).
Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.1 и включает в себя следующие типы фалов :
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI
После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.
В общем случае, WMIDiag может дать информацию по исправлению частных ошибок в WMI , но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей гораздо проще «бить по площадям» и решать проблему работы WMI более радикально.
Перерегистрация библиотек WMI и перекомпиляция mof файлов
Следующий скрипт представляет собой «мягкий» вариант восстановления работоспособности службы WMI на отдельно взятом компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem for /f %%s in (‘dir /b *.dll’) do regsvr32 /s %%s wmiprvse /regserver winmgmt /regserver sc config winmgmt start= auto net start winmgmt for /f %%s in (‘dir /b *.mof’) do mofcomp %%s for /f %%s in (‘dir /b *.mfl’) do mofcomp %%s
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле и запустить его с правами администратора. После окончания работы скрипта, систему нужно перезагрузить и вновь проверить работу WMI.
Пересоздание репозитория (хранилища) WMI
В том случае, если предыдущий способ не помог, придется перейти к более «жесткому» способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилища.
WMI репозиторий (хранилище) находится в каталоге %windir%System32WbemRepository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов.
В некоторых случаях репозитория WMI может содержать статическую информацию классов.
При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
В том случае, если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание это последняя вещь, к которой нужно прибегнуть только в том случае, если никакие другие операции реанимировать WMI не помогают.
В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:
winmgmt /verifyrepository
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:
Winmgmt /salvagerepository
И перезапустить службу wmi:
net stop Winmgmtnet start Winmgmt
Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:
Winmgmt /resetrepository
В том случае, если команды Winmgmt /salvagerepository и Winmgmt /resetrepository желаемого эффекта не дали, стоит попробовать выполнить «жесткое» пересоздание базы WMI вручную таким сценарием:
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem winmgmt /kill winmgmt /unregserver winmgmt /regserver winmgmt /resyncperf if exist Repos_bakup rd Repos_bakup /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 sc config winmgmt start= auto net start winmgmt wmiprvse /regserver
Данный скрипт полностью пересоздает хранилище WMI (старый репозитория сохраняется в каталоге Repos_bakup). После окончания работы скрипта компьютер нужно перезагрузить, после чего протестировать работу службы WMI простым запросом.
В этой статье мы собрали типовые методики позволяющие устранить неполадки в работе службы WMI и ее подсистемах.
Источник: http://winitpro.ru/index.php/2014/08/12/ustranenie-nepoladok-v-wmi/
Запуск устройства не возможен: Код 10 — ошибка в адаптарах
Данная проблема актуальна практически для всех операционных систем Windows, особенно для относительно новой Windows 10. Это значит, что по каким-то причинам диспетчер задач не может запустить тот или иной гаджет.
Это может происходить по нескольким факторам:
- Драйвер, отвечающий за запуск приложения, не работает;
- Сам Диспетчер устройств не может его запустить;
- Случилась критическая ошибка, с которой, без вмешательства, пользователя Диспетчер не может справиться.
1 Вариант
Для начала следует проверить работоспособно ли само устройство. Если это сетевой адаптер, то сперва необходимо попробовать подключить его к другому компьютеру. Если на другом ПК все работает, значит, проблема в нашем железе.
2 Вариант
Также бывает, что при подключении нового устройства, компьютер не может его запустить. К счастью, это решается очень просто. Достаточно просто запустить его вручную. Для этого заходим в Диспетчер устройств. Далее, в возникшем списке ищем нужное нам устройство.
Может быть, что напротив него будет оранжевый треугольничек с восклицательным знаком. Заходим в свойства нужного нам гаджета, и во вкладке Драйвер, нажать кнопку Задействовать. После этого желательно перезапустить компьютер.
3 Вариант
Также причина может быть в отсутствии самого драйвера нужного нам устройства, по каким-то причинам система не установила его автоматически.
В таком случае, в этой же вкладке Драйвер, кликаем на кнопку Обновить. Далее, поручить работу автоматическому поиску драйверов Windows.
После процедуры перезапустить компьютер.
4 Вариант
Ошибка может возникать как следствие неправильной установки драйвера, возможных повреждений его составляющих или неправильного их обновления.
В этом случае решение тоже довольно простое.
В таком случае нам необходимо проделать ту же операцию, что и в варианте номер 3, перед этим удалить соответственный драйвер.
Для этого в уже знакомой вкладке Драйвер нажимаем на кнопочку удалить и перезагружаем компьютер. После перезагрузки система предложит оптимальный драйвер, который она нашла в режиме автоматического поиска либо мы можем указать путь к заранее скачанному обновлению.
5 Вариант
Итак, мы проделали все вышеперечисленные шаги, но ничего не помогает. Драйвер установлен правильно, работает справно, но устройство все равно не запускается. Можно попробовать использовать Мастер установки оборудования.
Для его вызова в меню Пуск, выбираем команду Выполнить и вводим команду hdwwiz. Далее, следуя инструкциям Мастера устанавливаем необходимое оборудование.
6 Вариант
Этот способ решения рассчитан на более опытных пользователей ПК, так как здесь предусмотрена работа с реестром.
Бывает такое, что запуск устройства невозможен из-за большого количества устройств в реестре. То есть, все место занимают устройства, которые подключались ранее.
Нам необходимо уменьшить их количество.
Для этого в Диспетчере устройств необходимо включить отображение устройств, которые не подключены в данный момент к компьютеру. В меню Пуск вызываем Выполнить и вводим команду cmd после чего нам открывается командная строка.
Тут вводим команду Set и потом devmgr_show_nonpresent_devices = 1.
Теперь в Диспетчере устройств во вкладке Вид выбираем Показать скрытые устройства. Нам показываются все устройства, которые сейчас не используются. Удаляем все лишние и перезагружаем компьютер. После перезагрузки проверяем в Диспетчере, все ли удалилось.
7 Вариант
Если в процессе установок и переустановок драйверов, операционная система перестала нормально запускаться, следует воспользоваться функцией: Последняя известная удачная конфигурация. В реестре сохраняются параметры последнего удачного запуска и воспользовавшись этой функцией, можно восстановить все параметры до тех, которые не вызывали ошибку.
Для этого во время загрузки нажмите F8 и выберите необходимый вариант загрузки, и система восстановит параметры.
8 Вариант
Внимание! Данный способ следует использовать только в крайнем случае и при условии, что вы опытный пользователь ПК.
Дело в том, что для нормальной работы, устройства сначала должны быть опознаны в BIOS, обычно это происходит автоматически.
Если же этого не произошло, то необходимо обновить прошивку BIOS, скачав ее с официального сайта.
Но делать это стоит очень внимательно, проверив версию и совместимость со всем железом вашего ПК.
Неправильные действия могут полностью заблокировать систему. Так что если вы не уверены в своих силах – делать этого не стоит. Лучше отнести ПК в сервисный центр, где это сделают обученные люди.
Источник: http://xodex.ru/zapusk-ustroystva-ne-vozmozhen-kod-10/
Код 10 – Запуск этого устройства невозможен: что означает, как исправить ошибку
Операционная система Windows полна сюрпризов, и среди них много неприятных.
Пользователям приходится сталкиваться с различными ошибками при работе на компьютерах с Windows, при этом система не предлагает варианты решения проблем.
Одной из таких ошибок, с которой может столкнуться каждый в Windows 7 и более свежих версиях операционной системы, присвоен код 10.
Данная ошибка информирует, что «Запуск этого устройства невозможен», при этом возникать она может в самых разных ситуациях: при подключении USB-устройств (флешка, внешний жесткий диск, wi-fi адаптер и так далее), при установке видеокарты или звуковой карты, во время работы с сетью и так далее.
Что означает код 10 – «Запуск этого устройства невозможен»
Однозначно определить причину, из-за которой возникает ошибка под кодом 10 в Windows при подключении устройства, достаточно сложно.
Дело в том, что сама ошибка информирует пользователя о невозможности запуска устройства, оставляя его самостоятельно разбираться, с чем это связано.
Можно предположить следующие причины ее возникновения:
- Система не смогла установить драйвера для подключаемого устройства;
- Драйвер устройства сообщил о наличии ошибки, но Windows не смогла ее расшифровать;
- Подключенное устройство не передало всю необходимую для идентификации и начала работы информацию системе.
При этом возникать ошибка под кодом 10 в Windows может как при первом подключении устройства, так и при одном из последующих.
«Запуск этого устройства невозможен» код 10: как исправить ошибку
Определившись с возможными причинами возникновения ошибки, можно сделать вывод, что чаще всего она связана с отсутствием драйвера или его неправильной установкой. Соответственно, чтобы исправить проблему нужно сделать следующее:
- Нажмите правой кнопкой мыши на «Пуск» и выберите в выпадающем меню пункт «Диспетчер устройств»;
- Далее найдите в списке устройств проблемное. В зависимости от того, с чем возникла проблема, необходимый пункт будет находиться в соответствующем разделе. Обратите внимание: об ошибке при определении и работе устройства пользователю сообщит восклицательный знак в желтом треугольнике;
- Нажмите правой кнопкой мыши на неисправно работающем устройстве и выберите пункт «Свойства»;
- Откроется окно, в котором необходимо перейти на вкладку «Драйвер» и нажать «Обновить». При обновлении драйвера его можно поискать автоматически или использовать для работы устройства сторонний драйвер, хранящийся на компьютере. Советуем сначала попробовать автоматически обновить драйвер устройства, а если не получится, то зайти на официальный сайт разработчиков подключаемого устройства, скачать оттуда драйвер и попытаться установить его.
В большинстве случаев обновление драйвера позволяет исправить ошибку «запуск этого устройства невозможен», идентифицируемую под кодом 10 в системе Windows.
Обратите внимание: Иногда устройство может отказываться работать именно после установки новых драйверов. В таком случае рекомендуется поискать на сайте производителя или на других проверенных сайтах в интернете более старые драйвера для устройства, при подключении которого возникает ошибка с кодовым номером 10.
Если переустановка драйверов не поспособствовала устранению ошибки «Запуск этого устройства невозможен», рекомендуем попробовать следующее:
- Выполнить сброс реестра до значений по умолчанию;
- Проверить работу подключаемого устройства на другом компьютере. Не исключено, что ошибка возникает по причине его неправильной работы или, например, из-за повреждения разъема для подключения. Также рекомендуется попробовать вставить проблемное устройство в другой разъем в компьютере, например, если речь идет о USB-устройстве, то в другой USB-порт;
- Если в последнее время устанавливались на компьютер какие-либо драйвера, не исключено, что они мешают нормальной работе устройства. Попробуйте их удалить;
- Имеется вероятность, что ошибка под кодом 10 возникает из-за несовместимости текущей версии Windows и подключаемого устройства, в такой ситуации потребуется обновить операционную систему.
Обратите внимание, что если ранее устройство без проблем работало на компьютере, а через некоторое время при подключении начало отзываться ошибкой, можно попробовать выполнить восстановление Windows до контрольной точки.
(436 голос., 4,48 из 5)
Загрузка…
Источник: https://okeygeek.ru/kod-10-zapusk-ehtogo-ustrojjstva-nevozmozhen/
Ошибки в Windows 10: причины возникновения и способы устранения
Новые операционные системы не застрахованы от возникновения проблем в своей работе.
Чем больше узлов и компонентов в системе, тем больше возможных вариантов ошибок оборудования люди или программы могут спровоцировать. Windows в своей номенклатуре насчитывает несколько тысяч вариантов ошибок.
Каждая из них имеет свой код, по которому можно определить причину возникновения проблемы и, как следствие, устранить её источник.
Ошибки в Windows 10, причины их возникновения и способы исправления
Ошибки имеют свои причины и следствия, но не все из них можно легко устранить. Например, некоторые проблемы можно исправить только переустановкой ОС.
Также есть малая доля ошибок, причина которых заключается в нарушении аппаратной работы устройств компьютера или ноутбука.
В этом случае не обойтись без мастеров сервисного центра.
При возникновении любой ошибки в Windows 10 необходимо проверить жёсткие диски на предмет наличия заражённых вирусами файлов. Для этого нужно использовать больше одной антивирусной программы и проводить самую тщательную проверку системы.
Если речь идёт о некритичных ошибках системы, то в первую очередь нужно понять принцип лечения проблемы. С расшифровкой кода ошибки может помочь «Журнал событий Windows», где предоставляются данные о службе, в которой возникла неполадка, а также информация о возникшей проблеме.
Устранение ошибок в Windows 10
Конечно, в таблице из предыдущего пункта приведены далеко не все ошибки, связанные с Windows 10, но представленные коды встречаются чаще других во время работы этой ОС.
Сверив код любой ошибки, просмотрев описание события в журнале, вы можете самостоятельно понять, как решить проблему, и не допустить её возникновения впредь.
Код ошибки 0x80070422
Для устранения этой ошибки выполните следующее:
- В поле поиска Windows (значок в виде лупы возле меню «Пуск») введите services.msc.Введя в поисковую строку соответствующий запрос, можно открыть перечень служб Windows 10
- Выберите необходимую вам службу. В случае обновления системы кликните по «Центру обновления Windows». Двойным щелчком мыши откройте свойства службы и поменяйте тип запуска на «Автоматически».Поменяйте тип запуска службы на «Автоматически»
- Подтвердите изменения кнопкой «OK».
- Аналогично включите следующие службы:
- «Фоновая интеллектуальная служба передачи (BITS)»;
- «Удалённый вызов процедур (RPC)»;
- «Службы криптографии»;
- «Служба модуля архивации на уровне блоков»;
- «Брандмауэр защитника Windows».
После завершения всех манипуляций не забудьте перезагрузить компьютер.
Код ошибки 0xc004f074
Первое, что нужно сделать после проверки на наличие вирусов, — настроить часовой пояс.
- Нажмите комбинацию клавиш Win + I или через меню «Пуск» откройте «Параметры».
- Перейдите в элемент «Время и язык».
- Во вкладке «Дата и время» переместите бегунок влево в пункте «Установить время автоматически».Переместите бегунок влево в пункте «Установить время автоматически»
Если проблема не исчезла, повторите процедуру активации Windows.
Код ошибки 0xc00007b
Первым делом нужно обновить драйверы всех видеокарт:
- Щёлкните правой кнопкой по значку Windows в левом нижнем углу и выберите пункт «Диспетчер устройств».Через меню Windows откройте «Диспетчер устройств»
- Убедитесь, что все устройства, которые подключены к вашему компьютеру, имеют свой драйвер. Если какой-либо девайс не имеет программной оболочки, он будет находиться во вкладке «Другие устройства».
- Щёлкните правой кнопкой по устройству и выберите пункт «Обновить драйвер».В контекстном меню выбираем «Обновить драйвер»
- Дождитесь окончания обновления и перезагрузите компьютер.
Вторая вероятная причина появления ошибки — повреждение или отсутствие DirectX.
- Скачайте с официального сайта Microsoft «Веб-установщик исполняемых библиотек DirectX для конечного пользователя».Для начала скачивания нужного файла нажмите кнопку «Скачать»
- Запустите скачанный файл и несколько раз нажмите «Далее», пока не запустится и не завершится работа онлайн-установщика. Перезагружать компьютер необязательно, можно сразу попробовать запустить приложение, которое выдавало ошибку.
И последняя причина возникновения ошибки — неисправные или отсутствующие компоненты Net.Framework или Microsoft Visual C++ Redistributable.
- Скачайте с официального сайта Microsoft:
- Net.Framework;Net Framework требуется для выполнения любой программы, написанной на его платформе
- Microsoft Visual C++.Без пакета Visual C++ не запустятся программы и игры, при разработке которых была использована среда Microsoft Visual C++
- Аналогичным образом, как с DirectX, запустите установщики и установите необходимые средства работы графических библиотек.
Код ошибки 0x80070091
Убедитесь, что вы не пытаетесь удалить важную системную папку с диска, на который установлена ОС. «Наводить порядок» самостоятельно на этом разделе диска крайне не рекомендуется.
Ошибка 0x80070091 означает запрет на удаление папки
Если же вы пытаетесь удалить самую обычную папку и получаете подобного рода проблему, велика вероятность того, что в папке записан файл, который имеет ошибку. Необходимо попробовать вылечить всю файловую систему:
- Откройте свойства раздела жёсткого диска, на котором возникла ошибка. Для этого в «Проводнике» или любом файловом менеджере щёлкните правой кнопкой по разделу диска и выберите «Свойства».
- Перейдите во вкладку «Сервис» и нажмите кнопку «Проверить».Кнопка «Проверить» запускает исследование файловой системы
- Если Windows нашла ошибки файловой системы, она предложит вам восстановить их. Согласитесь и дождитесь окончания работы мастера.Нажмите кнопку «Восстановить» для запуска восстановления файловой системы
- Перезагрузите компьютер и повторите процедуру удаления.
Код ошибки 0x80004005
После проверки компьютера на вирусы запустите проверку системы:
- Вызовите меню Windows комбинацией клавиш Win + X.
- Запустите «Командную строку (администратор)».
- Введите команду sfc /scannow, нажмите клавишу Enter и дождитесь, пока она завершит свою работу. После чего повторите процедуру обновления.Команда sfc /scannow запускает проверку системных файлов
Если же ошибка не исчезла, скорее всего, причиной проблемы стали неполадки в кэше обновлений. Для исправления необходимо очистить папку со временными данными.
- Пройдите по пути C:WindowsSoftwareDistributionDownload и удалите всё содержимое этой папки.Удалите всё содержимое папки кэша обновлений
- Перезагрузите компьютер и попробуйте обновиться.
Код ошибки 0x800f081f
Лечение очень простое.
- Запустите «Командную строку» от имени администратора.Нажмите сочетание клавиш Win + X и выберите в меню пункт «Командная строка (администратор)»
- Введите последовательно две команды:
- DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:G:SourcesInstall.wim:1 /LimitAccess;
- DISM /Online /cleanup-image /restorehealth.
- Перезапустите ПК и снова попробуйте установить платформу фреймворка.
Код ошибки 0xc000012f
Первое, что нужно сделать, — запустить средство исправления проблем с совместимостью.
- Щёлкните по ярлыку или исполняющему файлу правой кнопкой и выберите пункт «Исправление проблем с совместимостью».
- Пользуясь подсказками мастера, запустите работу по исправлению. После завершения процедуры попробуйте запустить приложение.
Если ошибка не исчезла, в «Командной строке» запустите команду sfc /scannow. Как это сделать, описано в пункте, посвящённом ошибке с кодом 0x80004005.
Дождитесь окончания работы службы.
Если и этот способ не помог, попробуйте переустановить приложение, поищите в интернете более свежую его версию, а также аналоги.
Код ошибки 0xC1900101
Чтобы избавиться от ошибки 0xC1900101, необходимо перепроверить разрядность системы и сравнить её с продуктами, которые вы ставите на свой девайс.
- Щёлкните правой кнопкой по иконке компьютера и выберите «Свойства».
- Узнайте разрядность системы.Разрядность системы можно узнать в свойствах компьютера
Если на компьютер установлена 64-битная система, вы можете устанавливать 32-битные приложения, но нельзя ставить не 64-битные драйверы. Если у вас 32-разрядная, то вам подходят только приложения разрядности 32 бита и такие же драйверы. При попытке установить некорректный драйвер, вы получите ошибку.
Также в случае, когда на жёстком диске недостаточно памяти, удалите ненужные приложения и пользовательские файлы или переместите их на другой раздел диска.
Код ошибки 0x80000ffff
Решения этой проблемы следующие:
- проверьте настройки времени и переключите тумблер в пункте «Установить время автоматически» в положение «Выкл.». Как это сделать, было описано в пункте, посвящённом ошибке с кодом 0xc004f074;
- попробуйте запустить приложение в режиме совместимости, как было описано в пункте, посвящённом ошибке 0xc000012f;
- проверьте настройки сети и доступ к интернету. Также удостоверьтесь, что ваши антивирусы не блокируют доступы к серверам программы.
Где найти «Журнал событий» в Windows 10 и как им пользоваться
«Журнал событий» — это служба, отмечающая все события, которые фиксируются во время работы ОС.
Буквально всё — от времени запуска и выключения операционной системы до неудачных попыток установки обновлений и возникновений критических ошибок во время работы — записывается в журнал.
Пользоваться им очень просто: необходимо его открыть и просмотреть информацию о событии.
- Щёлкните правой кнопкой по иконке «Этот компьютер» и выберите пункт «Управление».В контекстном меню выберите «Управление»
- Откройте вкладки «Служебные программы» — «Просмотр событий» — «Журналы Windows» — «Система».
- После того, как все события прогрузятся, их можно упорядочить по «Уровню», «Дате и времени» и прочим причинам. В зависимости от опасности угрозы для компьютера события делятся на:
- сведения;
- предупреждения;
- ошибки.
- Выберите интересующее вас событие и просмотрите информацию, которая отобразится ниже.В «Журнале событий» вы найдёте код ошибки и всю информацию о ней
: как просмотреть информацию об ошибках в «Журнале событий» и исправить их в Windows 10
Ошибки Windows не так страшны, как могут показаться на первый взгляд. Существует не так много действительно критических проблем, которые фатально влияют на работу системы или компьютера. Большинство ошибок можно легко устранить, если пользоваться правильными инструкциями.
- Алексей Герус
- Распечатать
Источник: https://dadaviz.ru/ispravlenie-oshibok-windows-10/
Ошибка WMI код 10 как устранить в Windows 7
Ошибка WMI код 10 встречается в операционной системе Windows 7 на всех компьютерах после установки операционной системы и сервис пака с привода DVD или с загрузочной флэшки на которой был установочный образ системы.
Что бы посмотреть наличие ошибки WMI с кодом 10 щелкните правой клавишей мышки (далее ПКМ) на «Мой компьютер» в выпадающем меню нажмите левой кнопкой мыши (далее ЛКМ) на «Управление».
вход в управление компьютером
В открывшемся окне «Управление компьютером (локальным)» нажмите на «Просмотр событий» затем «Журналы Windows» и «Приложения», нашли эту ошибку, тогда читаем дальше как устранить ошибку .
Ошибка WMI код 10 устранение
2. Перезагружаем компьютер в безопасный режим. Для этого на начальном экране загрузки загрузки компьютера (как только у вас на мониторе появились белые буквы на черном фоне или цветная эмблема материнской платы) жмите клавишу F8, нажимать можно несколько раз ничего не испортите.
Начальный экран загрузки компьютера
3. Должны увидеть варианты загрузки, выбираете «Безопасный режим» и нажимаете «Enter» на клавиатуре.
Выбор загрузки безопасного режима
4. После загрузки в безопасном режиме щелкните ПКМ на «Мой компьютер» в выпадающем меню нажмите ЛКМ на «Управление».
вход в управление компьютером
В открывшемся окне «Управление компьютером (локальным)» нажмите на «Службы и приложения» а после на «Службы».
5. Находим службу Инструментарий управления Windows (Windows Management Instrumentation), останавливаем её кнопкой «Остановить» после этого окно «Управление компьютером» можно закрыть.
остановка службы winmgmt
6.Открываем папку, вот её местонахождение c:windowssystem32wbemrepository. В этой папке видим файлы:
INDEX.BTR
MAPPING1.MAP
MAPPING2.MAP
MAPPING3.MAP
OBJECTS.DATA>
На всякий случай скопируйте файлы в папку где бы Вы могли их потом найти. А затем удалите эти файлы из папки /repository.
7. Произведите перезагрузку компьютера «Пуск» далее «Перезагрузка».
8. При первоначальной загрузке компьютера возможно торможение, некоторое замедление в работе. Ничего страшного — после двух перезагрузок компьютер станет работать нормально.
9. Вторая загрузка должна пройти быстрее. Проверяем журнал Windows, как во втором абзаце, больше никаких ошибок WMI код 10 у Вас не должно появляться!
10. Включаем контроль учетных записей обратно.
В Майкрософт про ошибку WMI c кодом 10 говорят, что она не критичная и на работоспособность никак не влияет. Но кому понравиться если Ваш компьютер будет «ругаться» на какие-то там ошибки, к тому же если решение довольно простое.
Надеюсь кому-нибудь пригодиться эта шпаргалка которая Вам поможет победить ошибку WMI код 10.
Источник
Wmi ошибка код 10 windows 7
Как устранить ошибку WMI с кодом 10 при запуске Windows 7 / Vista с установленным SP
Эта проблема проявляется на Windows Vista после установки SP1 (присутствует и в SP2), а также наблюдается в Windows 7 после установки SP1.
Сообщение об ошибке в разделе Просмотр событий -> Журналы Windows -> Приложение :
Event filter with query «SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA «Win32_Processor» AND TargetInstance.LoadPercentage > 99? could not be reactivated in namespace «//./root/CIMV2? because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected.
Ошибка WMI (код события: 10)
Ошибка WMI (код события: 10)
Отключаем контроль учетных записей.
Перезагружаемся в безопасный режим.
Останавливаем службу Инструментарий управления Windows (Windows Management Instrumentation).
Открываем папку c:windowssystem32wbemrepository. На всякий случай содержимое папки копируем в безопасное место, а затем удаляем.
Перезагружаемся.
При первой загрузке возможны проблемы: торможение, подвисания и т.п. Ничего страшного — перезагружаемся еще раз.
Вторая загрузка должна пройти быстро и без помех. Проверяем логи — больше никаких ошибок WMI во время загрузки системы!
Включаем контроль учетных записей обратно.
В заключение следует сказать о том, что данная ошибка классифицируется в Микрософт как некритичная и не влияющая на работоспособность системы. И это действительно так, два года проработал с ней без проблем. Но если есть способ исправить, почему бы это не сделать? ))
Исправил по следующей инструкции:
http://www.msfn.org/board/topic/114389-heres-how-to-fix-wmi-event-id-10-instancemodificationeven/
At a command prompt, type the following command:
%WINDIR%System32msdtc.exe -uninstall
5. Start Registry Editor, and then remove the following registry keys if they exist: • HKEY_CLASSES_ROOTCID
• HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSDTC
• HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesMSDTC
• HKEY_LOCAL_MACHINESYSTEMControlSet002ServicesMSDTC
• HKEY_LOCAL_MACHINESoftwareMicrosoftMSDTC
6. At a command prompt, type %WINDIR%System32msdtc.exe -install.
Поделись ссылкой в соцсети!
Перепечатка материалов разрешена только при наличии прямой ссылки на сайт!
Источник
Ошибка Запуск этого устройства невозможен (код 10) в Windows 7
Ошибка Запуск этого устройства невозможен (код 10) в Windows 7
Всем привет, сегодня мне позвонил мой друг и рассказал про такую ошибку, после установки нового оптического привода (в моем случае с SATA-интерфейсом, система обнаруживает его, но в диспетчере устройств на нем стоит восклицательный знак «!», а состоянии устройства стоит статус «Запуск этого устройства невозможен код 10», самое неприятное, что данную проблему вы можете встретить и с флешкой, мышкой, WiFi
Причины ошибки: запуск устройства невозможен код ошибки 10
Как я вам не перестаю повторять, прежде чем, что-то исправлять, нужно понять, из-за чего это происходит, чтобы не лечить постоянно следствие проблемы, а избавляться от нее кардинально и на совсем. Рассмотрим основные причины:
- Я всегда в первую очередь проверяю физику устройства > под физикой понимается, отсутствие механических повреждений, если у вас DVD-rom, то убедитесь, чтобы там ничего не тряслось, если флешка, то попробуйте ее воткнуть в другой USB порт компьютера, так как я чаще всего встречал, что запуск этого устройства невозможен код 10 именно с флешкой. Если это видеокарта или звуковое устройство, то попробуйте воткнуть в другой слот на материнской плате, если у нее они конечно же присутствуют.
- Криво установилось устройство, чаще всего в этом виновата самая Windows.
- Повреждены некоторые ветки реестра Windows.
- Происходит конфликт оборудования
Решаем ошибку: Запуск данного устройства невозможен код 10
Давайте теперь рассмотрим, как со сто процентной уверенностью устранить проблему с запуском данного устройства с кодом 10.
- Про физику устройства я вам уже написал
- Следующим шагом я вам посоветую удалить это проблемное устройство в диспетчере, так как оно могло установиться не правильно, для этого щелкните по нему правым кликом и из контекстного меню выберите удалить, я так поступил с Bluetooth Audio Device.
или вот пример с Serial Comm Port
А вот и код 10 с USB устройством. Как видите, ошибка выскакивает везде.
После удаления устройства, в самом верху диспетчера устройств, щелкните правым кликом по названию вашего компьютера и выберите Обновить конфигурацию оборудования. Ваша операционная система просканирует все доступные устройства на вашем компьютере и установит, если обнаружит, что то новое, так как при первой попытке установить, могли возникнуть проблемы или ошибки, в следствии чего был код 10.
- Правим реестр Windows. Запустите редактор реестра (Пуск -> Выполнить… -> regedit или сочетание клавиш WIN+R). Переходим там в ветку
в котором параметр Default имеет значение DVD/CD-ROM, а параметр Class — значение CDROM (в реестре может быть несколько экземпляров ветки <4D36E965-E325-11CE-BFC1-08002BE10318>, так что эти параметры позволят опознать нужный нам).
Найдите в этом разделе параметры UpperFilters и LowerFilters и удалите их. Закройте редактор реестра и перезагрузите компьютер, поидее ошибка Запуск этого устройства невозможен (код 10) в Windows 7 должна пропасть, если нет, то делаем следующее.
- Установите все возможные обновления доступные для системы. Для этого открываем Пуск > Панель управления > Центр обновления Windows.
Учтите, что в последнее время Microsoft пытается избавиться от Windows 7, поэтому участились случаи когда идет бесконечное обновление Windows 7.
- Еще может в некоторых случаях, когда операционная система пишет запуск устройства невозможен код 10, можно произвести обновление всех драйверов на ваше железо, я всегда вам советую, все держать в актуальных версиях.
- Бывают ситуации, что происходит конфликт оборудования, у меня так было с внешним HDD и кард ридером Alcor mini USB card reader. Вот пример, когда мой жесткий, внешний диск пишет запуск устройства невозможен код 10, но самое забавное сам он зажужжал, ему тeпо не хватило питания для старта.
Отключаю ФИЗИЧЕСКИ Alcor mini USB card reader и заново включаю внешний HDD
И о чудо! USM Mass Storage Device нормльно определился в системе.
Как видите ошибка: Запуск этого устройства невозможен код 10 в Windows 7 устраняется весьма просто, главное выявить на будущее причину.
Источник
Некоторые пользователи Windows 7 время от времени могут сталкиваться с ошибкой 0x80041003. Ее предвестником, например, может быть зависание ПК, от которого можно избавиться лишь его перезагрузкой. В Просмотре событий вы можете найти следующую информацию по ошибке:
Event filter with query “SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA “Win32_Processor” AND TargetInstance.LoadPercentage > 99″ could not be reactivated in namespace “//./root/CIMV2” because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected
В сегодняшней статье мы рассмотрим два метода, которые — по заявлению многих пользователей — могут разрешить ошибку 0x80041003 в Windows 7. Первый метод — применение скрипта VBS, а второй — использование средства, разработанного самой компанией Майкрософт.
Ошибка 0x80041003 в Windows 7: методы решения
Метод №1 Выполнение скрипта VBS
- Создайте на своем рабочем столе простой текстовый документ;
- откройте документ и вставьте в него следующий скрипт:
- strComputer = «.»Set objWMIService = GetObject(«winmgmts:» _& «{impersonationLevel=impersonate}!» _& strComputer & «rootsubscription»)Set obj1 = objWMIService.Get(«__EventFilter.Name=’BVTFilter’»)
set obj2set = obj1.Associators_(«__FilterToConsumerBinding»)
set obj3set = obj1.References_(«__FilterToConsumerBinding»)
For each obj2 in obj2setWScript.echo «Deleting the object»WScript.echo obj2.GetObjectText_obj2.Delete_next
For each obj3 in obj3setWScript.echo «Deleting the object»WScript.echo obj3.GetObjectText_obj3.Delete_next
WScript.echo «Deleting the object»WScript.echo obj1.GetObjectText_obj1.Delete_
- strComputer = «.»Set objWMIService = GetObject(«winmgmts:» _& «{impersonationLevel=impersonate}!» _& strComputer & «rootsubscription»)Set obj1 = objWMIService.Get(«__EventFilter.Name=’BVTFilter’»)
- переименуйте данный документ в fixeventid10 и замените его расширение на .VBS — получиться у вас должен файл fixeventid10.vbs;
- дважды кликните на этот файл, чтобы запустить его;
- в Просмотре событий Windows 7 удалите все логи события 10, которые относятся к ошибке 0x80041003, чтобы те больше не мешались вам в будущем.
Метод №2 Запуск Fix It от Майкрософт
- Скачайте с официального сайта Майкрософт средство Fix It;
- запустите его и следуйте указаниям на своем экране;
- протестируйте систему и проверьте, была ли устранена ошибка 0x80041003.
Мы надеемся, что данный материал помог вам избавиться от ошибки 0x80041003, и вы продолжили спокойно использовать Windows 7.
Нашли опечатку? Выделите текст и нажмите Ctrl + Enter
Сообщение об ошибке в разделе Просмотр событий -> Журналы Windows -> Приложение :
Event filter with query “SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA “Win32_Processor” AND TargetInstance.LoadPercentage > 99″ could not be reactivated in namespace “//./root/CIMV2” because of error 0x80041003. Events cannot be delivered through this filter until the problem is corrected.
Как исправить:
- Отключаем контроль учетных записей.
- Перезагружаемся в безопасный режим.
- Останавливаем службу Инструментарий управления Windows (Windows Management Instrumentation).
- Открываем папку c:windowssystem32wbemrepository. На всякий случай содержимое папки копируем в безопасное место, а затем удаляем.
- Перезагружаемся.
- При первой загрузке возможны проблемы: торможение, подвисания и т.п. Ничего страшного – перезагружаемся еще раз.
- Вторая загрузка должна пройти быстро и без помех. Проверяем логи – больше никаких ошибок WMI во время загрузки системы!
- Включаем контроль учетных записей обратно.
В заключение следует сказать о том, что данная ошибка классифицируется в Микрософт как некритичная и не влияющая на работоспособность системы. И это действительно так, два года проработал с ней без проблем. Но если есть способ исправить, почему бы это не сделать? ))
Рэнди Франклин Смит (CISA, SSCP, Security MVP) имеет в своем арсенале очень полезный документ, рассказывающий о том, какие события (event IDs) обязательно должны отслеживаться в рамках обеспечения информационной безопасности Windows. В этом документе изложена крайне полезная информация, которая позволит Вам “выжать” максимум из штатной системы аудита. Мы подготовили перевод этого материала. Заинтересованных приглашаем под кат. О том, как настроить аудит, мы уже обстоятельно писали в одном из наших постов. Но из всех event id, которые встречаются в журналах событий, необходимо остановить свое внимание на нескольких критических важных. На каких именно – решать каждому. Однако Рэнди Франклин Смит предлагает сосредоточить внимание на 10 важных событиях безопасности в Windows.
Контроллеры доменов
Event ID — (Категория) — Описание 1) 675 или 4771 (Аудит событий входа в систему) Событие 675/4771 на контроллере домена указывает на неудачную попытку войти через Kerberos на рабочей станции с доменной учетной записью. Обычно причиной этого является несоответствующий пароль, но код ошибки указывает, почему именно аутентификация была неудачной. Таблица кодов ошибок Kerberos приведена ниже. 2) 676, или Failed 672 или 4768(Аудит событий входа в систему) Событие 676/4768 логгируется для других типов неудачной аутентификации. Таблица кодов Kerberos приведена ниже. ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 672 вместо 676. 3) 681 или Failed 680 или 4776(Аудит событий входа в систему) Событие 681/4776 на контроллере домена указывает на неудачную попытку входа в систему через NTLM с доменной учетной записью. Код ошибки указывает, почему именно аутентификация была неудачной. Коды ошибок NTLM приведены ниже. ВНИМАНИЕ: В Windows 2003 Server событие отказа записывается как 680 вместо 681. 4) 642 или 4738 (Аудит управления учетными записями) Событие 642/4738 указывает на изменения в указанной учетной записи, такие как сброс пароля или активация деактивированной до этого учетной записи. Описание события уточняется в соответствие с типом изменения. 5) 632 или 4728; 636 или 4732; 660 или 4756(Аудит управления учетными записями) Все три события указывают на то, что указанный пользователь был добавлен в определенную группу. Обозначены Глобальная (Global), Локальная (Local) и Общая (Universal) соответственно для каждого ID. 6) 624 или 4720 (Аудит управления учетными записями) Была создана новая учетная запись пользователя 7) 644 или 4740(Аудит управления учетными записями) Учетная запись указанного пользователя была заблокирована после нескольких попыток входа 517 или 1102(Аудит системных событий) Указанный пользователь очистил журнал безопасности
Вход и выход из системы (Logon/Logoff)
Event Id — Описание528 или 4624 — Успешный вход в систему529 или 4625 — Отказ входа в систему – Неизвестное имя пользователя или неверный пароль 530 или 4625 Отказ входа в систему – Вход в систему не был осуществлен в течение обозначенного периода времени531 или 4625 — Отказ входа в систему – Учетная запись временно деактивирована 532 или 4625 — Отказ входа в систему – Срок использования указанной учетной записи истек533 или 4625 — Отказ входа в систему – Пользователю не разрешается осуществлять вход в систему на данном компьютере 534 или 4625 или 5461 — Отказ входа в систему – Пользователь не был разрешен запрашиваемый тип входа на данном компьютере535 или 4625 — Отказ входа в систему – Срок действия пароля указанной учетной записи истек539 или 4625 — Отказ входа в систему – Учетная запись заблокирована540 или 4624 — Успешный сетевой вход в систему (Только Windows 2000, XP, 2003)
Типы входов в систему (Logon Types)
Тип входа в систему — Описание2 — Интерактивный (вход с клавиатуры или экрана системы)3 — Сетевой (например, подключение к общей папке на этом компьютере из любого места в сети или IIS вход — Никогда не заходил 528 на Windows Server 2000 и выше. См. событие 540)4 — Пакет (batch) (например, запланированная задача)5 — Служба (Запуск службы)7 — Разблокировка (например, необслуживаемая рабочая станция с защищенным паролем скринсейвером) 8 — NetworkCleartext (Вход с полномочиями (credentials), отправленными в виде простого текст. Часто обозначает вход в IIS с “базовой аутентификацией”) 9 — NewCredentials10 — RemoteInteractive (Терминальные службы, Удаленный рабочий стол или удаленный помощник) 11 — CachedInteractive (вход с кешированными доменными полномочиями, например, вход на рабочую станцию, которая находится не в сети)
Коды отказов Kerberos
Код ошибки — Причина6 — Имя пользователя не существует12 — Ограничение рабочей машины; ограничение времени входа в систему18 — Учетная запись деактивирована, заблокирована или истек срок ее действия23 — Истек срок действия пароля пользователя24 — Предварительная аутентификация не удалась; обычно причиной является неверный пароль32 — Истек срок действия заявки. Это нормальное событие, которое логгируется учетными записями компьютеров37 — Время на рабочей машины давно не синхронизировалось со временем на контроллере домена
Коды ошибок NTLM
Код ошибки (десятичная система) — Код ошибки (16-ричная система) — Описание 3221225572 — C0000064 — Такого имени пользователя не существует 3221225578 — C000006A — Верное имя пользователя, но неверный пароль 3221226036 — C0000234 — Учетная запись пользователя заблокирована 3221225586 — C0000072 — Учетная запись деактивирована 3221225583 — C000006F — Пользователь пытается войти в систему вне обозначенного периода времени (рабочего времени) 3221225584 — C0000070 — Ограничение рабочей станции 3221225875 — C0000193 — Истек срок действия учетной записи 3221225585 — C0000071 — Истек срок действия пароля 3221226020 — C0000224 — Пользователь должен поменять пароль при следующем входе в систему Еще раз продублируем ссылку на скачивание документа на сайте Рэнди Франклина Смита www.ultimatewindowssecurity.com/securitylog/quickref/Default.aspx. Нужно будет заполнить небольшую форму, чтобы получить к нему доступ.P.S. Хотите полностью автоматизировать работу с журналами событий? Попробуйте новую версию NetWrix Event Log Manager 4.0, которая осуществляет сбор и архивирование журналов событий, строит отчеты и генерирует оповещения в режиме реального времени. Программа собирает данные с многочисленных компьютеров сети, предупреждает Вас о критических событиях и централизованно хранит данные обо всех событиях в сжатом формате для удобства анализа архивных данных журналов. Доступна бесплатная версия программы для 10 контроллеров доменов и 100 компьютеров. Используемые источники:
- https://gamesqa.ru/kompyutery/0x80041003-10007/
- https://www.q2w3.ru/2011/03/24/3365/
- https://habr.com/post/148501/
Содержание
- 1 Ошибка WMI код 10 как исправить
- 1.1 Утилита WMIDiag
- 1.2 Перерегистрация библиотек WMI и перекомпиляция mof файлов
- 1.3 Пересоздание репозитория (хранилища) WMI
- 2 Устранение неполадок в WMI
Любой бывалый Windows-админ не раз сталкивался с проблемами в работе службы WMI и ее компонентах.
Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений
- Ошибки GPO, завязанные на WMI ( некорректная работа wmi фильтров политик, и пр.)
- Ошибки в работе / невозможность установки агентов SCCM/SCOM
- Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI
В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.
Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:
get-wmiobject Win32_OperatingSystem
Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.
Утилита WMIDiag
Для «тонкой» диагностики службы WMI существует официальная утилита Microsoft — WMIDiag (Microsoft WMI Diagnosis).
Утилита представляет собой vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:USERS%USERNAME%APPDATALOCALTEMP).
Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.1 и включает в себя следующие типы фалов :
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI
После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.
В общем случае, WMIDiag может дать информацию по исправлению частных ошибок в WMI , но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей гораздо проще «бить по площадям» и решать проблему работы WMI более радикально.
Перерегистрация библиотек WMI и перекомпиляция mof файлов
Следующий скрипт представляет собой «мягкий» вариант восстановления работоспособности службы WMI на отдельно взятом компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem for /f %%s in (‘dir /b *.dll’) do regsvr32 /s %%s wmiprvse /regserver winmgmt /regserver sc config winmgmt start= auto net start winmgmt for /f %%s in (‘dir /b *.mof’) do mofcomp %%s for /f %%s in (‘dir /b *.mfl’) do mofcomp %%s
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле и запустить его с правами администратора. После окончания работы скрипта, систему нужно перезагрузить и вновь проверить работу WMI.
Пересоздание репозитория (хранилища) WMI
В том случае, если предыдущий способ не помог, придется перейти к более «жесткому» способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилища.
WMI репозиторий (хранилище) находится в каталоге %windir%System32WbemRepository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов.
В некоторых случаях репозитория WMI может содержать статическую информацию классов.
При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.
В том случае, если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание это последняя вещь, к которой нужно прибегнуть только в том случае, если никакие другие операции реанимировать WMI не помогают.
В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:
winmgmt /verifyrepository
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:
Winmgmt /salvagerepository
И перезапустить службу wmi:
net stop Winmgmtnet start Winmgmt
Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:
Winmgmt /resetrepository
В том случае, если команды Winmgmt /salvagerepository и Winmgmt /resetrepository желаемого эффекта не дали, стоит попробовать выполнить «жесткое» пересоздание базы WMI вручную таким сценарием:
sc config winmgmt start= disabled net stop winmgmt cd %windir%system32wbem winmgmt /kill winmgmt /unregserver winmgmt /regserver winmgmt /resyncperf if exist Repos_bakup rd Repos_bakup /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 sc config winmgmt start= auto net start winmgmt wmiprvse /regserver
Источник: https://ichudoru.com/oshibka-wmi-kod-10-kak-ispravit/
Устранение неполадок в WMI
Любой бывалый Windows-админ не раз сталкивался с проблемами в работе службы WMI и ее компонентах.
Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений
- Ошибки GPO, завязанные на WMI ( некорректная работа wmi фильтров политик, и пр.)
- Ошибки в работе / невозможность установки агентов SCCM/SCOM
- Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI
В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.
Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:
get-wmiobject Win32_OperatingSystem
Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.