重启 WMI 服务。
通常 WMI 服务(winmgmt)总是运行的;任何时候当计算机启动的时候它也启动,并直到计算机关闭的时候才关闭。如果该服务意外地停止了,可以在命令行键入 net start winmgmt 重启。除此之外,每次使用基于 WMI 的工具(例如 Wbemtest)或脚本连接 WMI namespace 的时候,该服务也会自动重启。通常在 WMI 服务停止的情况下运行一段使用 WMI 的脚本也会使其自动重启。
如果遇到关于 WMI 服务的故障,您也许需要手工停止并重启该服务。请按照以下步骤操作:
-
首先,启用 WMI 的“详细的日志记录”选项;这将在 WMI 错误日志中提供更加详细的信息,可能有助于故障的诊断。可以配置以下注册表值来启用“详细的日志记录”:
-
设置 HKLM\Software\Microsoft\WBEM\CIMOM\Logging为 2。
-
设置 HKLM\Software\Microsoft\WBEM\CIMOM\Logging file Max Size 为 4000000。
-
-
停止 WMI 服务。众所周知,WMI 服务名为“winmgmt”。可以通过执行以下命令来停止该服务:
winmgmt /kill
如果正在运行 Windows XP 或 Windows Server 2003,WMI 服务运行在一个名为 Svchost 的进程之内;该进程还包含运行在同一帐户下的其他服务。除此之外,您还可能看到计算机上运行着多个 Svchost 实例。不要尝试停止 Svchost 本身;相反,请使用以下两个命令来停止 WMI 服务:winmgmt /kill 或 net stop winmgmt -
如果步骤 2 成功,请跳过该步骤,直接进入步骤 4。如果步骤 2 没能成功停止 winmgmt 服务,请重启计算机然后进入步骤 4。
-
再次运行脚本。如果脚本运行失败,您可能需要重建 WMI Repository。
重建存储库。
WMI Repository 是 WMI 提供者创建的类定义的集中存储位置,它位于 %systemDrive%\%windir%\system32\wbem\Repository 文件夹。如果感觉存储库已经损坏,您应该重建它。注意:这么做可能会导致存储库中的 WMI 信息丢失。您可能需要手工恢复这些信息,方法是运行可以将信息放入存储库的特定应用程序。要重建存储库,请按以下步骤操作:
-
停止 WMI 服务。
-
在命令行键入以下命令:
cd /d %windir%\system32\wbem
rename Repository Rep_bak
-
这个命令将会重命名包含 WMI Repository 的文件。重命名文件之后,操作系统将无法找到存储库。在这种情况下,Windows 会在用户下次访问 WMI 的时候尝试重建存储库。如果 AutoRecover(自动恢复)机制失败,您可以尝试手工重建存储库。
通过 WMI AutoRecover 机制重建存储库:
-
建立一个到 Root\Default 的 WMI 连接;可以通过运行一段脚本或者类似 Wbemtest.exe 的基于 WMI 的工具做到这一点。如果连接成功,存储库就会被重建。如果连接失败,请尝试手工重建存储库。
手工重建 WMI 存储库:
-
想要手工重建存储库,应该首先编辑一个批处理文件,该文件将会向存储库补充信息。注册表键HKLM\Software\Microsoft\WBEM\CIMOM\Autorecover MOFs 包含一个 WMI(或操作系统) 安装时的 Managed Object Format 文件(MOF 文件)列表。想要重建存储库,请将注册表值中列出的文件名复制到一个名为 WMI_Recover.bat 的批处理文件;确保包含了扩展名为 .MOF 和 .MFL 的文件。(MFL 文件中包含了类、属性和方法的本地化描述。)
在记事本中,这个批处理文件应该象下面这样:C:\WINDOWS\system32\WBEM\cimwin32.mof C:\WINDOWS\system32\WBEM\cimwin32.mfl C:\WINDOWS\system32\WBEM\system.mof C:\WINDOWS\system32\WBEM\wmipcima.mof C:\WINDOWS\system32\WBEM\wmipcima.mfl
-
在批处理文件的每行开头添加 Mofcomp 命令。Mofcomp.exe 是一个操作系统工具,用于编译 MOF 文件,并将文件中包含的信息添加到 WMI 存储库中。例如,您的批处理文件可能象下面这样:
Mofcomp C:\WINDOWS\system32\WBEM\cimwin32.mof Mofcomp C:\WINDOWS\system32\WBEM\cimwin32.mfl Mofcomp C:\WINDOWS\system32\WBEM\system.mof Mofcomp C:\WINDOWS\system32\WBEM\wmipcima.mof Mofcomp C:\WINDOWS\system32\WBEM\wmipcima.mfl
-
运行这个批处理文件。
-
您也可以使用以下命令编译所有的 MOF 和 MFL 文件:
cd /d %windir%\system32\wbem
for %i in (*.mof,*.mfl) do Mofcomp %i
-
命令完成之后,请检查 .\Logs\Mofcomp.log,查看是否有编译错误发生。
-
-
再次运行脚本。
重新注册 WMI 组件
如果到 root\default 的连接仍然失败,无法被正确注册的 WMI 组件可能是导致故障的原因。WMI 使用的 .DLL 和 .EXE 文件位于 %windir%\system32\wbem。您也许需要重新注册该目录内的所有 .DLL 和 .EXE 文件。如果运行在 64 位的系统之上,您可能还需要检查位于 %windir%\sysWOW64\wbem 的 .DLL 和 .EXE 文件。
-
要重新注册 WMI 组件,请在命令提示行运行以下命令:
cd /d %windir%\system32\wbem
for %i in (*.dll) do RegSvr32 -s %i
for %i in (*.exe) do %i /RegServer
-
再次运行脚本。
重新安装操作系统
如果仍然无法连接到 root\default,您需要重新安装操作系统。重新安装 Windows,然后尝试再次运行脚本。
联系 Microsoft 产品支持服务
如果 WMI 仍然无法正常工作,您需要联系 Microsoft 产品支持服务(PSS)。更多信息,请访问:http://support.microsoft.com/default.aspx.