Определить COM-порт с помощью VID и PID для USB-устройства, подключенного к x64.

Как показано ниже, я могу получить имена портов usb com, подключенные к 32-битной машине с ОС win7OS, по заданному pid и vid, но при работе в x64 он застрял в следующей строке:

comports.Add((string)rk6.GetValue("PortName"));

Это мой код

static List ComPortNames(String VID, String PID)
    {
        String pattern = String.Format("^VID_{0}.PID_{1}", VID, PID);
        Regex _rx = new Regex(pattern, RegexOptions.IgnoreCase);
        List comports = new List();

        RegistryKey rk1 = Registry.LocalMachine;
        RegistryKey rk2 = rk1.OpenSubKey("SYSTEM\\CurrentControlSet\\Enum");

        foreach (String s3 in rk2.GetSubKeyNames())
        {

            RegistryKey rk3 = rk2.OpenSubKey(s3);
            foreach (String s in rk3.GetSubKeyNames())
            {
                if (_rx.Match(s).Success)
                {
                    RegistryKey rk4 = rk3.OpenSubKey(s);
                    foreach (String s2 in rk4.GetSubKeyNames())
                    {
                        RegistryKey rk5 = rk4.OpenSubKey(s2);
                        RegistryKey rk6 = rk5.OpenSubKey("Device Parameters");
                        comports.Add((string)rk6.GetValue("PortName"));
                    }
                }
            }
        }
        return comports;
    }

фактический код получить здесь , Итак, как получить имена COM-портов в x64, есть предложения?

6
задан UdayaLakmal 5 June 2012 в 10:20
поделиться