2016-03-21 11 views
3

私のシナリオでは古いサーバーは廃止される必要がありますが、混合プラットフォームWebソリューションは新しいWindows 2012R2サーバーに移植する必要があります。私の背景には、関連技術に関する多くの経験は含まれていないので、数年前にドキュメントを残さずに残したすべての開発者に加えて、それ以上に苦労しています。EXEへのVB6参照の登録

従来のASP Webサイトには、IBase.dllと呼ばれる社内DLLへの参照があります。私はこれを登録するためにregsvr32を使用し、それが自分自身の参照を登録する必要がIBase.dllに置いているさらにエラーに生産エラーを過ぎてしまった。

InternetBase error '800a01ad' 

ActiveX component can't create object 

/Secure/CaseDetails.asp, line 333 

VB6で書かれたIBase.dllのプロジェクトファイルのバージョンが見つかりました。私がProject> Referencesに入ると、そこにはいくつかの.exesのエントリがあります。 (私は両方試したものの、SYSWOW64から)私は新しいサーバー上でこれらをます。regsvr32しようとしたときに今、私はエラーを取得する:古いサーバーで

The module "D:\ibase\ibasehelper4.exe" was loaded but the entry-point DLLRegisterServer was not found. 

Make sure that "D:\ibase\ibasehelper4.exe" is a valid DLL or OCX file and then try again. 

私はこれらのEXEを見つけDLLを支援するように見えるのレジストリエントリを見ることができます参照。これらのEXEをIBase.dllで使用できるように登録するにはどうしたらいいですか?それとも、私が試すことができるものは何ですか?

+4

EXEを登録するには、ibasehelper4.exe/regserver – Marc

+0

@Marcを使ってください。私はテストを受けるつもりですが、それを回答として投稿するのは自信がありませんか? :) – Paul

+0

私はまた追加する必要があります:あなたがこれに入る必要がある次の貧しい人が救いの手を持っているように、あなたが行うすべてのことを文書化してください。また、このすべてを現世紀の技術にできるだけ早く置き換えるケースを構築し始めましょう! – Xav

答えて

3

最後に使用してからしばらくしていますが、COMオブジェクトはインプロセスとアウトプロセスの2つの味があります。

DCOMを使用していて、他の偽装の中で実行されていない限り、ほとんどの場合、DLLはファンシーDLLですが、呼び出し元コードと同じプロセスで実行されました。

COM EXEはアウトプロセスであり、関連するマーシャリングおよびプロセス間通信のすべてのオーバーヘッドに相応します。

Marcが指摘したように、関連するレジストリエントリがロードされるには、/ regserverフラグを付けてEXEを呼び出す必要があります。 RegSvr32がDLLに対して行うのと同じ仕事をします。

*過去時制の意図的な悪用。私は確かに新しいものはまだいくつかの不幸な不幸によって今作成されています。

+1

プラス1つ。私はまた、これを「管理者として」実行するほうがよいことを言いたいと思います。 – MarkJ

+1

過去時制のばかげた誤用。誤解を招く人々を止めなさい:COMはWindowsの中心的な部分です。 .Netでさえ、COMとDCOMを非常に幅広く利用しています。これは、独自の選択肢が不十分で、パフォーマンスの悪いものであることが判明したためです。 – Bob77

+0

少なくとも私は過去にしっかりとしています... – Xav

関連する問題