如何删除Windows系统证书存储

在Windows操作系统中,证书存储是用于存放数字证书的容器。通常,这些存储用于加密和身份验证。然而,在某些情况下,可能需要删除一个证书存储,尤其是当它不再需要或者包含错误信息时。本文将介绍如何使用命令行工具删除一个证书存储。

要查看和管理证书,可以使用“证书”管理单元。这个工具可以通过Microsoft Management Console (MMC) 访问。以下是如何添加“证书”管理单元到MMC的步骤:

  1. 打开MMC。
  2. 选择“文件”菜单,然后点击“添加/删除管理单元…”。
  3. 在“可用的管理单元”列表中,选择“证书”,然后点击“添加”。
  4. 选择“计算机账户”,然后点击“下一步”。
  5. 选择“本地计算机”,然后点击“完成”。
  6. 点击“确定”关闭添加/删除管理单元窗口。

现在,可以看到“证书”管理单元,并且可以查看和管理计算机上的证书。

创建证书

使用makecert工具,可以创建一个新的证书。makecert通常位于以下路径: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64 。以下是创建一个名为“Test1”的证书并将其存放在名为“Store1”的存储中的命令: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\makecert" -ss Store1 -sr LocalMachine -n CN=Test1 。执行此命令后,可以在“证书(本地计算机)”节点下看到新的存储“Store1”和证书“Test1”。

删除证书

虽然可以通过“证书”管理单元删除单个证书,但无法直接删除存储。即使存储为空,也无法删除。为了解决这个问题,可以使用一个名为deletecertstore的命令行工具来删除存储。

使用代码

这个工具是一个控制台应用程序。可以使用与makecert相同的参数-ss-sr来指定存储和证书的位置。以下是C#代码示例:

if (args.Length == 4) { var store = ""; var location = ""; for (var i = 0; i < 4; i += 2) { if (args[i] == "-ss") store = args[i + 1]; else if (args[i] == "-sr") { location = args[i + 1]; if (!",localmachine,currentuser,".Contains("," + location.ToLower() + ",")) throw new Exception("Parameter sr takes argument LocalMachine or CurrentUser"); } else throw new Exception(string.Format("Parameter {0} is not allowed", args[i])); } ... } else throw new Exception("usage: DeleteCertStore -ss -sr ");

为了删除指定的存储,代码中使用了Windows SDK函数CertUnregisterSystemStore

var ok = CertUnregisterSystemStore(store, CERT_STORE_DELETE_FLAG | CERT_SYSTEM_STORE_LOCATION);
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485