尝试使用 c# 和 x509 删除证书时出错

Error trying to remove a certificate using c# and x509

我能够使用 C# 在 ListView 中加载我的 windows 机器上可用的证书,通过选择证书,我添加了使用以下代码删除所选证书的功能:

    CertificateUtility util = new CertificateUtility();
    util.StoreName = Convert.ToString(this.drpdwnStores.SelectedValue);
    X509Store x509Store = new X509Store(util.StoreName, StoreLocation.LocalMachine);
    x509Store.Open(OpenFlags.OpenExistingOnly);
    X509Certificate2Collection certColl = x509Store.Certificates.Find(
         X509FindType.FindBySerialNumber, "mycert", true);
    X509Certificate2 deletethis = certColl[0];

    if (deletethis != null) {
     x509Store.Remove(deletethis);
    }

这一行 x509Store.Remove(deletethis); 给我 拒绝访问.

我是这台机器的管理员

有人知道如何解决这个问题吗?

我必须 运行 Visual Studio 作为管理员才能调试代码,还添加了@vcsjones 建议,最终代码如下:

X509Store x509Store = new X509Store("My", StoreLocation.LocalMachine);
x509Store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
X509Certificate2Collection certColl = x509Store.Certificates.Find( X509FindType.FindBySerialNumber, "serial", true);
if(certColl.Count > 0) {
  X509Certificate2 deletethis = certColl[0];
  if (deletethis != null)
   {
    x509Store.Remove(deletethis);
   }
}

我还必须添加清单文件并添加以下行:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />