Delphi 如何在注册表中配置COM服务器的多个版本?

Delphi 如何在注册表中配置COM服务器的多个版本?,delphi,com,registry,delphi-xe,Delphi,Com,Registry,Delphi Xe,我有一个应用程序的多个版本(主要版本和次要版本),希望在我的注册表中设置一个类似AutoCAD的程序。以下是我的注册表中的一个示例: 如您所见,AutoCAD.Application只是指向最近执行的AutoCAD版本。每个版本都有自己的COM服务器(我可以在我的IDE Delphi XE中解决这个问题)。CLSID键包含与AutoCAD.Application.19->CLSID相同的信息,并且每当执行不同版本时,此信息都会更改 我的问题是,是否有一种自动方式或实用程序已经在注册表中添加父C

我有一个应用程序的多个版本(主要版本和次要版本),希望在我的注册表中设置一个类似AutoCAD的程序。以下是我的注册表中的一个示例:

如您所见,AutoCAD.Application只是指向最近执行的AutoCAD版本。每个版本都有自己的COM服务器(我可以在我的IDE Delphi XE中解决这个问题)。CLSID键包含与AutoCAD.Application.19->CLSID相同的信息,并且每当执行不同版本时,此信息都会更改

我的问题是,是否有一种自动方式或实用程序已经在注册表中添加父COM对象并填充我的应用程序的CLSID和当前版本(CurVer)

如果没有一种自动的方法,那么手动操作会是什么样子?即使你的答案不是Delphi/Pascal语言,我也会看一看


感谢您的任何帮助,因为我身处一个未知的领域,谷歌并没有像往常一样帮助我。

您正在寻找的是一个新的解决方案。这些不是COM对象;它们只是用于将人类可读的PROGID解析为计算机友好的CLSID的注册表项

通常,应用程序每个类将有两个progid—一个版本独立,一个版本依赖。独立于版本的PROGID转发到依赖于版本的PROGID,然后解析为CLSID

在发布应用程序的新版本时,将为新版本创建新的CLSID,添加映射到新CLSID的新版本相关PROGID,并更新版本相关PROGID的CurVer子键以指向新版本相关PROGID


拉里·奥斯特曼(Larry Osterman)在他的博客中详细介绍了COM注册的工作原理。

这篇博客有一些关于COM注册的好文章。不是一个具体的答案,但可能会帮助您开发术语,使您能够完善您的搜索:感谢您的回复。通过查看那个家伙的博客,我似乎一直在走正确的道路,但我只是想在深入研究注册表之前确定,目前没有一个简单的解决方案。