installing VirtualBox on Windows 8.1
Jul. 7th, 2024 05:16 amAfter much effort, I finally got VirtualBox version 7.0.18 successfully installed on Windows 8.1.
Here are pertinent notes.
Use "Run as administrator" when installing VirtualBox.
If you leave the option selected for installing the Python Bindings, you may get an error about "Missing Dependencies" for "Python Core / win32api". If you don't plan to run Python scripts, you can deselect that option.
The rest of the notes below are about how to fix these errors which give no clue as to what is causing the problem:
"Oracle VM VirtualBox 7.0.18 Setup Wizard ended prematurely because of an error. Your system has not been modified." and "Installation failed! Error: Fatal error during installation."
You can try deselecting the option to install Bridged Networking, to see if that prevents the error.
In my case I still got the error even with both the Bridged and Host-Only networking options deselected.
Disabling my antivirus also did not prevent the error.
Some pages suggest adding (or updating if it already exists) a "MaxFilters" registry value of 20 under HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network.
Some pages indicate the name should be "MaxNumFilters" rather than "MaxFilters".
I added both, but still got the same error.
I extracted the .msi installer file with this command (it extracts the msi file to your Temp folder):
VirtualBox-7.0.18-162988-Win.exe -extract
I ran this command to generate a log file for the installation:
msiexec /i VirtualBox-7.0.18-162988.msi /l*v log.log
The log.log file showed these errors, which still didn't indicate what was causing the problem but at least showed which driver it was failing on:
DIFXAPP: ERROR: encountered while installing driver package 'C:\Program Files\Oracle\VirtualBox\drivers\USB\device\VBoxUSB.inf'
DIFXAPP: ERROR: InstallDriverPackages failed with error 0xE0000247
This page shows how to enable logging of the installation:
https://www.virtualbox.org/wiki/MSI_Logging
In my case, I didn't have to enable any additional logging. I found that the following file already existed with timestamped output from each of my failed install attempts. Each attempt had gotten this error while installing the VBoxUSB driver:
C:\Windows\Inf\setupapi.dev.log:
Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
I tried the installation again with the USB Support option deselected. This way, the installation finished without an error. But the setupapi.dev.log file showed that the other drivers (VBoxNetAdp6 and VBoxNetLwf) now got the same "not trusted by the trust provider" error, even though it didn't cause the install to fail like before. So most likely, neither USB nor networking would work (as mentioned by the last post in this forum thread).
When I ran VirtualBox, it displayed this error:
Can't enumerate USB devices...
Failed to enumerate host USB devices.
Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might not be installed on the host computer.
https://forums.virtualbox.org/viewtopic.php?t=93367
Per the above, I used 7zip to unzip the install exe. (I also unzipped the msi; both contained the same set of files.)
I copied the File_VboxUSB* files to a separate folder.
I removed the "File_" prefix from the file names.
As my computer is Windows 8.1 (pre-Windows 10), I renamed VBoxUSB_PreW10.cat to VBoxUSB.cat.
I right-clicked VBoxUSB.inf and selected to install it.
It gave this error: A problem was encountered while attempting to add the driver to the store.
C:\Windows\Inf\setupapi.dev.log again showed this error:
Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
See:
https://forums.virtualbox.org/viewtopic.php?t=104557
https://www.virtualbox.org/ticket/20692#no1
https://www.virtualbox.org/changeset/94160/vbox
https://www.virtualbox.org/changeset/72004/vbox
https://mywindowshub.com/check-secure-boot-enabled-disabled-windows-8-1/
Secure Boot is turned "On" for me. Considering the above, maybe that means I need to use the Windows 10 versions of the drivers even though the computer is Windows 8.1.
I renamed VBoxUSB.cat back to VBoxUSB_PreW10.cat.
I renamed VBoxUSB_W10.cat to VBoxUSB.cat.
I right-clicked VBoxUSB.inf and selected to install it.
It gave this error:
The software was tested for compliance with Windows Logo requirements on a different version of Windows, and may not be compatible with this version.
https://forums.virtualbox.org/viewtopic.php?t=104928
This page shows how to get around the version error when installing Windows 10 drivers on Windows 8.1:
https://git.zx2c4.com/downlevel-driver-enabler/about/
It requires compiling a C file into a DLL (I may create a separate post on how I did that later), and temporarily updating a registry key to point to the new DLL.
So I compiled the C file to create the DLL and updated this registry key to point to it:
HKLM\SOFTWARE\Microsoft\Cryptography\Providers\Trust\FinalPolicy\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\$DLL
Then I was able to successfully install VBoxUSB.inf!
I followed the same method to install the other W10 drivers:
VBoxUSBMon.inf
VBoxNetAdp6.inf
VBoxNetLwf.inf
(VBoxUSBMon.inf seemed to have a problem - a popup box displayed for a split second rather than the success message. But the below driverquery command showed that it was installed ok.)
To check if the drivers installed ok, two commands can be run from the command line:
driverquery > driverquery.txt
pnputil -e > driverlist.txt
The driverquery output only includes entries for "VBoxSup" and "VBoxUSBMon", not the other VBox drivers.
The pnputil -e output shows entries for the other drivers, however they are listed under different names like oem##.inf.
It is best to run the pnputil -e command both before and after the installs (change the output file name each time), so you can compare the output files to see what got added.
The setupapi.dev.log file shows how the oem## names match up to the VBox*** names. For example:
Installed catalag 'VBoxUSB.cat' as 'oem70.cat'
Installed catalag 'VBoxNetAdp6.cat' as 'oem73.cat'
Installed catalag 'VBoxNetLwf.cat' as 'oem74.cat'
After successfully installing the drivers and running VirtualBox, I initially still got the "Can't enumerate USB devices..." error. But then after restarting the computer, that error went away.
Here are pertinent notes.
Use "Run as administrator" when installing VirtualBox.
If you leave the option selected for installing the Python Bindings, you may get an error about "Missing Dependencies" for "Python Core / win32api". If you don't plan to run Python scripts, you can deselect that option.
The rest of the notes below are about how to fix these errors which give no clue as to what is causing the problem:
"Oracle VM VirtualBox 7.0.18 Setup Wizard ended prematurely because of an error. Your system has not been modified." and "Installation failed! Error: Fatal error during installation."
You can try deselecting the option to install Bridged Networking, to see if that prevents the error.
In my case I still got the error even with both the Bridged and Host-Only networking options deselected.
Disabling my antivirus also did not prevent the error.
Some pages suggest adding (or updating if it already exists) a "MaxFilters" registry value of 20 under HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network.
Some pages indicate the name should be "MaxNumFilters" rather than "MaxFilters".
I added both, but still got the same error.
I extracted the .msi installer file with this command (it extracts the msi file to your Temp folder):
VirtualBox-7.0.18-162988-Win.exe -extract
I ran this command to generate a log file for the installation:
msiexec /i VirtualBox-7.0.18-162988.msi /l*v log.log
The log.log file showed these errors, which still didn't indicate what was causing the problem but at least showed which driver it was failing on:
DIFXAPP: ERROR: encountered while installing driver package 'C:\Program Files\Oracle\VirtualBox\drivers\USB\device\VBoxUSB.inf'
DIFXAPP: ERROR: InstallDriverPackages failed with error 0xE0000247
This page shows how to enable logging of the installation:
https://www.virtualbox.org/wiki/MSI_Logging
In my case, I didn't have to enable any additional logging. I found that the following file already existed with timestamped output from each of my failed install attempts. Each attempt had gotten this error while installing the VBoxUSB driver:
C:\Windows\Inf\setupapi.dev.log:
Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
I tried the installation again with the USB Support option deselected. This way, the installation finished without an error. But the setupapi.dev.log file showed that the other drivers (VBoxNetAdp6 and VBoxNetLwf) now got the same "not trusted by the trust provider" error, even though it didn't cause the install to fail like before. So most likely, neither USB nor networking would work (as mentioned by the last post in this forum thread).
When I ran VirtualBox, it displayed this error:
Can't enumerate USB devices...
Failed to enumerate host USB devices.
Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might not be installed on the host computer.
https://forums.virtualbox.org/viewtopic.php?t=93367
Yes unselecting the usb option is the only way to install without failing. But i have been able to install the usb manually from extracting the the stock exe and then after that is done, I have extracted the 64bit msi using 7zip. All this goes to the %TEMP% folder btw.
Then cd to the newly created msi extraction directory and run powershell from within that directory with this command
"Dir | Rename-Item -NewName { $_.name -replace "file_","" }" without the quotes.
It removes the "file_" from all the files that have that name.
Then from there to make it easier to work with delete everything that is not a .inf, .cat, or a .sys file.
If you dont need to delete the files then just rename "VBoxUSB_W10.cat" to "VBoxUSB.cat" and "VBoxUSBMon_W10.cat" to "VBoxUSBMon.cat".
After that just right click on every .inf file and click install.
This is most likely not needed but i was also have trouble with the network adapter and this fixed it as well.
For just the usb to work you just need to right click and install from these two files. "VBoxUSB.inf" and "VBoxUSBMon.inf"
Per the above, I used 7zip to unzip the install exe. (I also unzipped the msi; both contained the same set of files.)
I copied the File_VboxUSB* files to a separate folder.
I removed the "File_" prefix from the file names.
As my computer is Windows 8.1 (pre-Windows 10), I renamed VBoxUSB_PreW10.cat to VBoxUSB.cat.
I right-clicked VBoxUSB.inf and selected to install it.
It gave this error: A problem was encountered while attempting to add the driver to the store.
C:\Windows\Inf\setupapi.dev.log again showed this error:
Error 0x800b0109: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
See:
https://forums.virtualbox.org/viewtopic.php?t=104557
https://www.virtualbox.org/ticket/20692#no1
https://www.virtualbox.org/changeset/94160/vbox
Additions: Windows: Use the same approach as with the host driver for .cat files, i.e. create 2 copies, one for Windows versions before 10, and one for 10 and later (which in UEFI Secure Boot mode modified the trusted root list, requiring Attestation Signing). The NSIS installer will deliver the appropriate file.
https://www.virtualbox.org/changeset/72004/vbox
Installer/win,HostDrivers/*/win: Ship two different .cat files, one for W10 w/ MS blessing and a pre-W10 that we created+signed during build.
https://mywindowshub.com/check-secure-boot-enabled-disabled-windows-8-1/
Steps to Check if Secure Boot is Enabled or Disabled in Windows 8 and 8.1
1. Press Windows+R to open Run Window. Type msinfo32 and press Enter.
2. Find out System Summary and in the right pane select Secure Boot State and check its state.
Secure Boot is turned "On" for me. Considering the above, maybe that means I need to use the Windows 10 versions of the drivers even though the computer is Windows 8.1.
I renamed VBoxUSB.cat back to VBoxUSB_PreW10.cat.
I renamed VBoxUSB_W10.cat to VBoxUSB.cat.
I right-clicked VBoxUSB.inf and selected to install it.
It gave this error:
The software was tested for compliance with Windows Logo requirements on a different version of Windows, and may not be compatible with this version.
https://forums.virtualbox.org/viewtopic.php?t=104928
During the installation of the VirtualBox Guest Additions, the installation of the Windows drivers fails with error 0xE0000244 (ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH: The software was tested for compliance with Windows Logo requirements on a different version of Windows, and may not be compatible with this version). AFAIU, due to Microsoft requirements, the driver signing for Windows 10 was changed, and is now incompatible to Windows 8.1. The VirtualBox devs are aware of it, but the issue hasn't been solved yet. Some deep technical background can be found in Downlevel Driver Enabler
This page shows how to get around the version error when installing Windows 10 drivers on Windows 8.1:
https://git.zx2c4.com/downlevel-driver-enabler/about/
It requires compiling a C file into a DLL (I may create a separate post on how I did that later), and temporarily updating a registry key to point to the new DLL.
So I compiled the C file to create the DLL and updated this registry key to point to it:
HKLM\SOFTWARE\Microsoft\Cryptography\Providers\Trust\FinalPolicy\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\$DLL
Then I was able to successfully install VBoxUSB.inf!
I followed the same method to install the other W10 drivers:
VBoxUSBMon.inf
VBoxNetAdp6.inf
VBoxNetLwf.inf
(VBoxUSBMon.inf seemed to have a problem - a popup box displayed for a split second rather than the success message. But the below driverquery command showed that it was installed ok.)
To check if the drivers installed ok, two commands can be run from the command line:
driverquery > driverquery.txt
pnputil -e > driverlist.txt
The driverquery output only includes entries for "VBoxSup" and "VBoxUSBMon", not the other VBox drivers.
The pnputil -e output shows entries for the other drivers, however they are listed under different names like oem##.inf.
It is best to run the pnputil -e command both before and after the installs (change the output file name each time), so you can compare the output files to see what got added.
The setupapi.dev.log file shows how the oem## names match up to the VBox*** names. For example:
Installed catalag 'VBoxUSB.cat' as 'oem70.cat'
Installed catalag 'VBoxNetAdp6.cat' as 'oem73.cat'
Installed catalag 'VBoxNetLwf.cat' as 'oem74.cat'
After successfully installing the drivers and running VirtualBox, I initially still got the "Can't enumerate USB devices..." error. But then after restarting the computer, that error went away.