我想使用WMI获取系统上所有PCSC智能卡读卡器的DeviceID和服务。它们都是通过USB连接的,因此我在WMI注册表中查询所有Win32_PnPEntity。但是我不知道如何确定哪些设备是“读卡器”。这是我已经拥有的:

ManagementObjectSearcher mos =
new ManagementObjectSearcher(@"\root\cimv2", @"Select * From Win32_PnPEntity");

ManagementObjectCollection mob = mos.Get();

foreach (ManagementObject mo in mob)
{
    Console.WriteLine("DeviceID: " + mo["DeviceID"].ToString());
    Console.WriteLine("Service: " + mo["Service"].ToString());
}


我不能只过滤设备名称,读者的品牌/型号不同,也没有共同的分母。在设备管理器中,它们都被分组在“智能卡读卡器”下,因此必须有另一种方法。

最佳答案

我在MSDN上找到了设备类GUID:
{50dd5230-ba8a-11d1-bf5d-0000f805f530}


Smart Card Readers
Class = SmartCardReader
ClassGuid = {50dd5230-ba8a-11d1-bf5d-0000f805f530}
This class includes smart card readers.



所以最后我想到了这个:

ManagementObjectSearcher mos = new ManagementObjectSearcher(@"\root\cimv2",
@"SELECT* FROM Win32_PnPEntity WHERE ClassGuid = '{50DD5230-BA8A-11D1-BF5D-0000F805F530}'");


这似乎给了我我想要的:)

关于c# - 如何通过WMI将所有智能卡读卡器安装到系统上?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10812729/

10-10 21:54