Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取智能卡上的证书_C#_Certificate_X509certificate_Smartcard - Fatal编程技术网

C# 读取智能卡上的证书

C# 读取智能卡上的证书,c#,certificate,x509certificate,smartcard,C#,Certificate,X509certificate,Smartcard,我想使用.NET Api获取智能卡上的证书列表。我知道智能卡上的证书已加载到个人存储中。但是,我想编写一个在用户登录之前运行的程序(我在Windows登录屏幕上添加了一个按钮来打开我的程序)。由于用户未登录,智能卡上的证书不会加载到个人存储中。这就是为什么我不能在这个问题上使用解决方案。我需要编写代码以从智能卡获取所有证书,而不必从个人存储中获取证书 有人能帮我吗 非常感谢! Hai.首先,您可以在某些用户的凭据下运行服务(您通常在运行服务的每个系统的MMC中的服务参数中指定凭据),然后根据驱动

我想使用.NET Api获取智能卡上的证书列表。我知道智能卡上的证书已加载到个人存储中。但是,我想编写一个在用户登录之前运行的程序(我在Windows登录屏幕上添加了一个按钮来打开我的程序)。由于用户未登录,智能卡上的证书不会加载到个人存储中。这就是为什么我不能在这个问题上使用解决方案。我需要编写代码以从智能卡获取所有证书,而不必从个人存储中获取证书

有人能帮我吗

非常感谢!
Hai.

首先,您可以在某些用户的凭据下运行服务(您通常在运行服务的每个系统的MMC中的服务参数中指定凭据),然后根据驱动程序将证书从智能卡映射到Windows证书存储。即,您需要验证此方案是否适用于您的智能卡读卡器

接下来,如果您的智能卡读卡器支持PKCS#11接口(即供应商提供了PKCS#11驱动程序DLL),则您可以通过PKCS#11 API访问智能卡内容


PKCS11API是一组非托管DLL函数,可从C#通过p/Invoke或通过某些第三方库使用

经过大量研究,我找到了一个解决方案

嗨,尤金,谢谢你的回复。我试着使用安全黑盒。下面是我的代码:TElPKCS11CertStorage certStorage=new TElPKCS11CertStorage();certStorage.DLLName=“?”;certStorage.Open();我有一张Gemalto.NET智能卡。我不知道名字是什么。你能帮我吗?贵公司是否提供技术支持?谢谢。@haitranba您必须知道从读卡器和/或卡的供应商处获取的DLL名称。PKCS#11就是这样运作的。是的,提供的支持如上所述,不确定是否有用,但您可以在读卡器中插入智能卡并打开命令提示符,然后运行以下命令:
certutil-scinfo
谢谢!!这正是我要找的!