I've run across this problem a few times, but have never been able to fix it without a repair install or full reinstall.
I'm working on a Compaq desktop with XP SP3 that suffered a BSoD. It turned out that the HDD prob had a few sector errors on it. So, I cloned the drive to a new drive - it booted fine with no apparent problems. After some time of bringing the system up to speed with missing updates, I encountered a problem with .NET (laughter down, please...) that required manual removal of 3.5 then reinstall (which, after a couple of reboots & more updates seemed to settle down).
After all this, and thinking that the machine was going pretty well, I tried plugging in a standard USB flash drive - I got that dreaded 'Windows Has Found New Hardware' message that always tells me that I'm about to waste a lot of time fixing a stupid problem. The only way I was able to get the flash drive to "install" was to say 'no' to the 1st message in the wizard, go with the 2nd option on the next screen, then enter c:\windows\inf for the location directory. Even then, I got a warning message about the driver not being signed (which is obviously significant, since this should be a bog-standard Windows / motherboard driver, no?).
After trolling the web for a couple of hours, I found and tried the following solutions:
regsvr32 /u softpub.dll
regsvr32 /u wintrust.dll
regsvr32 /u initpki.dll
regsvr32 /u dssenh.dll
regsvr32 /u rsaenh.dll
regsvr32 /u gpkcsp.dll
regsvr32 /u sccbase.dll
regsvr32 /u slbcsp.dll
regsvr32 /u mssip32.dll
regsvr32 /u cryptdlg.dll
Delete C:\Windows\system32\catroot2 folder then reboot (I also did C:\Windows\system32\catroot by mistake 1st time, not seeing the '2' at the end of the suggestion initially - this didn't seem to make things any worse or better, and Windows recreated the catroot folder automatically)
http://www.uwe-sieber.de/usbtrouble_e.html#xp_asks_for_drivers which is
a solution for USB devices asking for drivers, but it looks like it
should apply to the default location for any drivers.
"The registry key that points to the INF folder is corrupt.
Start the Registry Editor (Run, Regedit). Check if under
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion the item
'DevicePath' points to '%SystemRoot%\inf'. Additional items, separated
by semicolons, are ok but '%SystemRoot%\inf' has to be one of them.
Then delete the file C:\WINDOWS\inf\infcache.1 - XP will recreate it.
The INF folder and the infcache.1 file are 'hidden'. To see them in the
Menu 'Tools', 'Folder Options'
Tab 'View', mark 'show hidden files and folders'
If it still doesn't work after a restart, the files in C:\WINDOWS\inf
might be corrupt. A Windows repair install helps then.
Another thing to check is if the values 'FactoryPreInstallInProgress'
and 'AuditInProgress' are set to '1' under
They should be 0 or non present.
After all that, I gave up and did a repair install.
What I did find was that the Registry entry item HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
'DevicePath' was completely blank, and I had to manually enter %SystemRoot%\inf. Once I did that, I was able to let the Hardware Wizard do an automatic search, and it did find the info it needed happily, but I still got the signing warning message.
I also found posts that allowed me to switch off driver signing, which would have probably stopped the warning message, but I didn't want to go there & have that be a problem later, and besides which the Hardware Wizard shouldn't be showing up with ordinary stuff like flash drives anyway. Note, I also tested a USB keyboard (on a rear port where the flash drive was on a front port) and got the same problem, so it's clearly a problem with the whole USB subsystem.
So, has anyone else managed to actually find a way around this without a repair install? I'm bound to come across this again in the future, so it would be great to have the info to hand for later. It's true that, with hindsight, the amount of time that I spent on the PC getting into good shape after it's BSoD was too high (over 7 hours), and a reformat / reload would have been best. But, as you all know, often one doesn't know the 'correct' course of action until at least halfway through, no?