Driver rollback on Windows: when it works, when it does not
Use Device Manager and PnPUtil to roll a display driver back, understand why the button is greyed out, and recover from a black screen.
- Build
- 26300.9457 / 26100.33650
- Edition
- Pro (26H2) / Server
- Architecture
- x64
- Support
- Documentation (E1)
- Evidence
- E1Official documentation
- Verified
- 2026-10-29
- Page type
- Task
The short answer
Section titled “The short answer”Windows keeps the previous driver package for a device, so Roll Back Driver restores it without reinstalling Windows. It is the correct first move when an update breaks something.
It fails in three predictable cases:
- No previous package — clean install, or the old package was cleaned up.
- Windows Update already replaced it — the “previous” is the version you are trying to leave.
- The new driver broke the display — you cannot see the Device Manager to click the button.
Have an answer for all three before you need it.
Normal rollback
Section titled “Normal rollback”Win + X→ Device Manager.- Expand Display adapters → double-click the GPU.
- Driver tab → Roll Back Driver.
- Reboot.
The button is greyed out when no previous package exists. Check what Windows thinks is installed:
Get-PnpDevice -Class Display | Select-Object FriendlyName,Status,InstanceIdGet-PnpDevice -Class Display | Get-PnpDeviceProperty -KeyName 'DEVPKEY_Device_DriverVersion','DEVPKEY_Device_DriverDate'Rollback from the command line
Section titled “Rollback from the command line”Useful on servers and when the GUI is slow or broken:
# list display driver packages currently in the driver storepnputil /enum-drivers | Select-String -Context 0,7 'Display'
# remove a specific package (use the published name, e.g. oem42.inf)pnputil /delete-driver oem42.inf /uninstall /force/delete-driver removes the package from the store. It does not automatically install an older one — after deleting the broken package, scan for hardware changes or install the older package you kept.
Black screen after a driver update
Section titled “Black screen after a driver update”Order of operations, cheapest first:
- Wait 60 seconds and press
Ctrl + Shift + Win + B— this restarts the display driver without rebooting. - Hard reboot, then boot into safe mode: hold
Shiftwhile clicking Restart, or interrupt boot three times. - In safe mode, roll back or uninstall the display driver.
- If safe mode also fails, boot WinRE → Startup Settings → safe mode, or use System Restore.
If the machine has both integrated and discrete graphics, you can also disable the discrete GPU in safe mode to get a working desktop, then reinstall its driver normally.
Why “clean install with DDU” is not the default
Section titled “Why “clean install with DDU” is not the default”Third-party uninstallers exist because vendor uninstallers used to leave registry keys and filter drivers behind. Modern DCH packages uninstall much more cleanly, and aggressive cleaners can remove shared components that other software needs.
Use a third-party cleaner when:
- the normal uninstall leaves the display driver in a broken state;
- you are switching GPU vendors (NVIDIA ↔ AMD) and want a clean slate;
- the display driver is stuck in a crash loop that safe mode cannot break.
Otherwise, vendor uninstall + reboot + reinstall is enough — and leaves fewer unknowns.
Verify the state afterwards
Section titled “Verify the state afterwards”Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion,DriverDate,StatusGet-PnpDevice -Class Display | Select-Object Status,FriendlyNameGet-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Display'} -MaxEvents 10 | Select-Object TimeCreated,Id,LevelDisplayNameA Status : Error device or repeated Display TDR events after the rollback means the older package is also unhappy — that is a hardware/thermal/power investigation, not a driver-version one.
Related
Section titled “Related”Lab boundary
Section titled “Lab boundary”E1. The commands are Microsoft-documented; the lab’s virtual display adapter cannot reproduce a GPU driver rollback, so the procedure was not executed end to end here.