WMIを使用して、システム上のすべてのPCSCスマートカードリーダーのDeviceIDとサービスを取得したいと思います。これらはすべてUSB経由で接続されているため、すべてWin32_PnPEntity
のをWMIレジストリに照会します。しかし、どのデバイスが「カードリーダー」であるかを判断する方法がわかりません。これが私がすでに持っているものです:
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());
}
デバイス名だけでフィルタリングすることはできません。さまざまなブランド/モデルのリーダーがあり、共通の分母はありません。デバイスマネージャでは、それらはすべて「スマートカードリーダー」の下にグループ化されているため、(別の)方法が必要です。