正如其他人所建议的,您可以使用WMI。您可以在CodeProject中找到一个示例
try{ ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\WMI", "SELECt * FROM MSSerial_PortName"); foreach (ManagementObject queryObj in searcher.Get()) { Console.WriteLine("-----------------------------------"); Console.WriteLine("MSSerial_PortName instance"); Console.WriteLine("-----------------------------------"); Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]); Console.WriteLine("-----------------------------------"); Console.WriteLine("MSSerial_PortName instance"); Console.WriteLine("-----------------------------------"); Console.WriteLine("PortName: {0}", queryObj["PortName"]); //If the serial port's instance name contains USB //it must be a USB to serial device if (queryObj["InstanceName"].ToString().Contains("USB")) { Console.WriteLine(queryObj["PortName"] + " is a USB to SERIAL adapter/converter"); } }}catch (ManagementException e){ Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);} framework v1.1 AFAIK不允许您执行此操作。
在2.0中有一个静态函数
SerialPort.GetPortNames()



