在顯示規範中註冊內容功能表 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 Specifiers 和 DisplaySpecifiers Container。
有兩個顯示規範屬性,內容功能表拓展項目可以在其下註冊。 這些 adminContextMenu 和 shellContextMenu。
adminContextMenu 屬性用來識別要顯示在 Active Directory 系統管理嵌入式管理單元中的管理內容功能表。當使用者在其中一個 Active Directory 系統管理 MMC 嵌入式管理單元中顯示適用類別的物件時,就會顯示此內容功能表。
shellContextMenu 屬性用來識別要顯示在 Windows Shell 的終端使用者內容功能表。 當使用者在 Windows 檔案總管中檢視適當類別的物件時,就會顯示內容功能表。 從 Windows Server 2003 開始,Windows 殼層不會再顯示 Active Directory 網域服務的物件。
所有這些屬性都是多重值。
登錄右鍵選單延伸功能時,adminContextMenu 和 shellContextMenu 屬性的值需要使用下列格式。
<order number>,<clsid>
“<順序號碼>” 是一個無符號的數字,代表快捷選單中的項目位置。 當快捷功能表顯示時,值會根據每個值的「<順序號碼>」進行排序。 如果多個值具有相同的「<訂單號碼>」,則會按照從 Active Directory 伺服器讀取的順序載入這些右鍵選單擴充功能。 可能的話,請使用還未存在的“<訂單號碼>”,也就是說,屬性中的其他值未使用的訂單號碼。 “<訂單號碼>”序列中不允許有規定起始位置和間距。
“<clsid>” 是由 StringFromCLSID 函式所產生的 CLSID 字串表示法。
在 Windows 介面中,支援多重選取內容選單項目。 在此情況下,會針對每個選取的物件呼叫內容選單擴充模組。 在 Active Directory 系統管理嵌入式管理單元中,也支援多重選取內容功能表延伸模組專案。 在此情況下,DSOBJECTNAMES 結構會針對選取的每個目錄物件包含 DSOBJECT 結構。
重要
針對 Windows 介面,會在使用者登入時擷取顯示規範資訊,並快取使用者會話。 針對管理控制台的嵌入式模組,當模組載入時會擷取顯示規範資料,並在整個進程中進行快取。 對於 Windows Shell,這表示顯示規範的變更會在用戶註銷後重新登入後才會生效。 針對管理嵌入式單元的管理單元,當重新載入嵌入式單元或控制台檔案時,變更會生效。也就是說,如果您啟動控制台檔案的新實例或新的 Mmc.exe 實例,並新增這些嵌入式管理單元,則會擷取最新的顯示規範數據。
欲了解更多資訊,以及如何實作上下文選單延伸模組的程式代碼範例,請參閱 上下文選單 COM 物件實作的範例程式代碼。