Com 如何将组件服务移动到新服务器?

Com 如何将组件服务移动到新服务器?,com,automation,component-services,Com,Automation,Component Services,我们正在将测试服务器移动到一个新的框中,我需要将组件服务中的所有组件迁移到新的框中。我们的所有COM dll文件都位于服务器上COM目录的子文件夹中,我们希望复制整个目录,并在组件服务中注册所有应用程序,就像它们一样。他们需要有相同的证书和所有东西 我可以使用COMAdminCatalog工具,自动导出和安装应用程序(导出CAB文件),但这会复制DLL和所有内容,我们不希望这样,因为这样做不会将它们放回正确的位置。尽管如果我可以提取它们所在的目录,然后在安装时指定该目录,那也没关系。但我不知道如

我们正在将测试服务器移动到一个新的框中,我需要将组件服务中的所有组件迁移到新的框中。我们的所有COM dll文件都位于服务器上COM目录的子文件夹中,我们希望复制整个目录,并在组件服务中注册所有应用程序,就像它们一样。他们需要有相同的证书和所有东西

我可以使用COMAdminCatalog工具,自动导出和安装应用程序(导出CAB文件),但这会复制DLL和所有内容,我们不希望这样,因为这样做不会将它们放回正确的位置。尽管如果我可以提取它们所在的目录,然后在安装时指定该目录,那也没关系。但我不知道如何获取dll的目录。如果有两个DLL,该如何工作


有什么想法吗?

您可以导出并安装到新机器上,然后重新注册所有DLL。这将更新COM+服务器上每个COM包中的详细信息。您可以在注册表中查找DLL的位置

如果您的COM对象是

项目。对象

看看

HKEY\U CLASSES\U ROOT\Project.Object\CLSID\

获取默认值,然后查找

HKEY\U CLASSES\U ROOT\CLSID**YOURCLSID**\InprocServer32

此键将为您提供dll的完整路径。删除所有这些DLL,然后(使用regsrv32)在需要的位置重新注册所有DLL


应该给您一个开始的地方。

我将上述步骤转换为Powershell脚本,如果您有很多组件要移动,您可以使用该脚本进行自动化等操作:

New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT;

$class = "MyObject.MyClassName";
$clsid = (gp HKCR:\$class\Clsid).'(default)';
$path = $(gp HKCR:\CLSID\$clsid\InprocServer32).'(default)';

echo "Component path = $path";
您需要将$class设置为您知道存在于要移动的组件中的对象的名称