我应该如何将组件服务移动到新服务器?

时间:2009-10-06 17:49:38

标签: com automation component-services

我们正在将测试服务器移到新的盒子上,我需要将组件服务中的所有组件迁移到新的盒子中。我们将所有COM dll文件都放在服务器上COM目录的子文件夹中,我们希望复制整个目录并在组件服务中注册所有应用程序,就像它们一样。他们需要拥有相同的凭据和所有内容。

我可以使用COMAdminCatalog的东西并自动导出和安装应用程序(导出CAB文件),但这将复制dll和所有内容,我们不希望这样,因为它不会将它们放回到正确的位置。虽然如果我可以拉出它们所在的目录,然后在安装时指定该目录,那就没关系。我无法弄清楚如何获取DLL的目录。如果有两个dll会怎么样呢?

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

如果你的COM对象是

Project.Object

看看

HKEY_CLASSES_ROOT \ Project.Object \ CLSID \

获取默认值然后查找

HKEY_CLASSES_ROOT \ CLSID ** ** YOURCLSID \ InprocServer32的

此键将为您提供dll的完整路径。删除所有这些dll,并在你想要的地方重新注册(使用regsrv32)所有dll。

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

答案 1 :(得分:0)

我将上述步骤转换为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设置为您想知道存在于您想要移动的组件中的对象的名称。