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/ClassReference。 ClassReference 元素的 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) |