My registry has an additional
Winachsf0 in HKEYLOCALMACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
So I get usb-A7004IbLA COM1 instead of usb-A7004IbLA COM4
Possible fix:
# 2010-02-21 tested on Win2K and Win7
proc RawListSerialPorts {} {
}
set k1 {HKEYLOCALMACHINE\HARDWARE\DEVICEMAP\SERIALCOMM}
set k2 {HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services\Serenum\Enum}
set i -1
set n [registry get $k2 Count]
set result {}
foreach v [registry values $k1 Device] {
if {[incr i] >= $n} break
set desc [registry get $k2 $i]
if {} $desc - serial]} {
lappend result usb-$serial [registry get $k1 $v]
}
}
return $result
