2009-10-09 133 views

回答

2

爲了使操作系統找 組件時,程序需要它,它 必須在系統中註冊。 系統然後將其記錄在 註冊表中。

一般組件由 運行程序REGSVR32.EXE, 其中假定組件已 進行正確編碼,以支持 的DLLRegisterServer()public方法註冊。 正在執行regsvr32.exe 應 響應一個對話框指示 成功或失敗的 註冊。

Understanding COM Component Registration

1

COM使用註冊表來的ProgID和CLSID的映射到您的組件。這允許某人共同創建COM組件,而無需手動加載.dll等。

2

要實例化COM組件,消費者需要調用CoCreateInstance()(直接或者由某個包裝類調用它 - doesn'提供兩個GUID - class id和interface id。然後,COM子系統自動查找要加載的庫或可執行文件,只知道提供的類ID。爲此,它使用註冊表中在組件註冊期間寫入的信息。

其他信息也可以寫成。消費者可以使用所謂的ProgID來發現給定符號名稱的類ID。它首先調用CLSIDFromProgID()將ProgID轉換爲類id,然後再轉換爲CoCreateInstance()。翻譯是使用註冊表中的信息完成的。

1

可以從系統上的任何進程創建COM對象,而不必知道組件的名稱,例如。 Word.Application。由於創建應用程序不必知道包含代碼的dll或exe文件駐留在其他位置。註冊表擁有所有此信息

  1. 實現COM對象的文件的物理位置。
  2. COM對象具有的所有類和接口。
  3. 其他重要信息。

未經登記調用應用程序需要知道了很多關於其中的dll等人,他們暴露了什麼方法,如何叫他們等等逸岸,你很可能會成爲呼叫良好的老式DLL。

所有註冊是在註冊表中的幾個條目,但它使很多東西更簡單。