在我们的环境中,我们需要在Windows 10下使用虚拟智能卡进行VPN身份验证,我们需要为用户创建一个小工具来更改虚拟智能卡的引脚。
我已经下载了Smart card sample,了解如何创建虚拟智能卡并更改它的引脚。但是我在运行代码时遇到了麻烦。
我的第一个问题是,我得到了一个'请求要求提升'调用方法RequestVirtualSmartCardCreationAsync
时出现异常。我使用项目中定义的默认参数。我尝试以管理员身份登录,Visual Studio也以管理员身份启动。我还确保了共享用户证书'选项在appxmanifest中的Capabilities下检查。
接下来,我尝试使用tpmsvcmgr.exe命令行工具创建虚拟智能卡。命令行是:tpmvscmgr.exe create /name myVSC /pin prompt /adminkey default /generate
我确保通过在智能卡读卡器下的设备管理器中找到虚拟智能卡,成功生成了虚拟智能卡
接下来,我在检查SmartCardReaderDeviceId
是否为空之前,在ValidateTPMSmartCard()
方法中设置string
来修改示例中的代码。
我为此变量尝试了不同的值,但在代码执行期间,GetSmartCard()
方法中的SmartCardReader.FromIdAsync
方法仍然遇到异常。以下是我使用相应的例外情况尝试的值:
//NO_SUCH_DEVICE_INTERFACE
SmartCardReaderDeviceId = "ROOT\\SMARTCARDREADER\\0000";
//NO_SUCH_DEVICE_INTERFACE
SmartCardReaderDeviceId = "\\ROOT\\SMARTCARDREADER\\0000";
//NO_SUCH_DEVICE_INTERFACE
SmartCardReaderDeviceId = "\\\\?\\ROOT#SMARTCARDREADER#0000";
//REQUEST_NOT_SUPPORTED
SmartCardReaderDeviceId = "\\\\?\\ROOT#SMARTCARDREADER#0000#{50dd5230-ba8a-11d1-bf5d-0000f805f530}";
//NO_SUCH_DEVICE_INTERFACE
SmartCardReaderDeviceId = "50dd5230-ba8a-11d1-bf5d-0000f805f530}";
有没有人知道如何让这个SDK示例工作或如何以编程方式更改虚拟智能卡的PIN?
我在Surface Pro 4上使用Visual Studio Enterprise 2015在Windows 10.0.10586下运行此项目。