向 COM 註冊組件
更新:2007 年 11 月
您可以執行一個名為組件註冊工具 (Regasm.exe) 的命令列工具來註冊或移除註冊使用於 COM 的組件。Regasm.exe 會將有關類別的資訊加入到系統登錄,讓 COM 用戶端能夠以透明的方式使用 .NET 類別。RegistrationServices 類別提供了同等的功能。
從 COM 用戶端啟動 Managed 元件之前,其必須註冊在 Windows 登錄中。下表顯示 Regasm.exe 通常會加入至 Windows 登錄的機碼 (000000 表示實際的 GUID 值)。
GUID |
說明 |
登錄機碼 |
---|---|---|
CLSID |
類別識別項 |
HKEY_CLASSES_ROOT\CLSID\{000…000} |
IID |
介面識別項 |
HKEY_CLASSES_ROOT\Interface\{000…000} |
LIBID |
程式庫識別項 |
HKEY_CLASSES_ROOT\TypeLib\{000…000} |
ProgID |
程式設計識別項 |
HKEY_CLASSES_ROOT\000…000 |
在 HKCR\CLSID\{0000...0000} 機碼之下,會將預設值設定為類別的 ProgID,並加入兩個新的已命名值 Class 和 Assembly。Runtime 會從登錄中讀取組件值,然後將它傳遞給 Runtime 組件解析程式 (Resolver)。組件解析程式會依據名稱和版本號碼這類組件資訊嘗試找出這個組件。為了使組件解析程式找到組件,該組件必須在下列位置其中之一:
全域組件快取 (GAC) (必須為強式名稱的組件)
在應用程式目錄中。從應用程式路徑載入的組件只能從那個應用程式才能夠存取
指定的檔案路徑加上 Regasm.exe 的 /codebase 選項
Regasm.exe 也會在 HKCR\CLSID\{0000...0000} 機碼之下建立 InProcServer32 機碼。這個機碼的預設值會設定為內含 Common Language Runtime 的 DLL 名稱 (Mscoree.dll)。
檢查登錄項目
COM Interop 提供了一個標準 Class Factory 實作,來建立任何 .NET Framework 類別的執行個體。用戶端可以呼叫 Managed DLL 上的 DllGetClassObject,取得 Class Factory 並且建立物件,就像對任何其他 COM 元件一樣。
Mscoree.dll 的參考會取代傳統的 COM 型別程式庫出現,用以指示這個 Managed 物件是 Common Language Runtime 建立的。