Назад | Перейти на главную страницу

Запрос «SELECT * from Win32_Process» зависает на неопределенный срок

В рамках большой базы кода 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