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