mofcomp

托管对象格式(MOF) 编译器分析包含 MOF 语句的文件,并将文件中定义的类和类实例添加到 WMI 存储库。 MOF 文件通常在安装提供 MOF 文件时自动编译,但也可以使用此工具编译 MOF 文件。

有关查找和使用 mofcomp.exe的详细信息,请参阅 使用 WMI 管理工具。 有关从 WMI 存储库中删除类和实例的信息,请参阅 杂注 deleteclass 预处理器命令。

下面的代码示例演示如何在文件上运行 MOF 编译器。

mofcomp
  [-autorecover]
  [-check]
  [-N:<namespacepath>]
  [-class:createonly | -class:forceupdate | 
   -class:safeupdate | -class:updateonly ] 
  [-instance:updateonly | -instance:createonly]
  [-B:<filename>]
  [-WMI]
  [-P:<Password>]
  [-U:<UserName>]
  [-A:<Authority>]
  [-MOF:<path>] 
  [-MFL:<path>] 
  [-AMENDMENT:<Locale>]
  [-ER:<ResourceName>]
  [-L:<ResourceLocale>] 
  <MOFfile>

开关

-autorecover

将命名的 MOF 文件添加到存储库恢复期间编译的文件列表中。 自动恢复 MOF 文件的列表存储在注册表项中:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\

此注册表项中列出的 MOF 文件必须驻留在本地计算机上,因为使用 自动恢复 命令的 MOF 文件无法恢复远程计算机上的 MOF 文件。

注意

为了确保托管对象的所有 WMI 类定义都还原到 WMI 存储库, 如果 WMI 发生故障并重启,请使用 托管对象格式 (MOF) 文件中的 #pragma 自动恢复 预处理器指令。

-check

编译器仅执行语法检查并输出相应的错误消息的请求。 其他任何开关都不能用于此开关。 使用此开关时,不会建立与 Windows Management Instrumentation(WMI)的连接,也不会对 WMI 存储库进行任何修改。

-N:<namespacepath>

请求编译器将 MOF 文件加载到指定为 *namespacepath* 的命名空间中。 编译的 MOF 将加载到默认的 Mofcomp 命名空间 root\\default 中,除非使用此开关。 还可以在 MOF 文件中插入预处理器命令 **\#pragma 命名空间 (“***namespace path***”),以实现相同的效果。 如果使用 **-N:** 开关和 \#杂注命名空间 命令,则 \#**pragma namespace** **autorecover** 优先。 在这种情况下,将 MOF 编译到另一个命名空间的唯一方法是编辑 MOF 文件并更改 \#**pragma 命名空间** 命令。 可以使用 \\\\machinename\\root\\default 指定远程计算机。

-class:createonly

请求编译器不对现有类进行任何更改。 使用此开关时,如果 MOF 文件中指定的类已存在,则编译作将终止。

-class:forceupdate

当存在冲突的子类时,强制更新类。 例如,假设类限定符在子类中定义,基类尝试添加相同的限定符。 在 -class:forceupdate 模式下,MOF 编译器通过删除子类中的冲突限定符来解决此冲突。 如果子类具有实例,则强制更新会失败。

-class:safeupdate

允许更新类,即使有子类,只要更改不会导致与子类冲突。 例如,此标志允许向以前未在子类中提及的基类添加新属性。 如果子类具有实例,更新将失败。

-class:updateonly

请求编译器不创建新类。 使用此开关时,如果 MOF 文件中指定的类不存在,编译作将终止。

-instance:updateonly

请求编译器不创建任何新实例。 使用此开关时,如果 MOF 文件中指定的实例不存在,编译作将终止。

-instance:createonly

请求编译器不对现有实例进行任何更改。 使用此开关时,如果 MOF 文件中指定的实例已存在,编译作将终止。

-B:<文件名>

请求编译器使用名称 文件名 创建 MOF 文件的二进制版本,而无需对 WMI 存储库进行任何修改。

如果使用 -B:<文件名> 选项创建二进制 MOF 文件,则仅默认限定符风格存储在 WMI 存储库中。

二进制 MOF 格式是将 WDM 驱动程序与 MOF 合并为资源的中间格式。 二进制 MOF 表示类和实例,就像文本 MOF 文件一样,在磁盘上存储之前对其进行压缩。

-WMI

编译器执行 WMI 语法检查的请求。 -B: 开关必须用于此开关。 -WMI 开关仅用于生成二进制 MOF 文件供 WDM 设备驱动程序使用。 此开关调用单独的二进制 MOF 文件检查器,该检查器在创建二进制 MOF 文件后运行。

-P:<密码>

指定 密码 作为登录时计算机用户输入的密码。

-U:<UserName>

UserName 指定为用户登录的名称。

-A:<颁发机构>

指定 颁发机构 作为登录 WMI 时使用的颁发机构(域名)。

-MOF:<路径>

非特定语言输出的名称。 与 -AMENDMENT 开关一起使用,以指定将生成的非特定语言 MOF 文件的名称。

-MFL:<路径>

特定于语言的输出的名称。 与 -AMENDMENT 开关一起使用,以指定将生成的特定于语言的 MOF 文件的名称。

-AMENDMENT:<区域设置>

将 MOF 文件拆分为非特定语言版本和 -specific 版本。 MOF 编译器将创建一个非特定语言形式的 MOF 文件,该文件已删除所有已修改的限定符。 MOF 文件的本地化版本也使用 MFL 文件扩展名创建。 Locale 参数指定包含本地化类定义的子命名空间的名称。 区域设置 参数的格式MS_xxx其中 xxx 是 Windows LCID 的十六进制值。 例如,美国英语的区域设置MS_409。

-ER <ResourceName>

从命名资源中提取二进制 MOF。 此开关从 WMI 存储库中的类获取二进制 MOF,而 -B 开关从 MOF 文件创建二进制 MOF 格式。

-L:<ResourceLocale>

自选。 在与 -ER 开关一起使用时,从二进制 MOF 中提取本地化的 MOF 说明。

< MOFfile>

要分析的文件的名称。

返回值

作为其第一个作,MOF 编译器对 MOF 文件执行语法检查。 如果编译器发现任何错误,则会输出错误消息,进程将终止。

MOF 编译器可以返回以下值:

0

MOF 编译作成功。

1

MOF 编译器无法与 WMI 服务器连接。 这是因为语义错误(例如与现有 WMI 存储库不兼容)或实际错误(例如 WMI 服务器无法启动)。

2

一个或多个命令行开关无效。

3

发生 MOF 语法错误。

如果 MOF 文件分析正确,但尝试执行命令行开关禁止的作,编译器将返回 WMI 生成的错误代码,而不是前面列表中列出的任何返回代码。 例如,当指定了 -instance:updateonly 开关并且 MOF 文件尝试创建实例时,将返回 WMI 错误代码。

如果 #pragma 自动恢复 预处理器语句不在文件中,则返回以下警告:

WARNING: FileYourMof.Mof does not contain #PRAGMA AUTORECOVER.
If the WMI repository is rebuilt in the future, the contents of this 
MOF file   will not be included in the new WMI repository.
To include this MOF file when the WMI Repository is automatically 
reconstructed, place the #PRAGMA AUTORECOVER statement on the first 
line of the MOF file.

言论

MOF 编译器在 %Windir%\System32\wbem 目录中可用。 必须将 MOF 文件指定为 MOF 编译器的参数。 如果希望 MOF 文件在 CIM 存储库必须自动恢复的情况下自动重新编译,还可以指定自动恢复开关。 有关详细信息,请键入 Mofcomp /?在命令提示符处

使用 Unicode 字符集的 MOF 文件包含签名作为文件的前两个字节。 此签名是 U+FFFE 或 U+FEFF,具体取决于文件的字节顺序。

分析过程中未发生错误时,MOF 编译器将连接到在本地计算机上运行的 WMI 服务器,除非指定了 -check 开关。 MOF 文件中定义的类和实例将添加到 WMI 存储库。

更新 WMI 存储库时发生错误时,编译器不会尝试在编译器开始处理之前将存储库返回到其状态。

Windows 8: 安装提供程序时,mofcomp 会将 [Key] 和 [Static] 限定符视为 true(无论其实际值如何)。 如果存在其他限定符,则将其视为 false,但未显式设置为 true。

要求

要求 价值
支持的最低客户端
Windows Vista
支持的最低服务器
Windows Server 2008

另请参阅

杂注命名空间

编译 MOF 文件

编译本地化 MOF 文件

注册提供程序

IMOFCompiler::CompileFile