Переберите все COM-порты и попробуйте получить идентификатор для каждого из них. Ниже приведен минимальный пример, который следует расширить для лучшей проверки ошибок и т. Д.
string[] sPorts = SerialPort.GetPortNames();
foreach(string port in sPorts)
{
var serialPort = new SerialPort();
serialPort.PortName = port;
serialPort.Open();
serialPort.WriteLine("ATI"); // this will ask the port to issue an ident string which you can match against
var message = Console.ReadLine(); // read the response
}
Вы также можете использовать WMI с Win32_SerialPort и Win32_PnPEntity. Я не пробовал, чтобы увидеть, какую информацию он возвращает.