如何从我的应用程序的证书存储中删除证书?
How can I remove a certificate from my app's certificate store?
我有 Windows Store/Phone 必须存储证书的通用应用程序。我可以毫不费力地将证书加载到应用程序的 CertificateStore 中并使用它们。但是在删除它们时我遇到了麻烦。
例如,以下代码非常适合在 Windows 存储环境中查找我的证书:
async Task<Certificate> FindMyCert()
{
var query = new CertificateQuery();
query.FriendlyName = "mytestcert";
var certificates = await CertificateStores.FindAllAsync(query);
if (certificates.Count != 1)
{
return null;
}
return certificates[0];
}
现在,假设我想从商店中删除该证书。我所知道的唯一 "Delete" 是 CertificateStore 对象。所以我需要获取证书存储然后执行删除:
var s = CertificateStores.GetStoreByName("MY");
if (s != null)
s.Delete(c);
Assert.IsNull(await FindMyCert());
只有一个问题。但是,如果您查看 GetStoreName1 的文档,它说证书存储的名称不能是 "MY".
具有讽刺意味的是,这有时有效,有时却无效。我猜想有一种公认的方法可以做一些事情,比如从商店中删除证书。但是我一直没弄明白。
非常感谢!
我们最近遇到了同样的问题,并就该案例开了一个支持票。根据 MS 的说法,这在 Windows Phone 8.1 中是不可能的,对不起。它应该在 Windows 10 中得到支持。
我有 Windows Store/Phone 必须存储证书的通用应用程序。我可以毫不费力地将证书加载到应用程序的 CertificateStore 中并使用它们。但是在删除它们时我遇到了麻烦。
例如,以下代码非常适合在 Windows 存储环境中查找我的证书:
async Task<Certificate> FindMyCert()
{
var query = new CertificateQuery();
query.FriendlyName = "mytestcert";
var certificates = await CertificateStores.FindAllAsync(query);
if (certificates.Count != 1)
{
return null;
}
return certificates[0];
}
现在,假设我想从商店中删除该证书。我所知道的唯一 "Delete" 是 CertificateStore 对象。所以我需要获取证书存储然后执行删除:
var s = CertificateStores.GetStoreByName("MY");
if (s != null)
s.Delete(c);
Assert.IsNull(await FindMyCert());
只有一个问题。但是,如果您查看 GetStoreName1 的文档,它说证书存储的名称不能是 "MY".
具有讽刺意味的是,这有时有效,有时却无效。我猜想有一种公认的方法可以做一些事情,比如从商店中删除证书。但是我一直没弄明白。
非常感谢!
我们最近遇到了同样的问题,并就该案例开了一个支持票。根据 MS 的说法,这在 Windows Phone 8.1 中是不可能的,对不起。它应该在 Windows 10 中得到支持。