How to remove a driver completely on a Windows XP client machine

driverswindows-xp

I have a client (XP SP3) machine where newer drivers have been installed.

Unfortunately while these (audio) drivers fixed mic boost, they have introduced problems such as no input working and random unnamed devices in applications that select the audio device. I need to revert the drivers.

However, rollback does not work (something about the drivers weren't backed up) and manually selecting the older driver is futile as XP just ignores it, stating, in its infinite wisdom, that the current driver is better and so I'd have no reason to want to use the older driver.

I know on printer drivers I can just delete – is there an option for other drivers?

Btw. I have done some research and can't seem to find a definite answer so I think this will be of help to plenty of others as well.

Best Answer

Windows uses a number of factors to decide what is the "best" driver, such as hardware ID matching (INFs that match more specific hardware IDs are "better"), driver date, driver version, and whether the driver is signed. How Setup Selects Drivers has the details if you're interested.

As for how to remove the newer driver, if it has an installer listed in Add/Remove Programs, then by all means use that. If not, you should be able to manually choose the older driver by right-clicking on the device in Device Manager, selecting "Update Driver...", "Install from a list or specific location", "Don't search. I will choose the driver to install", etc. Or did you already try that? (As well as selecting "Uninstall..."?)

If all else fails, you might have some success using the devcon command that ships with the Windows Driver Kit. You can remove a driver package using devcon dp_delete, or force Windows to choose a different driver using devcon update. There's also an older version of devcon available for direct download (the WDK is pretty large).

If you resort to manually deleting the driver's .inf file from %SystemRoot%\inf, be sure to delete the corresponding .pnf file as well, because Windows uses that to cache some/all of the .inf information.