guidox / Hardware

Remove a Broken Printer Driver and Reset the Spooler

TL;DR

Stop the spooler, clear **C:\Windows\System32\spool\PRINTERS**, then remove the driver with **printui /s /t2** or **Remove-PrinterDriver**. Reinstall one clean driver.

Before you start

Requirements

  • Admin rights
  • The printer model
  • 20 minutes
Step by step

Instructions

01

Read the current queue and drivers

The driver list shows every package ever installed, including ones for printers that are gone. **Get-PrinterDriver** names the version and the INF behind each.

Get-Printer | Select-Object Name,DriverName,PortName,PrinterStatus
Get-PrinterDriver | Select-Object Name,Manufacturer,DriverVersion,InfPath
Get-Service Spooler | Select-Object Status,StartType
02

Stop the spooler and clear the queue

Deleting files in the PRINTERS folder while the service runs fails or corrupts the queue. Stop the service first, then delete the files, then start it.

Stop-Service Spooler -Force
Get-ChildItem "$env:systemroot\System32\spool\PRINTERS" | Select-Object Name,Length
Remove-Item "$env:systemroot\System32\spool\PRINTERS\*" -Force
Start-Service Spooler
03

Remove the broken driver package

**printui /s /t2** opens the driver store view where a package can be removed with its files. Remove-PrinterDriver does the same from PowerShell.

Remove-Printer -Name 'HP LaserJet 1020' -ErrorAction SilentlyContinue
Remove-PrinterDriver -Name 'HP LaserJet 1020' -ErrorAction SilentlyContinue
printui /s /t2
Get-PrinterDriver | Select-Object Name,InfPath
04

Delete the leftover INF from the driver store

A driver that refuses to uninstall leaves an oemXX.inf entry. pnputil removes it at the store level, which is what the print UI cannot reach.

pnputil /enum-drivers | Select-String -Pattern 'Printer|Print' -Context 0,4
pnputil /delete-driver oem42.inf /uninstall /force
Get-WindowsDriver -Online | Where-Object ClassName -eq 'Printer' | Select-Object Driver,ProviderName,Date
05

Install one clean driver

Add the printer again with the vendor package, not the generic one, then print a test page. A single driver entry for one printer is the goal.

Add-PrinterDriver -Name 'HP LaserJet 1020'
Add-Printer -Name 'HP1020' -DriverName 'HP LaserJet 1020' -PortName 'USB001'
Get-Printer | Select-Object Name,DriverName,PrinterStatus
Start-Process "$env:systemroot\System32\printui.exe" -ArgumentList '/k /n HP1020'
06

Confirm the queue stays clean

Print three jobs and watch the folder. Files that remain after a successful job mean the spooler cannot delete them, which points at permissions on the folder.

1..3 | ForEach-Object { Start-Process notepad -ArgumentList '/p' } 2>$null
Get-ChildItem "$env:systemroot\System32\spool\PRINTERS" | Select-Object Name,Length
Get-WinEvent -LogName 'Microsoft-Windows-PrintService/Admin' -MaxEvents 10 -ErrorAction SilentlyContinue | Select-Object TimeCreated,Id,Message
Troubleshooting

Common issues

The spooler stops as soon as a job arrives

A faulty driver crashes it. Check the PrintService/Admin log for the driver name, then remove that package and reinstall a current one.

Remove-PrinterDriver says the driver is in use

A printer still references it. Remove the printer first, restart the spooler, then remove the driver.

The printer is installed but shows offline

That is a port or connection problem, not a driver one. Check the port in Printer properties and the device's own network address.

The test page prints garbage

The wrong driver language is bound to the printer. Remove the package and install the exact model, not a similar one.

FAQ

Frequently asked

Does clearing the queue delete the print jobs permanently?

Yes. The jobs are gone and have to be sent again from the application.

Do I need to restart after removing a driver?

Usually not, but a spooler restart is needed for the change to apply to running jobs.

Why are there drivers for printers I never owned?

Windows Update and network discovery add packages. They stay in the store until removed explicitly.

How to undo this

Reinstall the previous driver package from the vendor and add the printer back with its original port. The cleared jobs cannot be restored.

Changelog · 1 entry
  1. 2026-11-01
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress