Share via


com4:Class

指定封裝所註冊之 CLSID 的屬性,這些屬性可由不同類別內容的一或多個 CLSID 具體註冊共用。 例如,請考慮支援跨進程啟用的 ExeServer (CLSCTX_LOCAL_SERVER) ,以及對應的同進程內處理常式 (CLSCTX_INPROC_HANDLER) 。 com4:Class元素本身不會註冊 CLSID 進行啟用,但可由 ExeServerClassReference或 InProcessHandler ClassReference/ 等元素參考,在此情況下,其屬性會取代可能直接在 ExeServer/Class 或 InProcessHandler / /Class 元素中指定的屬性。 這個語法對於針對單一類別內容註冊的 CLSID 是選擇性的,但需要為多個類別內容註冊相同的 CLSID,因為資訊清單驗證需要 Id 屬性在所有 Class、ExeServer/Class、InProcessHandler/Class 等專案之間是唯一的。

元素階層

<套件>

    <應用程式>

         <應用程式>

              <擴充功能>

                   <com4:Class>

Syntax

<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) 。 No
VersionIndependentProgId 建立 ProgID 與 CLSID 的關聯。 這個值是用來判斷最新版的物件應用程式。 以長度介於 1 到 255 (個字元的句號分隔的英數位元字串,例如,Foo.Bar 或 Foo.Bar.1) 。 No
AutoConvertTo 指定將給定物件類別自動轉換成新物件類別。 格式為 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx 的 GUID。 No
InsertableObject 表示這個類別是可插入的。 布林值。 No
ShortDisplayName 類別顯示名稱的簡短版本。 長度介於 1 到 40 個字元之間的字串。 No
Id Id 屬性會對應至 CLSID (HKCR\CLSID{MyGuid}) 。 格式為 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx 的 GUID。 Yes
DisplayName 類別顯示名稱。 長度介於 1 到 256 個字元之間的字串。 這個字串可當地語系化。 No

子元素

子項目 描述
ImplementedCategories 指定 類別所實作的類別。
轉換 指定應用程式可以讀取和寫入的格式。
DataFormats 指定應用程式所支援的預設和主要資料格式。
MiscStatus 指定如何建立及顯示物件。
動詞 指定要為應用程式註冊的動詞。
DefaultIcon 提供物件圖示呈現的預設圖示資訊。
ToolboxBitmap32 識別要用於工具列或工具箱按鈕之 16 x 16 點陣圖的模組名稱和資源識別碼。
TypeLib 類別或介面的型別程式庫。

父元素

父元素 描述
延伸模組 定義應用程式的一或多個擴充點。

備註

COM 登錄配置中的 CLSID 金鑰 支援 CLSID 的兩種註冊資訊類別:

  • 特定類別內容的啟用詳細資料。 例如,outofproc 啟用的 LocalServer32 子機碼 (CLSCTX_LOCAL_SERVER) 、 用於啟用 inproc 處理常式 (CLSCTX_INPROC_HANDLER) 的 InprocHandler32 子機碼,或 inprocServer32 子機碼用於 inproc 啟用 (CLSCTX_INPROC_SERVER) 。 相同的 CLSID 可以註冊這些類別內容的任何組合,並在對應的子機碼中個別指定每個專案的啟用詳細資料。
  • 類別內容之間共用之 CLSID 的相關資訊。 例如,OLE 案例中使用的 OLE 伺服器屬性、CLSID 所實作的元件類別集等,都是透過 CLSID 金鑰的其他子機碼提供,而如果為多個類別內容提供啟用詳細資料,這些屬性會以語意方式與 CLSID 相關聯,而不是與特定類別內容相關聯。

最上層 com4:Class 元素的屬性會對應至在類別內容之間共用的 CLSID 索引鍵中的資訊。 如果封裝支援啟用單一類別內容的 CLSID,則使用最上層 Class 元素是選擇性的,而且這些屬性也可以直接在巢狀 Class 元素中指定 (,例如 ExeServer/Class) ,以提供其啟用詳細資料。 不過,COM 登錄配置不會針對不同的類別內容獨立指定這些屬性,而且查詢這些屬性的 API 不會讓呼叫端指定類別內容。 為了反映 COM 類別註冊模型的這個層面,資訊清單語法只會讓 CLSID 指定一次這些屬性,藉由要求最上層和巢狀 Class 元素的 Id 屬性唯一性來強制執行。 因此,若要在套件資訊清單中註冊 CLSID 的多個類別內容:

  • 共用屬性必須以最上層 Class 元素的屬性的形式提供。
  • 每個類別的內容啟用詳細資料都必須在巢狀 ClassReference 元素中提供,例如 ExeServer ClassReference/ 和 InProcessHandler類別/類別Reference,以支援 outofproc 啟用和 inproc 處理常式的 CLSID。 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>

規格需求

Item
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
OS 最低版本 Windows 10 (組建 20348)