注册COM组件需要什么?

时间:2009-10-09 06:19:52

标签: windows com registry

我是COM新手。我想知道注册COM组件的需要是什么?注册期间会发生什么。

4 个答案:

答案 0 :(得分:2)

  

为了让操作系统找到一个   它是一个程序需要它的组件   必须在系统中注册。   系统然后将其记录在   注册表中。

     

通常一个组件注册   运行程序REGSVR32.EXE,   假定组件有   已正确编码以支持   DLLRegisterServer()公共方法。   执行regsvr32.exe    应该   用对话框指示响应   成功与失败   注册

Understanding COM Component Registration

答案 1 :(得分:2)

要实例化一个COM组件,消费者调用CoCreateInstance()(直接或者由某个包装类调用 - 无关紧要)提供两个GUID - 类id和接口id。然后COM子系统自动查找要加载的库或可执行文件,只知道提供的类ID。为此,它使用在组件注册期间写入的注册表中的信息。

也可以写出其他信息。消费者可以使用所谓的ProgID来发现给定符号名称的类ID。它首先调用CLSIDFromProgID()将ProgID转换为类id,然后再转换为CoCreateInstance()。翻译是使用注册表中的信息完成的。

答案 2 :(得分:1)

COM使用注册表将ProgID和CLSID映射到您的组件。这允许某人共同创建您的COM组件,而无需手动加载.dll等。

答案 3 :(得分:1)

可以从系统上的任何进程创建COM对象,而无需了解组件的名称,例如。 Word.Application。由于创建应用程序不必知道包含代码的dll或exe所在的位置必须存在。注册表包含所有这些信息

  1. 实现COM对象的文件的物理位置。
  2. COM对象具有的所有类和接口。
  3. 其他重要信息。
  4. 如果没有注册,调用应用程序需要更多地了解dll等在哪里,它们暴露了什么方法,如何调用它们等等。事实上你可能会调用一个好的老式DLL。

    所有注册都是注册表中的一些条目,但它使许多东西变得更简单。