尝试使用 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" />
我能够使用 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" />