删除根证书时删除Windows警告

时间:2015-02-27 13:10:19

标签: c# certificate x509certificate

我们想要在新安装我们的应用程序时删除一些自己的证书。代码有效,但用户知道正在删除某些内容。有没有办法在没有显示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. ");
            }

Warning Message

2 个答案:

答案 0 :(得分:0)

你不能。当您在当前用户上下文中管理受信任的根CA时,此对话框在CertDeleteCertificateFromStoreCertDeleteCertificateFromStore函数中进行硬编码。这条消息是不可避免的。

答案 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. ");
}