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) |