So I had the same problem. I'm using devices with the FTDI usb to serial chip, and various other USB to serial converters. I had to recently reinstall windows due to a problem with winlogon.exe consuming 100% CPU (never found a solution, but I did correlate it with my computer no longer synchronizing files with the domain controller). After the reinstall, plugging in my FTDI device sent it to COM17, and if I went into its properties in device manager to change the COM port, everything from 3 to 17 said "in use".
I tried the trick of forcing the device to use these "occupied" ports, which certainly clears the "in use" flag but does not actually delete these non-existent ports. Using
portmon, all these ports would still show up. What's more, I had two COM3's, one of which was my FTDI device (which, in device manager, showed up as COM2) and no COM2. The same list of COM ports could be replicated in a .NET program I'm writing to communicate with serial ports (which just asks windows for all serial ports available to make a list). Interestingly, a call to this function normally shows the COM ports in numerical order, but I had a second COM1 and COM3 after the list of COM1 through COM17.
Using FTDI's FTClean utility, which I think is supposed to clear up this issue of ever increasing COM port numbers, didn't do anything. I ran it several times, rebooted, etc., to no avail.
If you go to the portmon page (linked above), they explain that portmon goes to the registry to find COM ports. So I went to the registry key they mention (HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm) and deleted everything that wasn't COM1 (mapped to \Device\Serial0) and COM3 (mapped to \Device\VCP0, which is the FTDI device). I didn't have to reboot or log out and log back in; changes took effect immediately, and this removed all the fake ports (they were all mapped to \Device|vcomxx, where xx was a number).
While I'm at it, if you want to learn a lot about serial port programming in .NET, check out
this link. How about that nightmare of COM ports disappearing forever in windows Vista?