As far as I know there is no 100% certain way to know what ports are available. The reason for this is that no all applications keep the port open when it is in use, there for you may have a connected device with a closed port. The code below will show you how to find all serial ports on your system, under the for each section, I showed how to check if the port is open, but like I stated this will not always be 100%
Imports System
Imports System.IO.Ports
Module SerialPortExample
Sub Main()
' Get a list of serial port names.
Dim ports As String() = SerialPort.GetPortNames()
Dim port As String
dim x as serialport
For Each port In ports
x = port
if x.isopen then
'whatever
end if
Next port
End Sub
End Module