Windows 注册COM组件需要什么?

Windows 注册COM组件需要什么?,windows,com,registry,Windows,Com,Registry,我是一名新加入COM的.NET开发人员。我想知道注册COM组件需要什么?注册过程中会发生什么 为了让操作系统找到 组件当程序需要它时,它 必须在系统中注册。 然后,系统将其记录在 登记处 通常,组件由 运行程序REGSVR32.EXE, 它假定组件具有 已正确编码以支持 DLLRegisterServer()公共方法。 执行regsvr32.exe 应该 用一个指示 成功还是失败 注册 阅读 COM使用注册表将progid和clsid映射到组件。这允许用户在不需要手动加载.dll的情况下共同创建

我是一名新加入COM的.NET开发人员。我想知道注册COM组件需要什么?注册过程中会发生什么

为了让操作系统找到 组件当程序需要它时,它 必须在系统中注册。 然后,系统将其记录在 登记处

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

阅读


COM使用注册表将progid和clsid映射到组件。这允许用户在不需要手动加载.dll的情况下共同创建COM组件,等等。

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


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

可以从系统上的任何进程创建COM对象,而不需要知道任何组件的名称,例如Word.Application。由于创建应用程序不必知道包含代码的dll或exe所在的位置,因此必须执行其他操作。登记处保存所有这些信息

  • 实现COM对象的文件的物理位置
  • COM对象具有的所有类和接口
  • 其他重要信息
  • 如果没有注册,调用应用程序将需要更多地了解DLL等的位置、它们公开的方法、如何调用它们等。事实上,您也可以调用一个好的老式DLL

    所有的注册都是注册表中的一些条目,但它使很多事情变得更简单