我使用WinSCard列出所有读者,这给了我这样一个列表:
ASK RDR4x7 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 1
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 2
这很好,但我不知道哪个名字属于哪个读卡器。
这些名字是从哪里来的?它们是如何构造的?
到目前为止,我发现的是:在注册表中,有一个HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
键。在此键下,您可以找到与读卡器的“服务”匹配的子键(我通过查询WMI注册表找到了该子键)。例如:SCM Microsystems Inc. SCR3320 USB Smart Card Reader
阅读器的服务是SCR3XX2K
。
这个子键(SCR3XX2K
)有另一个子项Enum
,它具有多个有趣的值:
Count
:DWORD,连接的读者数量0
,1
,2
:STRING,硬件设备ID我猜这些是附加到“友好名称”的数字,但我不知道名称字符串是如何构造的。我需要这个映射硬件设备ID(我通过WMI)到他们友好的名字。
那么,用于为智能卡读取器创建“友好名称”的模式是什么,这些值从何而来?
发布于 2012-05-30 09:36:54
它们是以下三个属性的结合:
SCARD_ATTR_VENDOR_NAME
SCARD_ATTR_VENDOR_IFD_TYPE
SCARD_ATTR_DEVICE_UNIT
TechNet文章智能卡事件在“智能卡读取器名称”一节中记录了这一点。
SCARD_???
属性是通过SCardGetAttrib
函数请求的。
SCARD_ATTR_DEVICE_SYSTEM_NAME
属性返回friendly name
作为列出读取器时得到的内容。
SmartCard读取器列表存在于HKLM\SOFTWARE\Microsoft\Cryptography\Calais\Readers
下的注册表中。读取器是由SCR驱动程序的INF文件添加到此列表中的,因此在驱动程序安装期间也是如此。
设备和读取器之间的链接可以在SmartCardReader类{50DD5230-BA8A-11D1-BF5D-0000F805F530}
中HKLM\SYSTEM\CurrentControlSet\Control\Class\{50DD5230-BA8A-11D1-BF5D-0000F805F530}
下找到。
https://stackoverflow.com/questions/10813041
复制相似问题