C++ 编写可执行文件(Win32),在启动时为COM注册,在终止时取消注册

C++ 编写可执行文件(Win32),在启动时为COM注册,在终止时取消注册,c++,winapi,com,C++,Winapi,Com,我希望编写一个Win32可执行文件(用C++编写),在启动时执行其所有COM注册,以便通过COM客户端应用程序访问其对象。当可执行文件终止时,它应该向COM注销。 这类事情可能发生吗?如果可能,涉及哪些步骤? 我整个下午都在狂热地搜索,没有找到任何答案。大多数解决方案需要预先注册(例如通过a/register开关)。 谢谢我怀疑和是您正在寻找的功能。您可以找到更多信息。我怀疑和是您正在寻找的功能。您可以找到更多信息。无论进程内还是进程外,COM服务器注册都没有魔力。注册意味着写入注册表取消注册意

我希望编写一个Win32可执行文件(用C++编写),在启动时执行其所有COM注册,以便通过COM客户端应用程序访问其对象。当可执行文件终止时,它应该向COM注销。 这类事情可能发生吗?如果可能,涉及哪些步骤? 我整个下午都在狂热地搜索,没有找到任何答案。大多数解决方案需要预先注册(例如通过a/register开关)。
谢谢

我怀疑和是您正在寻找的功能。您可以找到更多信息。

我怀疑和是您正在寻找的功能。您可以找到更多信息。

无论进程内还是进程外,COM服务器注册都没有魔力。注册意味着写入注册表取消注册意味着删除注册表项

通常的EXE COM服务器读取命令行参数来处理安装/卸载请求,并提供单独的子例程或执行路径,但您可以在每次执行中自由包含安装/卸载过程

WinMain()
{
  Install()
  CoRegisterClassObject();
  .. Message Loop ..
  CoRevoveClassOBject();
  Uninstall();
}

无论是进程内还是进程外,COM服务器注册都没有魔力。注册意味着写入注册表取消注册意味着删除注册表项

通常的EXE COM服务器读取命令行参数来处理安装/卸载请求,并提供单独的子例程或执行路径,但您可以在每次执行中自由包含安装/卸载过程

WinMain()
{
  Install()
  CoRegisterClassObject();
  .. Message Loop ..
  CoRevoveClassOBject();
  Uninstall();
}

这是进程外服务器的正常工作方式。例如,ATL支持得很好。但它是吗?我看到的所有示例都要求您提前执行/regserver类型的操作。然后运行服务器,然后可以访问对象。我希望注册/拆卸在进程的生命周期内进行,而不是单独进行。如果我错过了这种行为的一个明显的谷歌例子,那么我为我的疏忽道歉。只需要使用/regserver选项来允许客户端启动服务器。这是可选的。汉斯-谢谢你的澄清。我没有意识到这一点。这是进程外服务器正常工作的方式。例如,ATL支持得很好。但它是吗?我看到的所有示例都要求您提前执行/regserver类型的操作。然后运行服务器,然后可以访问对象。我希望注册/拆卸在进程的生命周期内进行,而不是单独进行。如果我错过了这种行为的一个明显的谷歌例子,那么我为我的疏忽道歉。只需要使用/regserver选项来允许客户端启动服务器。这是可选的。汉斯-谢谢你的澄清。我没有意识到这一点。