在顯示規範中註冊操作功能表 COM 物件

當您使用 COM 為 Active Directory 目錄服務建立操作功能表延伸模組 DLL 時,擴充功能必須向 Windows 登錄註冊,並 Active Directory 網域服務 通知 Active Directory 系統管理 MMC 嵌入式管理單元和擴充功能的 Windows 殼層。

在 Windows 登錄中註冊

如同所有 COM 伺服器,必須在登錄中註冊操作功能表延伸模組。 延伸模組會在下列金鑰下註冊。

HKEY_CLASSES_ROOT
   CLSID
      <clsid>

<clsid> 是 StringFromCLSID 函式所產生的 CLSID 字串表示法。 在 <clsid> 機碼下,有一個 InProcServer32 索引鍵,會將對象識別為 32 位內部伺服器。 在 InProcServer32 機碼下,DLL 的位置是在預設值中指定,而線程模型是在 ThreadingModel 值中指定。 所有操作功能表延伸模組都必須使用 「Apartment」 線程模型。

向 Active Directory 網域服務 註冊

操作功能表延伸模組註冊專屬於一個地區設定。 如果操作功能表延伸模組套用至所有地區設定,則必須在 Display Specifiers 容器中所有地區設定子控件的 object 類別 displaySpecifier 物件中註冊。 如果特定地區設定的內容功能表延伸模組已當地語系化,則必須在該地區設定的子控件的displaySpecifier對象中註冊它。 如需顯示規範容器和地區設定的詳細資訊,請參閱 顯示規範DisplaySpecifiers 容器

有兩個顯示規範屬性,內容功能表延伸模組專案可以註冊在下。 這些是 adminContextMenushellContextMenu

adminContextMenu 屬性會識別要顯示在 Active Directory 系統管理嵌入式管理單元中的系統管理操作功能表。當使用者在其中一個 Active Directory 系統管理 MMC 嵌入式管理單元中顯示適當類別物件的操作功能表時,就會顯示操作功能表。

shellContextMenu 屬性會識別要顯示在 Windows 殼層中的使用者操作功能表。 當使用者在 Windows 檔案總管中檢視適當類別物件的操作功能表時,就會顯示操作功能表。 從 Windows Server 2003 開始,Windows 殼層不再顯示 Active Directory 網域服務 的物件。

所有這些屬性都是多重值。

註冊操作功能表延伸模組時,adminContextMenu shellContextMenu 屬性的值需要下列格式。

<order number>,<clsid>

「<訂單編號>」是一個不帶正負號的數位,代表操作功能表中的專案位置。 顯示操作功能表時,值會使用每個值的「<訂單號碼>」比較來排序。 如果多個值具有相同的「<訂單號碼>」,這些操作功能表延伸模組會以從 Active Directory 伺服器讀取的順序載入。 可能的話,請使用非現有的「<訂單號碼>」,也就是 屬性中其他值未使用的一個。 「訂單號碼>」序列中<不允許有規定的起始位置與間距。

“clsid>” 是 StringFromCLSID 函式所產生的 CLSID 字串表示法。<

在 Windows 殼層中,支援多重選取內容功能表項。 在此情況下,會針對每個選取的物件叫用操作功能表延伸模組。 在 Active Directory 系統管理嵌入式管理單元中,也支援多重選取內容功能表延伸模組專案。 在此情況下,DSOBJECTNAMES 結構會針對選取的每個目錄物件包含 DSOBJECT 結構。

重要

針對 Windows 殼層,會在使用者登入時擷取顯示規範資訊,並快取用戶的會話。 針對系統管理嵌入式管理單元,載入式管理單元並在進程期間快取時,會擷取顯示規範數據。 對於 Windows 殼層,這表示顯示規範的變更會在用戶註銷后再次生效。 針對系統管理嵌入式管理單元,變更會在重載嵌入式管理單元或控制台檔案時生效,也就是說,如果您啟動控制台檔案的新實例或新的 Mmc.exe 實例,並新增嵌入式管理單元,則會擷取最新的顯示規範數據。

 

如需詳細資訊,以及如何實作操作功能表延伸模組的程式代碼範例,請參閱 操作功能表 COM 物件的實作範例程序代碼。