2009-10-06 51 views
0

我們正在將測試服務器移動到一個新盒子上,我需要將組件服務中的所有組件移植到新盒子中。我們將所有COM dll文件都放在服務器COM目錄中的子文件夾中,我們希望複製整個目錄,並像組件服務一樣將所有應用程序註冊到組件服務中。他們需要擁有相同的憑證和一切。我應該如何着手將組件服務移動到新的服務器上?

我可以使用COMAdminCatalog的東西,並自動導出和安裝應用程序(導出一個CAB文件),但這將複製DLL和一切,我們不想這樣做,因爲它不會把它們放回正確的位置。雖然如果我可以拉出它們所在的目錄,然後在安裝中指定該目錄,那就沒問題。我無法弄清楚如何獲得dll的目錄。如果有兩個DLL,那該怎麼辦?

任何想法?

回答

0

您可以導出並安裝到新機器上,然後重新註冊所有dll。這將更新COM +服務器上每個COM包中的詳細信息。您可以在註冊表中查找dll的位置。

如果你的COM對象是

Project.Object

看看

HKEY_CLASSES_ROOT \ Project.Object \ CLSID \

得到默認值,然後查找

HKEY_CLASSES_ROOT \ CLSID ** YOURCLSID ** \ InprocServer32

這個鍵會給你dll的完整路徑。刪除所有這些dll,然後在你想要的地方重新註冊(使用regsrv32)所有dll。

應該給你一個開始的地方。

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"; 

您需要設置$類是一個名稱您想知道的對象存在於您想要移動的組件中。

相關問題