我们想要在新安装我们的应用程序时删除一些自己的证书。代码有效,但用户知道正在删除某些内容。有没有办法在没有显示Windows框的情况下删除证书?下面是我正在使用的代码和我所指的消息。我感谢任何帮助!!
try
{
X509Store rootStore = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
rootStore.Open(OpenFlags.ReadWrite | OpenFlags.IncludeArchived);
X509Certificate2Collection rootCol = rootStore.Certificates.Find(X509FindType.FindByIssuerName, "United Systems CA", false);
foreach (var cert in rootCol)
{
rootStore.Remove(cert);
}
rootStore.Close();
}
catch
{
uis.ShowMessageBox("Existing Current User Root Certificates could not be deleted. Please contact support. ");
}
答案 0 :(得分:0)
你不能。当您在当前用户上下文中管理受信任的根CA时,此对话框在CertDeleteCertificateFromStore
和CertDeleteCertificateFromStore
函数中进行硬编码。这条消息是不可避免的。
答案 1 :(得分:0)
我在Windows 7上尝试了使用管理员权限的代码(稍加修改)。没有显示任何窗口。也许这是关键。没有管理员权限我没有尝试。
以下是代码:
try
{
X509Store rootStore = new X509Store(StoreName.Root, StoreLocation.CurrentUser);
rootStore.Open(OpenFlags.MaxAllowed);
X509Certificate2Collection rootCol = rootStore.Certificates.Find(X509FindType.FindByThumbprint, "b5 61 eb ea a4 de e4 25 4b 69 1a 98 a5 57 47 c2 34 c7 d9 71", false);
foreach (var cert in rootCol)
{
rootStore.Remove(cert);
}
rootStore.Close();
}
catch
{
Console.Write("Existing Current User Root Certificates could not be deleted. Please contact support. ");
}