2009-10-09 132 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。

所有注册是在注册表中的几个条目,但它使很多东西更简单。