查询“SELECT * from Win32_Process”无限期挂起

查询“SELECT * from Win32_Process”无限期挂起

作为更大的 C# 代码库的一部分,我一直在同一台机器(Windows XP SP2)上定期运行以下查询:

“从 Win32_Process 中选择 *”

直到今天,它一直按预期工作。现在,查询无限期挂起而不返回任何结果。我尝试在这台机器上查询其他几个 WMI 提供程序类,它们按预期工作。

我重启了机器,但没用。我检查了应用程序事件日志,WMI 在其中报告错误,但那里没有任何线索。我还尝试了其他两种枚举 Win32_Process 实例的方法:VBscript 和 WMI CIM Studio。两者都以同样的方式挂起。

我尝试运行 Microsoft 提供的诊断脚本 WMIDiag.vbs。但是,它在“验证在执行 WMIDiag 之前加载的 WMI 提供程序”步骤中无限期挂起。文档确实说该脚本最多可能需要 6 小时才能运行,但它已经挂起在 0% CPU 使用率上超过 12 个小时了。

我在这里不知所措。有人能解释一下为什么 Win32_Process 类可能停止工作,而其余的 WMI 类却正常运行吗?我强烈希望专门修复此问题,而不是放弃并清理机器。

如果有任何额外的系统信息有用,请告诉我。我不知道下一步该如何进行故障排除。

答案1

该计算机上的 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

相关内容