Developing COM Components using VC-ATL(2-3) (轉)

amyz發表於2007-08-17
Developing COM Components using VC-ATL(2-3) (轉)[@more@]

COM的註冊角色:namespace prefix = o ns = "urn:schemas--com::office" />

如果COM用名裝載並且元件位置或名字變化了,客戶應用將不能訪問元件。檔名無法提供在一個上的不同的元件版本,因而造成了不同版本商之間的產品衝突。

COM透過藉助識別符號ID註冊系統登錄檔中的COM元件的位置來處理這個問題。COM元件的ID必須保證是系統唯一的,以避免與不同產品的衝突,並且客戶可不必知道元件的物理位置而可以訪問元件,這也就是所謂的元件對客戶的透明化。

COM類註冊在HKEY_CLASSES_CLSID主鍵下。對每個CLSID主鍵,有一個子鍵InprocServer32,這個子鍵的預設值為DLL的檔名。

   元件可以使用regsver32程式註冊。這個程式提供進入登錄檔的元件。

  DLL檔案可以使用以下命令註冊:

  Regsver32

  為了註冊EXE檔案,命令語法為:

/regserver

註冊COM元件讀取的註冊檔案是MyCom.rgs

  在本例中,登錄檔的結構為(紅色為CLSID,綠色為IID,藍色為LIBID)

HKEY_CLASSES_ROOTCLSID{FEB7BDEF-FB6F-446B-BE31-DF0A3AD391BA}

  預設MyClass

InprocServer32

預設C:MyProjDeMyProj.dll

Apartment ThreadingModel

ProgID

預設MyProj.MyCom.1

Programmable

TypeLib

預設{FE651184-11DE-4D01-BD69-B07DDFA12D0C}

VersionIndependentProgID

預設MyProj.MyCom

HKEY_CLASSES_ROOTMyProj.MyCom

CLSID

預設{FEB7BDEF-FB6F-446B-BE31-DF0A3AD391BA}

CurVer

預設MyProj.MyCom.1

  HKEY_CLASSES_ROOTMyProj.MyCom.1

CLSID

預設{FEB7BDEF-FB6F-446B-BE31-DF0A3AD391BA}

  HKEY_CLASSES_ROOTInterface{65460F9C-3BAB-4055-885A-8ED59F5FA9B0}

   預設IMyCom

StubClsid

ProxyStubClsid32

TypeLib

預設{FE651184-11DE-4D01-BD69-B07DDFA12D0C}

Version 1.0

  HKEY_CLASSES_ROOTTypeLib{FE651184-11DE-4D01-BD69-B07DDFA12D0C}

1.0

  預設MyProj 1.0 Type Library

1.0

  1.0

  預設C:MyProjDebugMyProj.dll

1.0FLAGS

1.0HELPDIR

  預設C:MyProjDebug


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963225/,如需轉載,請註明出處,否則將追究法律責任。

相關文章