我试图以编程方式检测USB读卡器的存在,它将自己标识为键盘设备。在设备管理器中,它如下所示:
ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(@"Select * from Win32_Keyboard");
ManagementObjectCollection keyboards = managementObjectSearcher.Get();
foreach (ManagementBaseObject keyboard in keyboards)
{
Console.WriteLine();
foreach (var property in keyboard.Properties)
{
Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
}
}
与设备管理器中一样,输出仅因设备ID不同而不同:
Availability:
Caption: Enhanced (101- or 102-key)
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_Keyboard
Description: USB Input Device
DeviceID: USB\VID_04B3&PID_3025\5&DC4A972&0&3
ErrorCleared:
ErrorDescription:
InstallDate:
IsLocked:
LastErrorCode:
Layout: 00000409
Name: Enhanced (101- or 102-key)
NumberOfFunctionKeys: 12
Password:
PNPDeviceID: USB\VID_04B3&PID_3025\5&DC4A972&0&3
PowerManagementCapabilities:
PowerManagementSupported: False
Status: OK
StatusInfo:
SystemCreationClassName: Win32_ComputerSystem
SystemName: ALEX19
Availability:
Caption: Enhanced (101- or 102-key)
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_Keyboard
Description: USB Input Device
DeviceID: USB\VID_0804&PID_0040\5&DC4A972&0&6
ErrorCleared:
ErrorDescription:
InstallDate:
IsLocked:
LastErrorCode:
Layout: 00000409
Name: Enhanced (101- or 102-key)
NumberOfFunctionKeys: 12
Password:
PNPDeviceID: USB\VID_0804&PID_0040\5&DC4A972&0&6
PowerManagementCapabilities:
PowerManagementSupported: False
Status: OK
StatusInfo:
SystemCreationClassName: Win32_ComputerSystem
SystemName: ALEX19
但是,Windows设置将此设备显示为USB读卡器:
注:此答案
How do I get all the smart card readers on my system via WMI?
SmartCardReader
类,但它不适用于我,读卡器无法识别。