我在 VirtualBox 下运行 Windows 7。Windows 7 包含一个需要智能卡才能运行的应用程序。
主机系统有一个智能卡读卡器,在 Linux(本机操作系统)下,我可以看到读卡器和卡。
在 VirtualBox 中,如果智能卡读卡器中有卡,我可以将读卡器作为 USB 设备连接。这位于设备 => USB 设备 => 通用 EMV 智能卡读卡器下。然后 Windows 7 可以看到智能卡读卡器,但永远看不到智能卡。
以下是“certutil -scinfo”的 Windows 输出:
The Microsoft Smart Card Resource Manager is running.
Current reader/card status: Readers: 1
0: Generic EMV Smartcard Reader 0
--- Reader: Generic EMV Smartcard Reader 0
--- Status: SCARD_STATE_EMPTY
--- Status: No card.
--- Card:
=======================================================
Analyzing card in reader: Generic EMV Smartcard Reader 0
--------------===========================--------------
Done.
CertUtil: -SCInfo command completed successfully.
我尝试过重启 Windows、启动和停止智能卡服务、移除并重新插入智能卡。但这些方法都不起作用,而且我在网上也没有找到其他有用的方法。
更新
重新启动主机(Linux)并重新启动VirtualBox。没有效果。
我还卸载了 MS 驱动程序(Micorsoft Usbccid 智能卡读卡器 (WUDF)。然后我“拔下”了 USB 读卡器并将其“重新插入”。Windows 重新安装了相同的驱动程序,但还是以相同的方式失败了。
更新 2
有时卸载 Windows 驱动程序会有所帮助。但似乎仍需要一系列随机事件才能使其正常工作。
答案1
因此,在将读卡器从虚拟机中“插入”和“拔出”并移除和重新插入卡之后,它终于可以正常工作了。不知道发生了什么变化或为什么,但似乎对硬件进行“鸡舞”最终会让 Windows 看到读卡器和卡。
更新
仍然有严重的问题。似乎在插拔之间,卸载 Windows 驱动程序也有助于“摇动”以消除任何错误。但它仍然似乎本质上是随机的。
谈论糟糕的用户体验。
答案2
任何虚拟环境中的客户操作系统都不允许查看现有端口和插入的设备。您将不断插入和拔出,但这可能没有任何结果。
好了,如果你还有问题,试试这个第三方软件吧,它可能会是个好帮手。http://www.flexihub.com/access-remote-emv-smart-cardreader.html
我今天已经尝试使用 VirtualBox - 对我来说是可行的,但我使用 EMV 读卡器,并且我的主机操作系统是 Mac,如果这很重要的话。GuestOS(Windows)将设备(读卡器)视为直接插入。
答案3
我的经验是,Windows 客户机似乎没有收到智能卡插入的通知。我有两个技巧可以解决这个问题:
- 使用外部 USB 读卡器时,在断开连接的情况下将智能卡插入读卡器,然后插入读卡器,Windows USB 子系统将正确触发“新设备发现”,并且所有内容都会显示出来
- 当我使用主机上的内部读卡器时,插入智能卡,转到客户机 Windows 设备管理器,强制“扫描硬件更改”,然后智能卡设备就会显示出来
我不需要在客户机中安装/卸载智能卡读卡器设备。我也不必总是重新扫描。
我正在寻找一种简化重新扫描的方法,也许devcon rescan
作为管理员可以做到这一点(然后快速获取 devcon.exe 的方法变得有趣)。