有没有办法重命名COM组件而不实际重新编译源代码?

时间:2013-12-30 13:25:25

标签: windows com

我有一个遗留系统,其中包含在COM +下运行的旧COM组件。我们需要重命名这个旧组件,但我们没有源代码。有没有办法在不重新编译的情况下重命名组件(而不是应用程序)?

1 个答案:

答案 0 :(得分:1)

COM类的“名称”称为ProgID

  

程序标识符(ProgID)是可以与CLSID关联的注册表项。与CLSID一样,ProgID标识一个类,但精度较低,因为它不能保证全局唯一。

标识符的目的是提供到类CLSID的主要标识符的映射。因此,您可以手动创建另一个/备用密钥与另一个名称,映射相同的CLSID,它将有问题。

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\<New-ProgID>\CLSID
  • (默认值)= <Same-CLSID>

请记住,64位系统上32位组件的密钥是:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\<New-ProgID>\CLSID

CLSID子密钥是您感兴趣的主要内容,您可能希望复制原始ProgID密钥中的所有子密钥和值(特别是VersionIndependentProgID,如果您的班级有此密钥和值)。

然后,COM +特定部分是CLSID下的ProgID子项,其中DCOMCNG(您在注释中称为“COM + Applications | MyApplication | Components”)从以下名称获取名称:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\<Your-CLSID>\ProgID
  • (默认值)= <ProgID>

重命名这将对COM +应用程序产生影响。应用程序本身应该使用相同的键/值(对于前两个,这是正确的,我不确定最后一个COM +特定的)。