Я только что обнаружил, что следующий код C # WMI, кажется, делает эту работу. Но надежно ли это?
string deviceid = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher ( "Select * from WIN32_SerialPort" );
foreach ( ManagementObject port in searcher.Get () )
{
string name = port.GetPropertyValue ("Name" ) as string;
string provider = port.GetPropertyValue ( "ProviderType" ) as string;
if ( provider == null )
{
deviceid = port.GetPropertyValue ( "DeviceId" ) as string;
}
}