Ho cercato di fare qualcosa di simile...ma dalle mie ricerche credo di aver capito che le porte usb sono COM emulate e con 'My.Computer.Ports.SerialPortNames.Count' non sono viste...e bisogna usare delle API o 'System.Management.ecc'...troppa roba per me che programmo per hobby...
Comunque, io avevo bisogno di verificare la connessione usb di una chiavetta, quindi, vista come disco esterno ed ho risolto con un timer che verifica i drives e se ne trova uno con il nome impostato avvia il programma, più o meno così:
Private Sub tmr_tick() Handles Timer1.Tick
For a = 0 To My.Computer.FileSystem.Drives.Count - 1
If My.Computer.FileSystem.Drives(a).DriveType.ToString = "Removable" Then
If My.Computer.FileSystem.Drives(a).VolumeLabel = "nome chiavetta" Then
Timer1.Stop()
'avvio
Else
End If
End If
Next
End Sub
ciao