C# 在Windows Mobile 6上获取存储在智能卡上的证书

C# 在Windows Mobile 6上获取存储在智能卡上的证书,c#,smartcard,windows-mobile-6,C#,Smartcard,Windows Mobile 6,我为PDA开发了一个Windows Mobile 6应用程序(使用Compact Framework 3.5)。我的PDA有一个智能读卡器。当插入一张卡时,我会得到里面存储的所有证书。我已经在桌面应用程序中成功地做到了这一点,但是当我在手机上尝试相同的代码时,我没有找到证书!所以,我尝试了不同的解决方案,但没有任何效果 这是我的代码: X509Store test = new X509Store(StoreName.Root, StoreLocation.LocalMachine); test.

我为PDA开发了一个Windows Mobile 6应用程序(使用Compact Framework 3.5)。我的PDA有一个智能读卡器。当插入一张卡时,我会得到里面存储的所有证书。我已经在桌面应用程序中成功地做到了这一点,但是当我在手机上尝试相同的代码时,我没有找到证书!所以,我尝试了不同的解决方案,但没有任何效果

这是我的代码:

X509Store test = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
test.Open(OpenFlags.ReadOnly);

if (test.Certificates.Count > 0)
{
     foreach (X509Certificate2 cert in test.Certificates)
     {
          MessageBox.Show("Certificate: " + cert.ToString());
     }
}

你有什么想法吗?

你有例外吗?如果只看到空存储,则可能是从智能卡到windows证书存储的证书传播存在问题

在桌面windows系统中,有一个服务证书传播(CertPropSvc),该服务

将用户证书和根证书从智能卡复制到 当前用户的证书存储将检测何时使用智能卡 插入智能卡读卡器,并在需要时安装智能卡 卡即插即用微型驱动程序

我不知道Windows Mobile 6或任何移动Windows操作系统中是否存在此类服务

我建议你进行研究(我在谷歌上2分钟的努力没有带来任何积极的结果)

或者您可以尝试使用PKCS#11库访问和使用存储在智能卡上的证书和私钥。智能卡供应商通常分发带有智能卡驱动程序的PKCS#11库

有一些开源.NET项目使您能够与PKCS#11库(通常用C编写)进行通信,如
或者。

你能详细说明你的代码是如何“不工作”的吗?你在期待什么,到底发生了什么?如果您遇到异常,请发布发生异常的行和异常详细信息。没有异常,也没有错误。我的代码表明我的智能卡上没有存储任何证书。是否确实要在LocalMachine中打开根存储?我认为你永远也找不到来自智能卡的证书。我将尝试打开
X509Store test=newx509store(StoreName.My,StoreLocation.CurrentUser)。感谢您对Pepo的回复。遗憾的是,我已经尝试了这些参数,结果是一样的。非常感谢您的解释。但经过几次测试,似乎“PKCS11Interop”和“NCryptoki”库在Windows Mobile 6上不起作用。。。