WMI无法初始化核心

WMI无法初始化核心

参考微软网址:

http://www.microsoft.com/china/technet/community/scriptcenter/resources/wmifaq.mspx#EOAAC
 
8。WMI 不工作。如何解决这个问题?

运行脚本、诸如 CIM Studio 这样的基于 WMI 的工具或者运行 WMI 控件的时候,可能会遇到 WMI 服务错误。脚本可能不运行,或者可能收到一个“Access Denied”(拒绝访问)错误;导致这种错误的原因可能是 WMI 没有运行,或者命名空间没有被正确地配置。引起错误的原因还可能是 WMI 提供者提供的类没有被载入,或者 WMI 存储库(存储类定义的场所)已经损坏。

请遵循以下步骤来诊断 WMI 服务的 WMI 问题:

1.

如果连接远程计算机出现故障,请在本地计算机上运行脚本。

2.

重启 WMI 服务。

3.

重建 WMI 存储库。

4.

重新注册所有 WMI 组件。

5.

重新安装操作系统。

6.

联系 Microsoft 产品支持服务。

如果连接远程计算机出现故障,请在本地计算机上运行脚本。

如果连接远程计算机出现故障,在采取其它措施之前应该首先尝试在本地计算机上运行脚本。如果脚本可以在本地计算机上运行,请参考主题:如何使用 WMI 管理远程计算机? 如果脚本在本地计算机上也无法运行,请执行以下诊断步骤:

如果一个本地 WMI 操作返回预料之外的错误代码,或者无法启动 WMI Control,请首先确定本地 WMI 服务是否正在运行。请将以下代码保存到一个 .VBS 文件并在命令提示行运行该脚本:

 
   

如果脚本成功运行,表明 WMI 服务正常工作,它可能不是导致故障的原因。

如果脚本运行失败,请验证脚本中指定的命名空间是否是一个有效的命名空间。示例代码尝试连接 root/default 命名空间。如果该命名空间不存在,您将会得到一个错误 WBEM_E_INVALID_NAMESPACE (0x8004100E)。

如果命名空间存在,但试图连接的类不存在会怎样呢?在这种情况下,当试图访问该类时,可能会看到以下这些错误代码:

WBEM_E_NOT_FOUND ( 0x80041002)

WBEM_E_OUT_OF_MEMORY (0x80041006)

连接类失败还可能表明 WMI 存储库已经损坏。在这种情况下,您可能会看到以下错误代码中的一个:

WBEM_E_INITIALIZATION_FAILURE????( 0x80041014 )

WBEM_E_CRITICAL_ERROR ( 0x8004100a )

WBEM_E_FAILED ( 0x80041001)

如果认为存储库已经损坏,最应该采取的动作就是重建存储库。

重启 WMI 服务。

通常 WMI 服务(winmgmt)总是运行的;任何时候当计算机启动的时候它也启动,并直到计算机关闭的时候才关闭。如果该服务意外地停止了,可以在命令行键入 net start winmgmt 重启。除此之外,每次使用基于 WMI 的工具(例如 Wbemtest)或脚本连接 WMI namespace 的时候,该服务也会自动重启。通常在 WMI 服务停止的情况下运行一段使用 WMI 的脚本也会使其自动重启。

如果遇到关于 WMI 服务的故障,您也许需要手工停止并重启该服务。请按照以下步骤操作:

1.

首先,启用 WMI 的“详细的日志记录”选项;这将在 WMI 错误日志中提供更加详细的信息,可能有助于故障的诊断。可以配置以下注册表值来启用“详细的日志记录”:

1.

设置 HKLM/Software/Microsoft/WBEM/CIMOM/Logging2

2.

设置 HKLM/Software/Microsoft/WBEM/CIMOM/Logging file Max Size4000000

2.

停止 WMI 服务。众所周知,WMI 服务名为“winmgmt”。可以通过执行以下命令来停止该服务:
winmgmt /kill
如果正在运行 Windows XP 或 Windows Server 2003,WMI 服务运行在一个名为 Svchost 的进程之内;该进程还包含运行在同一帐户下的其他服务。除此之外,您还可能看到计算机上运行着多个 Svchost 实例。不要尝试停止 Svchost 本身;相反,请使用以下两个命令来停止 WMI 服务:winmgmt /killnet stop winmgmt

3.

如果步骤 2 成功,请跳过该步骤,直接进入步骤 4。如果步骤 2 没能成功停止 winmgmt 服务,请重启计算机然后进入步骤 4。

4.

再次运行脚本。如果脚本运行失败,您可能需要重建 WMI Repository。

重建存储库。

WMI Repository 是 WMI 提供者创建的类定义的集中存储位置,它位于 %systemDrive%/%windir%/system32/wbem/Repository 文件夹。如果感觉存储库已经损坏,您应该重建它。注意:这么做可能会导致存储库中的 WMI 信息丢失。您可能需要手工恢复这些信息,方法是运行可以将信息放入存储库的特定应用程序。要重建存储库,请按以下步骤操作:

1.

停止 WMI 服务。

2.

在命令行键入以下命令:

cd /d %windir%/system32/wbem

rename Repository Rep_bak

3.

这个命令将会重命名包含 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 文件中包含了类、属性和方法的本地化描述。)
在记事本中,这个批处理文件应该象下面这样:

 

在批处理文件的每行开头添加 Mofcomp 命令。Mofcomp.exe 是一个操作系统工具,用于编译 MOF 文件,并将文件中包含的信息添加到 WMI 存储库中。例如,您的批处理文件可能象下面这样:

 

运行这个批处理文件。

您也可以使用以下命令编译所有的 MOF 和 MFL 文件:

cd /d %windir%/system32/wbem

for %i in (*.mof,*.mfl) do Mofcomp %i

命令完成之后,请检查 ./Logs/Mofcomp.log,查看是否有编译错误发生。

4.

再次运行脚本。

重新注册 WMI 组件

如果到 root/default 的连接仍然失败,无法被正确注册的 WMI 组件可能是导致故障的原因。WMI 使用的 .DLL 和 .EXE 文件位于 %windir%/system32/wbem。您也许需要重新注册该目录内的所有 .DLL 和 .EXE 文件。如果运行在 64 位的系统之上,您可能还需要检查位于 %windir%/sysWOW64/wbem 的 .DLL 和 .EXE 文件。

1.

要重新注册 WMI 组件,请在命令提示行运行以下命令:

cd /d %windir%/system32/wbem

for %i in (*.dll) do RegSvr32 -s %i

for %i in (*.exe) do %i /RegServer

2.

再次运行脚本。

重新安装操作系统

如果仍然无法连接到 root/default,您需要重新安装操作系统。重新安装 Windows,然后尝试再次运行脚本。

联系 Microsoft 产品支持服务

如果 WMI 仍然无法正常工作,您需要联系 Microsoft 产品支持服务(PSS)。更多信息,请访问:http://support.microsoft.com/default.aspx.

 

你可能感兴趣的:(WMI无法初始化核心)