com4:Class

指定由包注册的 CLSID 的属性,这些属性可由不同类上下文的 CLSID 的一个或多个具体注册共享。 例如,假设 ExeServer 支持进程外激活 (CLSCTX_LOCAL_SERVER) , (CLSCTX_INPROC_HANDLER) 相应的 进程内处理程序。 com4:Class 元素本身不会注册 CLSID 进行激活,但可由 ExeServer ClassReference 或 InProcessHandler Class//ClassReference 等元素引用,在这种情况下,其属性将替换可在 ExeServer/Class 或 InProcessHandler/Class 元素中直接指定的属性。 对于为单个类上下文注册的 CLSID,此语法是可选的,但需要为多个类上下文注册相同的 CLSID,因为清单验证要求 Id 属性在清单中的所有 Class、ExeServer/Class、InProcessHandler/Class 等元素中是唯一的。

元素层次结构

<包>

    <应用程序>

         <应用程序>

              <扩展>

                   <com4:Class>

语法

<com4:Class
  ProgId = 'An alphanumeric string separated by a period with a value between 1 and 255 characters in length (for example, Foo.Bar or Foo.Bar.1).'
  VersionIndependentProgId = 'An alphanumeric string separated by a period with a value between 1 and 255 characters in length (for example, Foo.Bar or Foo.Bar.1).'
  AutoConvertTo = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  InsertableObject = 'A boolean value.'
  ShortDisplayName = 'A string with a value between 1 and 40 characters in length.'
  Id = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  DisplayName = 'A string with a value between 1 and 256 characters in length. This string is localizable.' >

<!-- Child elements -->
  ImplementedCategories
  Conversion
  DataFormats
  MiscStatus
  Verbs
  DefaultIcon
  ToolboxBitmap32
  TypeLib

</com4:Class>

特性和元素

属性

属性 说明 数据类型 必须 默认值
ProgId 将 ProgID) (编程标识符与 CLSID 相关联。 一个字母数字字符串,由句点分隔,其值长度在 1 到 255 个字符 (例如,Foo.Bar 或 Foo.Bar.1) 。
VersionIndependentProgId 将 ProgID 与 CLSID 相关联。 此值用于确定对象应用程序的最新版本。 一个字母数字字符串,由句点分隔,其值长度在 1 到 255 个字符 (例如,Foo.Bar 或 Foo.Bar.1) 。
AutoConvertTo 指定给定对象类到新对象类的自动转换。 格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的 GUID。
InsertableObject 指示此类是可插入的。 布尔值。
ShortDisplayName 类显示名称的简短版本。 值长度介于 1 到 40 个字符之间的字符串。
Id Id 属性对应于 CLSID (HKCR\CLSID{MyGuid}) 。 格式为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 的 GUID。
DisplayName 类显示名称。 值长度介于 1 到 256 个字符之间的字符串。 此字符串可本地化。

子元素

子元素 描述
ImplementedCategories 指定由 类实现的类别。
转换 指定应用程序可以读取和写入的格式。
DataFormats 指定应用程序支持的默认和main数据格式。
MiscStatus 指定如何创建和显示对象。
动词 指定要为应用程序注册的谓词。
DefaultIcon 为对象的图标演示文稿提供默认图标信息。
ToolboxBitmap32 标识要用于工具栏或工具箱按钮表面的 16 x 16 位图的模块名称和资源 ID。
TypeLib 类或接口的类型库。

父元素

父元素 说明
扩展 定义应用的一个或多个扩展点。

注解

COM 注册表布局中的 CLSID 密钥支持 CLSID 的两类注册信息:

  • 特定类上下文的激活详细信息。 例如,用于 outofproc 激活 (CLSCTX_LOCAL_SERVER) 的 LocalServer32 子项、用于激活 inproc 处理程序 (CLSCTX_INPROC_HANDLER) 的 InprocHandler32 子项,或用于 inproc 激活 (CLSCTX_INPROC_SERVER) 的 InprocServer32 子项。 同一 CLSID 可以注册这些类上下文的任意组合,并且每个类上下文的激活详细信息在相应的子项中单独指定。
  • 有关在类上下文之间共享的 CLSID 的信息。 例如,OLE 方案中使用的 OLE 服务器属性、CLSID 实现的组件类别集等通过 CLSID 密钥的其他子项提供,如果为多个类上下文提供了激活详细信息,则这些属性在语义上与 CLSID 关联,而不是与特定的类上下文相关联。

顶级 com4:Class 元素的属性对应于在类上下文之间共享的 CLSID 键中的信息。 如果包支持激活单个类上下文的 CLSID,则顶级 Class 元素的使用是可选的,或者可以直接在嵌套 的 Class 元素 (指定这些属性,例如提供其激活详细信息的 ExeServer/Class) 。 但是,COM 注册表布局不提供为不同的类上下文单独指定这些属性的方法,并且查询这些属性的 API 不允许调用方指定类上下文。 为了反映 COM 类注册模型的这一方面,清单语法仅允许为 CLSID 指定一次这些属性,通过要求顶级和嵌套类元素的 Id 属性的唯一性强制执行。 因此,若要在包清单中为 CLSID 注册多个类上下文,请执行以下操作:

  • 共享属性必须作为顶级 Class 元素的属性提供。
  • 每个类的上下文激活详细信息必须在嵌套的 ClassReference 元素中提供,例如,支持 outofproc 激活和 inproc 处理程序的 CLSID 的 ExeServer/ 类ClassReference 和 InProcessHandler Class/ClassReferenceClassReference 元素的 Id 属性引用包含共享属性的顶级 Class 元素。

示例

<com4:Extension Category="windows.comServer">
  ...
  <!-- Example of a CLSID that has both aan inproc server and an exe server implementation, using top level Claass and ClassReference -->
  <com4:Class Id="10000000-0000-0000-0000-000000000009" DisplayName="CLSID_FOO3"/>
  <com4:ExeServer Executable="MyServer.exe" DisplayName="My Server">
    <com4:ClassReference Id="10000000-0000-0000-0000-000000000009" />
  </com4:ExeServer>
  <com4:InProcessServer Path="MyServer.dll">
    <com4:ClassReference Id="10000000-0000-0000-0000-000000000009" ThreadingModel="Both"/>
  </com4:InProcessServer>
  ...
</com4:Extension>

要求

Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (内部版本 20348)