Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Registering VB6 references to an EXE

Tags:

registry

vb6

So my scenario is an old server needs retiring but the mixed platform web solution on it needs porting to a new Windows 2012R2 server. My background doesn't include a lot of experience with the technologies involved so I am struggling plus all the developers involved left without any documentation several years ago, if not more.

The classic ASP website has a reference to an inhouse DLL that we'll call IBase.dll. I used regsvr32 to register this and got past a produced error to a further error which I'm putting down to IBase.dll needing it's own references registering.

InternetBase error '800a01ad' 

ActiveX component can't create object 

/Secure/CaseDetails.asp, line 333

I managed to find a version of the project files for IBase.dll which was written in VB6. When I go into Project>References it has entries for some inhouse .exes. Now when I tried to regsvr32 these on the new server (from syswow64, though I tried both) I get an error:

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.

On the old server I can see registry entries that seem to assist the DLL finding these EXE references. How can I properly try to register these EXEs to make them available to IBase.dll? Or even, what are some things I could try?

like image 858
Paul Avatar asked Nov 30 '25 16:11

Paul


1 Answers

It's been a while since I last used it, but COM objects came* in two flavours: in-process and out-of-process.

DLLs (and OCXs, which are just a fancy DLL for most purposes) ran in the same process as the calling code unless you're using DCOM and running on another machine, among other abhorrences.

COM EXEs are out-of-process, with all the commensurate marshalling and inter-process communication overhead that's involved.

As Marc pointed out, you need to call the EXE with the /regserver flag to get the relevant registry entries loaded. It does the same job as RegSvr32 does for the DLLs.

*deliberate misuse of the past tense. I'm sure new ones are still being created now by some poor unfortunates.

like image 74
Xav Avatar answered Dec 03 '25 07:12

Xav



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!