我是一位新來COM的.NET開發人員。我想知道註冊COM組件需要什麼?註冊期間發生了什麼。註冊COM組件需要什麼?
2
A
回答
2
爲了使操作系統找 組件時,程序需要它,它 必須在系統中註冊。 系統然後將其記錄在 註冊表中。
一般組件由 運行程序REGSVR32.EXE, 其中假定組件已 進行正確編碼,以支持 的DLLRegisterServer()public方法註冊。 正在執行regsvr32.exe 應 響應一個對話框指示 成功或失敗的 註冊。
讀
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文件駐留在其他位置。註冊表擁有所有此信息
- 實現COM對象的文件的物理位置。
- COM對象具有的所有類和接口。
- 其他重要信息。
未經登記調用應用程序需要知道了很多關於其中的dll等人,他們暴露了什麼方法,如何叫他們等等逸岸,你很可能會成爲呼叫良好的老式DLL。
所有註冊是在註冊表中的幾個條目,但它使很多東西更簡單。
相關問題
- 1. Tlbimp .net和COM組件仍需要註冊
- 2. 註冊COM C#組件 - TYPE_E_REGISTRYACCESS
- 3. 需要在註冊表中找到註冊COM DLL的clsid
- 4. 域名註冊後需要做什麼
- 5. 我們什麼時候需要註冊一個.Net dll和一個COM DLL?
- 6. COM組件如何註冊到一半?
- 7. 爲經典ASP註冊COM組件
- 8. 註冊免費激活的COM組件
- 9. 註冊一個C#COM組件?
- 10. 使用COM組件沒有註冊表
- 11. 註冊託管COM組件時是否需要'實施類別'鍵?
- 12. 需要註冊LocationListener?
- 13. regsrv32:在註冊其更新之前是否需要取消註冊COM對象?
- 14. arcgis com註冊
- 15. 爲什麼COM類需要構造函數?如何在不註冊的情況下使用COM類?
- 16. 我是否需要COM啓用並註冊我的庫?
- 17. 清單中的註冊免費COM需要哪些標籤?
- 18. 爲什麼加載程序在註冊表中查找我的免註冊COM組件?
- 19. 爲什麼OCX或DLL文件需要註銷然後重新註冊?
- 20. 免費註冊COM互操作。組件B參考組件A?
- 21. com類庫註冊
- 22. 註冊爲COM Interop
- 23. Win32:註冊表項需要註冊一個ActiveX控件?
- 24. 爲什麼某些組件需要「需要UIExplorerBlock」和「需要UIExplorerPage」?
- 25. 主幹需要js註冊
- 26. 需要用戶名註冊
- 27. 爲什麼通過C#interop獲取COM +組件需要這麼長時間?
- 28. Java JDBC:爲什麼需要註冊out參數?
- 29. 爲什麼Azure訂閱需要向提供商註冊?
- 30. 在Qt中註冊用戶定義類需要什麼?