mofcomp

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

有关查找和使用 mofcomp.exe 的详细信息,请参阅 使用 WMI 管理工具。 有关从 WMI 存储库中删除类和实例的信息,请参阅 pragma 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>

交换机

-自动恢复

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

HKEY _本地 _ 计算机 \ 软件 \ Microsoft \ WBEM \ CIMOM \

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

备注

若要确保在 WMI 发生故障和重新启动时将托管对象的所有 WMI 类定义还原到 wmi 存储库,请在 托管对象格式 (MOF) 文件中使用 # 杂注自动恢复预处理器指令。

-check

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

-N: < namespacepath>

请求编译器将 MOF 文件加载到 *namespacepath* 指定的命名空间。 除非使用此开关,否则已编译的 MOF 将加载到默认的 Mofcomp.exe 命名空间(根 \\ 默认值)。 还可以在 MOF 文件中插入预处理器命令 **\# 杂注命名空间 ( "**_命名空间路径_*_" )_* ,以实现相同的效果。 如果同时使用了 **-N:** switch 和 \# pragma namespace命令,则 \# **pragma namespace** **自动恢复** 优先。 在这种情况下,将 MOF 编译为其他命名空间的唯一方法是编辑 MOF 文件并更改 \# **杂注命名空间** 命令。 可以使用 \\ \\ machinename \\ root default 指定远程计算机 \\ 。

-class: createonly

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

-class: forceupdate

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

-class: safeupdate

即使存在子类,也允许更新类,前提是更改不会导致与子类冲突。 例如,此标志允许将一个新属性添加到未在子类中前面提到的基类。 如果子类具有实例,则更新失败。

-class: updateonly

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

-instance: updateonly

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

-instance: createonly

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

-B: < filename>

请求编译器创建具有名称 文件名 的二进制版本的 MOF 文件,而不会对 WMI 存储库进行任何修改。

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

二进制 MOF 格式是将 WDM 驱动程序与 MOF 合并为资源的中间格式。 二进制 MOF 代表作为文本 MOF 文件的类和实例,并在存储到磁盘之前进行压缩。

-WMI

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

-P: <密码>

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

-U: <用户名>

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

-A: <机构>

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

-MOF: <路径>

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

-MFL: <路径>

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

-修正: <区域设置>

将 MOF 文件拆分成中性语言和特定语言版本。 MOF 编译器创建了一种与语言无关的 MOF 文件格式,并删除了所有修改的限定符。 还会使用 MFL 文件扩展名创建 MOF 文件的本地化版本。 Locale 参数指定包含本地化类定义的子命名空间的名称。 区域设置 参数的格式为 MS _ xxx,其中 XXX 是 Windows LCID 的十六进制值。 例如,美国英语的区域设置为 MS _ 409。

-ER <项 >

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

-L: < ResourceLocale>

可选。 与 -ER 开关一起使用时,从二进制 MOF 中提取本地化的 MOF 描述。

<MOFfile>

要分析的文件的名称。

返回值

MOF 编译器在第一次操作时,对 MOF 文件执行语法检查。 如果编译器找到任何错误,它将打印一条错误消息,该进程将终止。

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

0

MOF 编译操作成功。

1

MOF 编译器无法与 WMI 服务器连接。 这可能是由于语义错误(如与现有 WMI 存储库的不兼容性)或实际错误(如 WMI 服务器启动失败)造成的。

2

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

三维空间

发生 MOF 语法错误。

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

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

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 编译器的参数。 如果希望在必须自动恢复 CIM 存储库时自动重新编译 MOF 文件,则还可以指定自动恢复开关。 有关详细信息,请键入 mofcomp.exe/?

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

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

更新 WMI 存储库中发生错误时,编译器不会尝试将存储库恢复到编译器开始处理前的状态。

Windows 8: 安装提供程序时,mofcomp.exe 会将 [ 密钥 ] 和 [ 静态 ] 限定符视为 true (如果存在),而不考虑它们的实际值。 如果其他限定符存在,但未显式设置为 true,则将其视为 false。

要求

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

另请参阅

pragma 命名空间

编译 MOF 文件

编译本地化的 MOF 文件

注册提供程序

IMOFCompiler::CompileFile