C# 从ManagementObjectSearcher Win32_pPentity获取提供程序

C# 从ManagementObjectSearcher Win32_pPentity获取提供程序,c#,.net,serial-port,usb,win32com,C#,.net,Serial Port,Usb,Win32com,我正在搜索我的USB到串行转换器。我有两个目标: 获取USB端口号 获取提供者 下面是我的设备管理器的屏幕截图 现在,我的座右铭是识别由ATEN提供的USB到串行网桥,但是我不是专门寻找ATEN的东西,只是我需要知道如何查询ManagementObject 因为如果我查找标题,对于某些系统,它是USB到串行网桥,对于某些系统,它是USB到串行通信端口,对于其他一些系统,它可能会变成其他东西。永不改变的是提供程序-“ATEN” 以下是我的代码: 现在我在下面做了一些事情,从**标题**获取/提取

我正在搜索我的USB到串行转换器。我有两个目标:

  • 获取USB端口号
  • 获取提供者
  • 下面是我的设备管理器的屏幕截图

    现在,我的座右铭是识别由
    ATEN
    提供的USB到串行网桥,但是我不是专门寻找ATEN的东西,只是我需要知道如何查询
    ManagementObject

    因为如果我查找
    标题
    ,对于某些系统,它是
    USB到串行网桥
    ,对于某些系统,它是
    USB到串行通信端口
    ,对于其他一些系统,它可能会变成其他东西。永不改变的是
    提供程序-“ATEN”

    以下是我的代码:

    现在我在下面做了一些事情,从**标题**获取/提取数据

    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity WHERE Caption like '%ATEN USB to Serial Bridge%'"))
    {
        foreach (ManagementObject queryObj in searcher.Get())
        {
            foreach (PropertyData prop in queryObj.Properties)
            {
                listBox1.Items.Add(String.Format("{0}: {1}", prop.Name, prop.Value));
            }
    
            string s = queryObj["Caption"].ToString();
    
            // Here under i play with the string `s` to get the `CCOM21`
            int start = s.IndexOf("(");
            int end = s.IndexOf(")");
            result = s.Substring(start, end - start);
            result = result.Replace("(", "");
    
            list.Items.Add(result);
        }
    }
    
    我知道这不是正确的方法,但我知道如何通过查询ManagementObject获得
    COM21
    端口和
    Provider-ATEN
    。或者有没有其他直接的方法可以做到这一点