Список всех сертификатов смарт-карт недостаточно
Привет,
У меня есть приложение, запущенное на экране входа в систему windows как self reset password, которое позволит пользователю с помощью смарт-карты сбросить пароль. но то, что я получаю, когда открытый список сертификатов просто показывает некоторые из сертификатов (не все сертификаты в смарт-карте)
Я использую этот код для перечисления сертификатов
if (!NativeMethods.CryptAcquireContext(ref hProv, null, providerName, NativeMethods.PROV_RSA_FULL, NativeMethods.CRYPT_VERIFYCONTEXT)) throw new Win32Exception(Marshal.GetLastWin32Error()); uint pcbData = 0; if (!NativeMethods.CryptGetProvParam(hProv, NativeMethods.PP_USER_CERTSTORE, null, ref pcbData, 0)) throw new Win32Exception(Marshal.GetLastWin32Error()); X509Certificate2 cert; X509Certificate2Collection certificate2Collection; X509Certificate2Collection certlist = new X509Certificate2Collection(); List<X509Certificate2> certTempList = GetCertificates(providerName); foreach (var cer in certTempList) { certlist.Add(cer); } certificate2Collection = X509Certificate2UI.SelectFromCollection(certlist, title, description, X509SelectionFlag.SingleSelection);
но в списке не показаны все сертификаты в смарт-карте (у меня есть 5 сертификатов, но просто покажите 3 в качестве примера)
Кто-нибудь может мне помочь?
Спасибо
/ Нгуен
Что я уже пробовал:
<pre lang="C#">if (!NativeMethods.CryptAcquireContext(ref hProv, null, providerName, NativeMethods.PROV_RSA_FULL, NativeMethods.CRYPT_VERIFYCONTEXT)) throw new Win32Exception(Marshal.GetLastWin32Error()); uint pcbData = 0; if (!NativeMethods.CryptGetProvParam(hProv, NativeMethods.PP_USER_CERTSTORE, null, ref pcbData, 0)) throw new Win32Exception(Marshal.GetLastWin32Error()); X509Certificate2 cert; X509Certificate2Collection certificate2Collection; X509Certificate2Collection certlist = new X509Certificate2Collection(); List<X509Certificate2> certTempList = GetCertificates(providerName); foreach (var cer in certTempList) { certlist.Add(cer); } certificate2Collection = X509Certificate2UI.SelectFromCollection(certlist, title, description, X509SelectionFlag.SingleSelection); </pre>