Windows 8 vb40032.dll on Windows 8.1

Jim S

Honorable Member
Don't laugh, but I have a very old Visual Basic program that I wrote many years ago, and I still use it for a quick-and-dirty checkbook balancing tool. Yes, of course I could do something similar with an Excel spreadsheet or Quicken, but I still want this program to work. It has run flawlessly on Win XP, Win Vista and Win 7. Now I have a brand new Win 8.1 system, and I want it to work there as well. The app executable file itself is an exe file, and the Visual Basic 4 runtime file is vb40032.dll. I have both files, but I need to know where to put the dll file. Attempts to run the exe file produce the error message The program can't start because VB40032.DLL is missing from your computer. Try reinstalling the program to fix this problem. I don't think I actually need to do a formal reinstall - I just need to put the dll file in the correct location. An old post on the Microsoft website says to put the file in the \Windows\System folder. On the Win 8.1 system there is very little in the System folder but there are thousands of items in the System32 folder, so I'm guess that the dll file should go there. Can someone confirm or give other advice?
 
I took a chance and copied vb40032.dll to the System32 folder, but the same error occurs, so that didn't do it. Either that's not the right location or perhaps there's a permission problem.
 
OK, tried one more thing and copied the dll file to the System folder as the ancient Microsoft advice page suggested. Got a different error message. This is the MS page.
 
Why not try to uninstall the program and re-install it...that should correct your issue.
 
Why not try to uninstall the program and re-install it...that should correct your issue.

Good suggestion, but I haven't had the Visual Basic program itself for at least ten years. Have just put the executable file and the run-time file on previous versions of Windows and it worked.
 
Have done more Googling. It was first reported that Visual Basic 6 run-time would not be supported on Windows 8 but later that it would. However, my old program was developed in VB 4, so I think I'm out of luck.
 
Andrea, thanks for the suggestion. Here's an update on additional steps I have taken. I found a 1996 version of VB40032.DLL in the \Windows\System folder on my old Windows 7 PC and a 2000 version of the same DLL in the \Windows\System32 folder, so I copied those two versions of the file to the new Windows 8 computer and put them into the folders of the same names. Still getting an error.

The link you referred me to has the following note: "If you use a 64-bit version of Windows, you should also place vb40032.dll in C:\Windows\SysWOW64\", so I did that as well. Still getting an error. It is, "Error accessing the system registry". Clicking OK on that error message produces another message, "Unexpected error, quitting".

The last line of the link you referenced says the following:
If the problem still occurs, try the following:

1. Open Windows Start menu and select "Run...".
2. Type CMD and press Enter (or if you use Windows ME, type COMMAND)).
3. Type regsvr32 vb40032.dll and press Enter.

I am always very cautious of doing anything with the Registry. What does the last line do? Is there any risk in trying this? Will it possibly fix my problem? Do you know in which Windows folder the regsvr32 program expects to find the dll file - System, System32 or SysWOW64?
 
No Jim there is no risk to this, as typing the command "regsvr32 vb40032.dll" in command prompt registers the dll file, that's all. Which you may have to do if the dll is not registered. I think it would find System 32 folder if you put the dll file in there. I tried to PM you about this, but you have disabled PMs, so I couldn't.
 
I put the vb40032.dll file in both System32 and SysWOW64 and then ran "regsvr32 vb40032". Got the warning 'The module "vb40032.dll" may not (missing word "be") compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.' Based on my earlier finding that VB6 was almost not going to be supported by Win 8 and then was later, I'll probably give up on support for VB4 and find a new way to balance my checkbook.
 
I put the vb40032.dll file in both System32 and SysWOW64 and then ran "regsvr32 vb40032". Got the warning 'The module "vb40032.dll" may not (missing word "be") compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.' Based on my earlier finding that VB6 was almost not going to be supported by Win 8 and then was later, I'll probably give up on support for VB4 and find a new way to balance my checkbook.
If you somehow have the original code, it could be possible to recompile it in a newer version of Visual Basic like VB6, as you say, although this looks like it is going out the door soon. You may also be able to virtualize the original executable using a program called VMWare ThinApp. This may be one way to permanently secure compatible use of the application in some scenarios.
 
Jim S said:
I put the vb40032.dll file in both System32 and SysWOW64 and then ran "regsvr32 vb40032". Got the warning 'The module "vb40032.dll" may not (missing word "be") compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.' Based on my earlier finding that VB6 was almost not going to be supported by Win 8 and then was later, I'll probably give up on support for VB4 and find a new way to balance my checkbook.
You are supposed the run the command as administrator that could be it. I have got 16 bit apps on my 32 bit Windows 8 and for some of those I had to install the same Dll file.

What software is it you are trying to run may I ask? If you are running 64 bit Windows,then 16 bit software won't run,as they only work on 32 bit Windows.
 
It seems to be software that he, himself, developed at some time in the past.
 
I wrote the program in Visual Basic 4 and have run (on Win XP, Vista and 7) the executable file as long as the VB4 run-time file is available. I am running 64-bit Windows. I don't know if the VB4 run-time is 16-bit or 32-bit.
 
I believe VB4 had both 16 bit and 32-bit runtime, you said you were getting registry permission errors? Have you tried running the program in XP Compatability mode AND as Administrator?

I don't see any reason why the vb4 runtime wont work on Windows 8/8.1 off the top of my head (well the 32-bit side at least). You may want to try running Microsoft's official VB4 runtime installer as Administrator.

It can be found here: http://support.microsoft.com/gp/vbruntime

"Vb4Run.exe is a self-extracting file that contains the run-time engine(s) for both the Microsoft Visual Basic 4.0 16-bit and 32-bit versions."
http://download.microsoft.com/download/vb40ent/sample27/1/w9xnt4/en-us/vb4run.exe

VB4 was easy to disassemble if I remember correctly, probably wouldn't take much to disassemble it back to code and convert it to VB6 or VB.NET :)
 
Last edited:
Hmm I just tried to install the VB4 runtime from Microsoft's installer and Windows 8 (not the installer) tells you that your OS is not supported. So apparently support for VB4 has been dumped (officially at least) in Windows 8/8.1. I really would suggest if you liked VB that much to download VB.NET Express edition and re-write your app, would be a good learning experience and probably would not take you long :)
 
Great news! The program runs on Windows 8.1! Thanks for the hints, Josephur. I created a shortcut icon on the desktop to the exe file and set the compatibility mode to Windows 7. I do not need to run it as an Administrator. Now I can balance my checkbook the way I've done it for the past 15 or 20 years!
 
Glad you were able to get it working, Microsoft does try hard for backwards compatibility even though most people don't seem to think so. This is also why our new versions of Windows are so huge, all that compatibility means more support files :)
 
Back
Top