我是COM新手。我想知道注册COM组件的需要是什么?注册期间会发生什么。
答案 0 :(得分:2)
为了让操作系统找到一个 它是一个程序需要它的组件 必须在系统中注册。 系统然后将其记录在 注册表中。
通常一个组件注册 运行程序REGSVR32.EXE, 假定组件有 已正确编码以支持 DLLRegisterServer()公共方法。 执行regsvr32.exe 应该 用对话框指示响应 成功与失败 注册
读
答案 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所在的位置必须存在。注册表包含所有这些信息
如果没有注册,调用应用程序需要更多地了解dll等在哪里,它们暴露了什么方法,如何调用它们等等。事实上你可能会调用一个好的老式DLL。
所有注册都是注册表中的一些条目,但它使许多东西变得更简单。