Remove any obsolete x86 vendor printer drivers before retrying the upgrade, but do not manually delete the Microsoft ntprint.inf_x86... folder or copy UNIRES.DLL from another server.
SetupDiag matched DriverPackageMissingFileFailure, which specifically means a driver package was missing a file during device installation; updating or removing the affected package is the documented corrective action.^1^ The 0xC1900101-0x4000D code also identifies a second-boot rollback associated with incompatible driver configuration.^2^
1. Inventory the x86 print drivers
First take a full server backup or VM snapshot. Removing a driver that is still required can make its associated device unavailable.
Open PowerShell as Administrator and run:
Get-PrinterDriver |
Select-Object Name, Manufacturer, MajorVersion, PrinterEnvironment |
Sort-Object PrinterEnvironment, Manufacturer, Name |
Format-Table -AutoSize
Look for entries whose environment is Windows NT x86, particularly old vendor-specific drivers. ntprint.inf is Microsoft’s core printer INF: vendor printer packages commonly invoke it to install shared Unidrv components.^3^ Therefore, the reported Microsoft package can be the dependency that exposes a stale vendor driver during migration, rather than the package that should be forcibly deleted.
If this is a print server, record which queues use each candidate driver:
Get-Printer |
Select-Object Name, DriverName, PortName, Shared |
Sort-Object DriverName, Name |
Format-Table -AutoSize
2. Remove unused x86 vendor drivers
For a driver no longer used by any queue, remove it by its exact displayed name:
Remove-PrinterDriver -Name "Exact legacy x86 driver name"
The command requires administrator credentials.^4^
Alternatively, use Server Manager → Tools → Print Management → Print Servers → server → Drivers. Review the Environment column and remove unused Windows NT x86 vendor drivers and their packages.
If a driver is still assigned to a queue, migrate that queue to a current vendor-supported driver or remove the obsolete queue first. Do not remove an operational driver until its dependency has been addressed.
3. Check the third-party Driver Store
PnPUtil lists third-party packages only; inbox packages such as the Microsoft core print package aren't included in that list.^5^
From an elevated Command Prompt:
mkdir C:\DriverAudit
pnputil /enum-drivers > C:\DriverAudit\drivers.txt
notepad C:\DriverAudit\drivers.txt
Locate old printer-class packages and note their Published Name, such as oem42.inf. Only after confirming that a package is a nonessential vendor printer driver, remove it:
pnputil /delete-driver oem42.inf /uninstall
PnPUtil removes the package from devices and the Driver Store. If no alternative matching driver exists, the device will stop functioning, so do not target ntprint.inf or remove an unidentified package.^6^
4. Reboot and retry the upgrade
- Reboot the server after removing the obsolete drivers.
- Confirm required printers still operate.
- Retry the upgrade from Windows Server 2022 installation media.
A direct installation-media upgrade from Windows Server 2016 to Windows Server 2022 is supported for a nonclustered server.^7^
Since SFC and DISM already complete without errors, repeating those repairs is unlikely to add useful information. Also avoid downloading a standalone DLL or copying UNIRES.DLL into DriverStore: the file belongs to a signed core print package, and replacing one file does not restore that package’s catalog and integrity.
If it still fails
Run the latest SetupDiag again after rollback and check its last matched failure, because Microsoft notes that the last failure is normally the fatal one.^1^ Also inspect:
C:\$Windows.~BT\Sources\Rollback
C:\Windows\Logs\SetupDiag\SetupDiagResults.xml
If it again identifies ntprint.inf_x86... after all x86 vendor drivers are gone, preserve the complete SetupDiag output and rollback logs for Microsoft Support. That indicates the remaining issue is the inbox core print package itself; the available documentation does not provide a supported command to forcibly remove or reconstruct that Server 2016 inbox package.
References