2015-04-28 50 views
0

我想从另一个应用程序访问我的应用程序的证书存储区。我已在package.appmanifest文件中启用"sharedusercertificates"如何访问Windows Phone 8.1中的应用程序证书存储运行时应用程序

Windows.Storage.StorageFile selectedCertFile = await folder.GetFileAsync(fileName); 
IBuffer buffer = await FileIO.ReadBufferAsync(selectedCertFile); 

string certificateData = CryptographicBuffer.EncodeToBase64String(buffer); 
string password = "password"; 

await CertificateEnrollmentManager.ImportPfxDataAsync(
certificateData, 
password, 
ExportOption.NotExportable, 
KeyProtectionLevel.ConsentWithPassword, 
InstallOptions.None, 
selectedCertFile.DisplayName); 

在自己的应用程序,我可以列出已安装的证书没有问题:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var task = CertificateStores.FindAllAsync(); 
    task.AsTask().Wait(); 
    var certlist = task.GetResults(); 
    Debug.WriteLine("Cert count: {0}", certlist.Count); 
    LoadCertList(certlist); 
} 

private void LoadCertList(IReadOnlyList<Certificate> certificateList) 
{ 
    listbox1.Items.Clear(); 

    foreach (Certificate cert in certificateList) 
    { 
     listbox1.Items.Add(cert.Subject); 
    } 
} 

如果我试图访问这些从其他应用程序,这将不会列出。 在Windows Phone 8.1的邮件客户端设置中,安装的证书也丢失了。列出了定期安装而非编程的证书。

有没有办法将我的自定义证书安装到系统的证书存储中?所以它可以用于其他应用程序。

我一直在网上搜索了几天,但我没有找到解决方案。

因此,应该有可能。

“的sharedUserCertificates能力授予应用程序容器读取包含在所有用户存储和智能卡可信根存储访问的证书和密钥。” https://msdn.microsoft.com/en-us/library/windows/apps/hh465025.aspx

我错过了什么?帮助将不胜感激。

迪诺

回答

0

如果你想有一个证书,成为其他应用程序访问,你需要使用CertificateEnrollmentManager.UserCertificateEnrollmentManager.ImportPfxDataAsync而不是CertificateEnrollmentManager.ImportPfxDataAsync报名参加吧。

请注意,除非共享证书已过期(使用InstallOptions.DeleteExpired作为ImportPfxDataAsync中的参数),否则无法删除共享证书。

此外,您以这种方式共享的证书越多,对证书存储的查询就越慢。

相关问题