change USB vendor id / product id

Under Windows XP, is there any easy way to change or spoof the vendor- and product-id of a USB device? (changing the corresponding descriptive strings would probably be good too)

Say for example there's a useful program which expects a particular device but you don't see why you should buy a new one when you have a very similar device already that's likely to work with the program.

I've done lots of Googling and apparently it can be done under Linux so it occurs to me to run Windows in a VM under Linux, but that would be a bit inconvenient.


You might be able to do this with devcon (easiest ways to install listed here), a utility provided with the Windows DDK/WDK. You can find a standalone version suitable for Windows XP at the link.

In particular, devcon's sethwid command may be able to do what you're looking for. See Examples page for some tutorials.

I'm not sure this will do exactly what you want, but I've a strong feeling that it may be as close as you'll get without writing your own filter driver. If you do need to write your own driver, grab the WDK and read the devcon sourcecode in src\setup\devcon.

You may also be able to use devcon in other ways to accomplish your goal, but without further details it's hard to say exactly how. Good luck!


The USB vendor-id/product-id are likely to be hard-coded in the device's firmware, and might therefore be unchangeable without hacking the firmware.

As most firmware is protected against changes, this is likely to brick the USB device.

Sorry to be negative, but I don't think it's possible.


I haven't done quite what you're asking, but this might give you a starting point. Also, I've only ever done this kind of stuff on pre-Vista versions.

The information that Device Manager and the Registry use to associate strings with hardware devices is initialized from the .INF file provided with the device. Fortunately, the .INF files are text files structured like .INI files so they're easy to work with. To change the "identity" of an existing device:

  1. Go to the WINDOWS\INF directory and find the right file. Probably you'll need to search through all the .INF files for a unique string associated with the device.
  2. Backup the file.
  3. Open the .INF file with a text editor, find the [Strings] section, and change the appropriate string.
  4. In Device Manager, uninstall and reinstall the device.

Hopefully, your application is only looking for this string. If it's looking for the unique hardware ID (you'll see this in the .INF file as a bus and hardware id number like bus\VID_nnnn&PID_xxxx) then this technique won't work.