逻辑和物理存储

默认系统存储(包括 MY、CA 和 ROOT)作为逻辑集合存储实现,其中许多预定义的物理存储作为其成员存储。 打开系统存储时,系统存储的成员物理存储会自动打开。 用户可以将其他物理存储添加到任何系统存储集合。 CryptoAPI 函数 CertRegisterPhysicalStore 将新的物理存储添加到系统存储集合。 CertUnregisterPhysicalStore 将物理存储与逻辑系统存储取消关联。 CertRegisterSystemStore 在注册表 hKey 下创建新的系统存储,而 CertUnregisterSystemStore 从注册表中删除系统存储。

在 CryptoAPI 中,系统存储是具有关联物理存储的逻辑存储。 现有系统存储中的所有证书仍然可用,并且新证书的物理添加是在构成逻辑系统存储的物理存储中完成的。

希望继续使用物理系统存储而不转换为逻辑存储的用户可以使用CERT_STORE_PROV_SYSTEM_REGISTRY提供程序打开系统存储。 此提供程序将继续将每个系统存储用作单个物理存储。

函数 CertEnumSystemStoreLocationCertEnumSystemStoreCertEnumPhysicalStore 列出系统存储位置、可用的系统存储以及属于系统存储成员的所有物理存储。

也可以重新定位系统存储。 默认情况下,系统会按照预定义模式相对于注册表子项打开系统存储。 有关详细信息,请参阅 系统存储位置。 在传递给 CertOpenStoredwFlags 参数中设置CERT_SYSTEM_STORE_RELOCATE_FLAG会将系统存储放在用户指定的注册表子项下,而不是预定义的注册表子项下。