在我的WinForms应用程序中,我想得到一个连接的USB对象列表,然后获取那些连接的USB设备的模型属性,因为我需要能够告诉用户何时连接了某个USB设备。
任何人都可以通过WMI或其他方式共享一种方法来获取已连接设备的列表并获取这些设备的模型属性吗?我已经使用WMI调整了this question中的一些代码来获取设备信息。下面的代码工作正常,但获得的参数(" DeviceID"," PNPDeviceID"等)在识别人类可理解的设备时根本不是很有用条款,我不知道如何获取设备和打印机中显示的Model属性here。
public static List<USBDeviceInfo> GetUSBDevices(){
List<USBDeviceInfo> devices = new List<USBDeviceInfo>();
ManagementObjectCollection collection;
using (var searcher = new ManagementObjectSearcher(@"Select * From
Win32_USBControllerDevice")) collection = searcher.Get();
foreach (var device in collection)
{
devices.Add(new USBDeviceInfo(
(string)device.GetPropertyValue("DeviceID"),
(string)device.GetPropertyValue("PNPDeviceID"),
(string)device.GetPropertyValue("Description")));
}
collection.Dispose();
return devices;
}
使用班级
public class USBDeviceInfo {
public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
{
this.DeviceID = deviceID;
this.PnpDeviceID = pnpDeviceID;
this.Description = description;
}
public string DeviceID { get; private set; }
public string PnpDeviceID { get; private set; }
public string Description { get; private set; }
}
}
如果我错过了针对我的具体问题的更简单的解决方案,我想发布此帖子。我现在也正在尝试对USB View ala this question进行逆向工程,因为USB视图正以某种方式获取我需要的信息。
我在Visual Studio 2015中使用C#的记录。
答案 0 :(得分:0)
我能够通过解决方案实现我需要的顶级功能;我确定了返回的DeviceID字符串的一部分,这是我为我的应用程序所需的RFID扫描仪品牌所特有的。
我解析了返回的deviceID字符串并检查是否存在该唯一值,并相应地更新了我的应用程序以反映这一点。