在 Windows(至少 8 和 10)下,当将智能卡插入 PC/SC 智能卡读卡器时,操作系统中的某些东西通常会00 A4
向智能卡发出选择命令(以 开头的 C-APDU),作为扫描自动登录证书的一部分。
如何避免这种扫描,而不禁用负责 PC/SC 的 SCardSvr 服务,以便 SCardTransmit 等仍然可用?当智能卡无法处理 Select 命令并变得无法操作时(由于某种原因,例如处于调试模式),这种扫描可能是一个问题。
我知道在 gpedit.msc、计算机配置、管理模板、Windows 组件、智能卡、设置下启用即插即用智能卡服务到已禁用避免将智能卡识别为即插即用设备。但它不会禁用上述扫描。
答案1
停止扫描的唯一方法是禁用设备或停止所有智能卡服务。
启动/停止智能卡系统服务
对于系统服务,有三个与智能卡相关的服务。主要服务是SCardSvr
,但第二个服务是ScDeviceEnum
或智能卡设备枚举服务。在我的计算机上,两者的启动类型都是手动,所以我假设你的也是(最好检查一下)。
禁用第二项服务可能就足够了,请按照以下步骤操作:
sc config ScDeviceEnum start= disabled
sc stop ScDeviceEnum
注意 后面的空白start=
。启用操作如下:
sc config ScDeviceEnum start= demand
您可以.bat
使用这些命令创建两个文件,以禁用和启用服务(一个或两个)。还可以为这两个文件创建桌面快捷方式以便快速执行。我真的不知道,希望不需要重新启动。
启动/停止智能卡设备
您可以使用 Microsoft 实用程序 Windows 设备控制台 (Devcon.exe),从github下载 DevCon 安装程序 (单击“发布”),以启用和禁用驱动程序。
要查看使用 Devcon 的示例,请参阅 ss64.com。
禁用和启用设备的命令是:
devcon.exe disable "name of smart card device"
devcon.exe enable "name of smart card device"
智能卡设备的名称可以在设备管理中查看。
前面说过,这两个命令可以存储在两个.bat
文件中。
为了测试,请首先在提升的命令提示符中尝试所有命令。
答案2
我也遇到了同样的问题。使用管理控制台
- 计算机配置 ->
- 管理模板 ->
- Windows 组件 ->
- 智能卡 ->
- 启用即插即用智能卡服务
- 并将其设置为“禁用”没有帮助。
所以我禁用了列表中的所有服务(我的意思是Windows 组件 -> 智能卡)。这是一个解决方案,此后 Windows 不会向卡发送任何 APDU。