VirtualBox

Changeset 107973 in vbox for trunk/src/VBox/GuestHost


Ignore:
Timestamp:
Jan 29, 2025 9:30:26 AM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167232
Message:

Windows driver installation: Fixed the ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED error, added documentation and give a clue to users why this might have failed. See source for details. bugref:10762

Location:
trunk/src/VBox/GuestHost/installation
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/installation/VBoxDrvInst.cpp

    r107766 r107973  
    437437    uint64_t uOsVer = 0;
    438438
    439     /* By default we want to force an installation and be silent. */
    440     uint32_t fInstall = VBOX_WIN_DRIVERINSTALL_F_SILENT | VBOX_WIN_DRIVERINSTALL_F_FORCE;
     439    /* By default we want to force an installation.
     440     *
     441     * However, we do *not* want the installation to be silent by default,
     442     * as this this will result in an ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED error
     443     * if drivers get installed with our mixed SHA1 / SH256 certificates on older
     444     * Windows guest (7, Vista, ++).
     445     *
     446     * So if the VBOX_WIN_DRIVERINSTALL_F_SILENT is missing, this will result in a
     447     * (desired) Windows driver installation dialog to confirm (or reject) the installation
     448     * by the user.
     449     *
     450     * On the other hand, for unattended installs we need VBOX_WIN_DRIVERINSTALL_F_SILENT
     451     * being set, as our certificates will get installed into the Windows certificate
     452     * store *before* we perform any driver installation.
     453     */
     454    uint32_t fInstall = VBOX_WIN_DRIVERINSTALL_F_FORCE;
    441455
    442456    /* Whether to ignore reboot messages or not. This will also affect the returned exit code. */
  • trunk/src/VBox/GuestHost/installation/VBoxWinDrvInst.cpp

    r107935 r107973  
    13101310                    /* For anything else we want to get notified that something isn't working. */
    13111311                    if (!fRc)
    1312                         rc = vboxWinDrvInstLogLastError(pCtx, "DiInstallDriverW() failed");
     1312                    {
     1313                        switch (dwErr)
     1314                        {
     1315                            case ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED:
     1316                            {
     1317                                /* For silent installs give a clue why this might have failed. */
     1318                                if (pParms->fFlags & VBOX_WIN_DRIVERINSTALL_F_SILENT)
     1319                                    vboxWinDrvInstLogWarn(pCtx, "Silent installation was selected, but required certificates "
     1320                                                                "were not pre-installed into the Windows drvier store, so "
     1321                                                                "the installation will be rejected automatically");
     1322                                RT_FALL_THROUGH();
     1323                            }
     1324
     1325                            default:
     1326                                rc = vboxWinDrvInstLogLastError(pCtx, "DiInstallDriverW() failed");
     1327                                break;
     1328                        }
     1329                    }
    13131330                }
    13141331
     
    13601377                                vboxWinDrvInstLogWarn(pCtx, "Not able to select a driver from the given INF, using given model");
    13611378                                break;
     1379                            }
     1380
     1381                            case ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED:
     1382                            {
     1383                                /* For silent installs give a clue why this might have failed. */
     1384                                if (pParms->fFlags & VBOX_WIN_DRIVERINSTALL_F_SILENT)
     1385                                    vboxWinDrvInstLogWarn(pCtx, "Silent installation was selected, but required certificates "
     1386                                                                "were not pre-installed into the Windows drvier store, so "
     1387                                                                "the installation will be rejected automatically");
     1388                                RT_FALL_THROUGH();
    13621389                            }
    13631390
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette