共用方式為


在顯示規範中註冊內容功能表 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 網域服務註冊

內容功能表擴充套件註冊專屬於特定的地區設定。 如果內容功能表延伸模組適用於所有地區設定,則必須在物件類別中註冊它,也就是顯示規範容器中的所有地區設定子容器的 displaySpecifier 物件中。 如果右鍵選單擴充功能已針對特定地區進行本地化,則必須在該地區的子容器中註冊 displaySpecifier 物件。 如需顯示規範容器和地區設定的詳細資訊,請參閱 Display SpecifiersDisplaySpecifiers Container

有兩個顯示規範屬性,內容功能表拓展項目可以在其下註冊。 這些 adminContextMenushellContextMenu

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

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

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

登錄右鍵選單延伸功能時,adminContextMenushellContextMenu 屬性的值需要使用下列格式。

<order number>,<clsid>

“<順序號碼>” 是一個無符號的數字,代表快捷選單中的項目位置。 當快捷功能表顯示時,值會根據每個值的「<順序號碼>」進行排序。 如果多個值具有相同的「<訂單號碼>」,則會按照從 Active Directory 伺服器讀取的順序載入這些右鍵選單擴充功能。 可能的話,請使用還未存在的“<訂單號碼>”,也就是說,屬性中的其他值未使用的訂單號碼。 “<訂單號碼>”序列中不允許有規定起始位置和間距。

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

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

重要

針對 Windows 介面,會在使用者登入時擷取顯示規範資訊,並快取使用者會話。 針對管理控制台的嵌入式模組,當模組載入時會擷取顯示規範資料,並在整個進程中進行快取。 對於 Windows Shell,這表示顯示規範的變更會在用戶註銷後重新登入後才會生效。 針對管理嵌入式單元的管理單元,當重新載入嵌入式單元或控制台檔案時,變更會生效。也就是說,如果您啟動控制台檔案的新實例或新的 Mmc.exe 實例,並新增這些嵌入式管理單元,則會擷取最新的顯示規範數據。

 

欲了解更多資訊,以及如何實作上下文選單延伸模組的程式代碼範例,請參閱 上下文選單 COM 物件實作的範例程式代碼