How to Repair the Vmm32.vxd
This week we will talk about how to repair or replace a damaged or missing Vmm32.vxd file. It seems to be a popular informational search request on our site. People looking for " Unable to find VMM32.VXD" or "Cannot find or corrupt Windows Loader".
You will need to know exactly what the Vmm32.vxd file is. The Vmm32.vxd file is used on the Windows 9x and ME platforms only. The Vmm32.vxd is a monolithic file that contains many different VXD files (Virtual Device Driver), much like a CAB or a ZIP file. The Vmm32.vxd file is created by the Windows Setup program, and it contains different drivers for each machine. In many cases it will contain different drivers on each installation of Windows to the same machine, so replacing this file cannot be done by getting it from another machine. There is a standard VMM32.vxd file in the Windows Cabinet files, but it is not usable as is. It only contains a few basic VXDs and Windows adds to it as it installs Windows using the Wininit.ini file.
If the Vmm32.vxd file is damaged or missing Windows will not boot, so you have three choices. 1.You can obtain it from a backup. For those of you who have WinSafe, it automatically monitors and backs up the Vmm32.vxd file, it will even tell you if the file is missing or changed before shutting down Windows. If the file changed and you find out it is damaged when you try and reboot; WinSafe can restore its' backup Vmm32.vxd from DOS. If it is missing WinSafe will not shut down Windows, allowing you to restore with WinSafe backup file.
2. Reinstall Windows
3. Make a repair, which is the topic of this newsletter.
You can find a list of all the files inside the Vmm32.vxd file at the Registry Key: HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ VMM32Files.
So before you have a problem it is a good time to export this Key so you have a list for the future should you decide to repair the damaged or missing Vmm32.vxd file.
If you need to get this list and you are unable to boot to Windows, You have two .
go to the Command prompt and at the C:\Windows> prompt type:
RegEdit /e Vmmlist.txt HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ VMM32Files
Now you can read the file in DOS by typing:
If you get an error you may need to go to the Windows\Command prompt and type it.
Or you can copy the System.dat file to another computer using 9x or ME. Then have Registry Drill load the file and you will be able to view the Key on another computer.
OK, so now you have a list which looks something like this abbreviated example(your actual list may contain approximately 40 or more file names):
[HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ VMM32Files]
The file names are vdd.vxd, vflatd.vxd, and biosxlat.vxd. You can extract each file, one at a time to the Windows\System\Vmm32 folder. This folder is used when a vxd file needs to be added to the Vmm32.vxd file; instead of trying to have Wininit.ini try to add the file to the Vmm32.vxd file and risk corrupting the file, the new file can be placed here. If a file is listed in the Vmm32Files Registry Key, Windows looks inside the Vmm32.vxd file and in the Windows\System\Vmm32 folder for it. Now would be a good time to see what files are in this folder so you can eliminate extracting the ones that are in the folder already.
I noticed that some software vendors put the files in the Iosubsys folder instead. I prefer the Vmm32 folder, Windows loads this folder first.
Rename the old Vmm32.vxd to something like Vmm32.sav, if it has not already been deleted. You will find it in the Windows\System folder. You will also find a stock VMM32.vxd file in the cab files, extract it to the System folder.
Now I guess you want to know how to extract a file when your in DOS. You will need to know where your Windows Installation files are located. If your files are on a CD you will need to reboot and load your CD-ROM with the Windows CD in it. Mine are on my hard drive at C:\Windows\Options\Cabs, so therefore I will move my DOS prompt to C:\Windows\Options\Cabs>. Make sure you have Extract.exe in your Windows installation files' folder. If not, you will need to do this from the Windows\Command folder, adjusting the paths accordingly.
Now at the C:\Windows\Options\Cabs> type :
Extract /A CabFile_Starting# /E FileName_Wanted /L VMM32_Folder
The /A switch tells Extract to search all the cabinet file from the cabinet number entered up.
CabFile_Starting# = the first cabinet file number you have after the Precopy cab(s). Mine is Base2.cab, so I will replace this variable with Base2.cab. The /A tells Extract to search all the Cabinet files. If you are using the Windows\Command> prompt you will need to enter the full path, I would need to use C:\Windows\Options\Cabs\Base2.cab
FileName_Wanted = The name of the file in the list. In my case I will replace this variable with vdd.vxd. The /E switch tells Extract what file name to search for and extract.
VMM32_Folder = The path to the Vmm32 Folder. In my case I will replace this variable with C:\Windows\System\Vmm32. The /Lswitch tells Extract the location to extract the file to.
Now, for a HOT tip, try making a Batch file (.BAT) to extract all the files at once. To make a Batch file type each command on one line, then go to the next line and type the next command. Each command consists of the file name you want to extract. Save the file and run it. Example of the Batch file that I will save as VmmList.bat:
Extract /A Base2.cab /E VDD.vxd /L C:\Windows\System\Vmm32
Extract /A Base2.cab /E Vflatd.vxd /L C:\Windows\System\Vmm32
Extract /A Base2.cab /E Biosxlat.vxd /L C:\Windows\System\Vmm32
For those of you who know about Wininit.ini you can create a new Vmm32.vxd file using the following example, and extracting the required files to a temp folder. Rename the existing Vmm32.vxd and extract the standard Vmm32.vxd from your cabinet files. This method is not recommended for beginners, I have seen to many Vmm32.vxd files get corrupt installing 3rd party software when the vendor try's to use the Wininit file to add a VXD to the Vmm32.vxd.
C:\Windows\Temp\Biosxlat.vxd = C:\Windows\System\Vmm32.vxd