Come segue sono in grado di ottenere nomi porta com USB collegati a macchina win7OS a 32 bit, dato pid e vid, ma quando è in esecuzione in x64 si blocca nella riga seguente:Identifica la porta COM usando VID e PID per il dispositivo USB collegato a x64
comports.Add((string)rk6.GetValue("PortName"));
Questo è il mio codice
static List<string> ComPortNames(String VID, String PID)
{
String pattern = String.Format("^VID_{0}.PID_{1}", VID, PID);
Regex _rx = new Regex(pattern, RegexOptions.IgnoreCase);
List<string> comports = new List<string>();
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;
}
codice vero e ottenere here, così come ottenere i nomi delle porte COM in x64, qualsiasi suggerimento?
Questo è inimmaginabile, almeno è necessaria una traccia dello stack. –
questo metodo restituisce l'elenco di porte com che collegano il nostro dispositivo ex: COM3, COM4 ecc., Problema non funziona su x64 – UdayaLakmal
Dal momento che potrebbe essere rilevante per gli altri che vengono qui: La semplice ragione è probabilmente dovuta a 'rk6' essendo 'null' dato che' 'Parametri dispositivo '' La chiave non esiste su ogni nodo del dispositivo e come tale non è correlata alla versione a 32 bit o 64 bit di OS – NiKiZe