В рамках большой базы кода C # я регулярно выполнял следующий запрос на одном компьютере (Windows XP SP2):
«ВЫБРАТЬ * из Win32_Process»
До сегодняшнего дня он работал, как ожидалось. Теперь запрос зависает на неопределенное время, не возвращая никаких результатов. Я попытался запросить несколько других классов поставщика WMI на этом компьютере, и они работают, как ожидалось.
Я перезагрузил машину, но это не помогло. Я проверил журнал событий приложений, где WMI сообщает об ошибках, но никаких зацепок там нет. Я также пробовал два других метода перечисления экземпляров Win32_Process: VBscript и WMI CIM Studio. Оба вешают одинаково.
Я попробовал запустить WMIDiag.vbs, диагностический скрипт, предоставленный Microsoft. Однако он зависает на неопределенный срок во время шага, называемого «Проверка поставщиков WMI, загруженных ДО выполнения WMIDiag». В документации действительно говорится, что запуск сценария может занять до 6 часов, но теперь он завис при 0% загрузке ЦП более 12 часов.
Я здесь в растерянности. Может ли кто-нибудь подсказать, почему один класс Win32_Process может перестать работать, в то время как остальные классы WMI ведут себя как обычно? Я бы очень предпочел исправить эту проблему специально, а не разводить руками и вытирать машину.
Если есть дополнительная информация о системе, которая будет полезна, дайте мне знать. Я не имею ни малейшего представления о том, что делать дальше с процессом устранения неполадок.
WMI мог быть поврежден на этой машине. Попробуйте переустановить.
КОПИРУЙТЕ ВСЕ СТРОКИ НИЖЕ В ПАКЕТНЫЙ ФАЙЛ И ЗАПУСТИТЕ:
net stop winmgmt
pause
c:
cd c:\windows\system32\wbem
rd /S /Q repository
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
mofcomp cimwin32.mof
mofcomp cimwin32.mfl
mofcomp rsop.mof
mofcomp rsop.mfl
for /f %%s in ('dir /b /s *.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
mofcomp exwmi.mof
mofcomp -n:root\cimv2\applications\exchange wbemcons.mof
mofcomp -n:root\cimv2\applications\exchange smtpcons.mof
mofcomp exmgmt.mof