Magasins logiques et physiques
Les magasins système par défaut, notamment MY, CA et ROOT, sont implémentés en tant que magasins de collections logiques avec un certain nombre de magasins physiques prédéfinis comme magasins membres. Les magasins physiques membres d’un magasin système sont ouverts automatiquement lors de l’ouverture du magasin système. Un utilisateur peut ajouter des magasins physiques supplémentaires à n’importe quelle collection de magasins système. La fonction CryptoAPI CertRegisterPhysicalStore ajoute un nouveau magasin physique à une collection de magasins système. CertUnregisterPhysicalStore dissocie un magasin physique d’un magasin système logique. CertRegisterSystemStore crée un magasin système sous une clé hKey de registre, tandis que CertUnregisterSystemStore supprime un magasin système du registre.
Dans CryptoAPI, les magasins système sont des magasins logiques avec des magasins physiques associés. Tous les certificats d’un magasin système existant restent disponibles, et l’ajout physique de nouveaux certificats est effectué dans les magasins physiques qui composent le magasin système logique.
Les utilisateurs qui préfèrent continuer à utiliser des magasins système physiques et ne pas les convertir en magasins logiques peuvent ouvrir des magasins système avec le fournisseur de CERT_STORE_PROV_SYSTEM_REGISTRY. Ce fournisseur continuera à utiliser chaque magasin système en tant que magasin physique unique.
Les fonctions CertEnumSystemStoreLocation, CertEnumSystemStore et CertEnumPhysicalStore répertorient les emplacements des magasins système, les magasins système disponibles et tous les magasins physiques membres d’un magasin système.
Les magasins système peuvent également être déplacés. Par défaut, un magasin système est ouvert par rapport à une sous-clé de Registre selon un modèle prédéfini. Pour plus d’informations, consultez Emplacements du magasin système. La définition de CERT_SYSTEM_STORE_RELOCATE_FLAG dans le paramètre dwFlags passé à CertOpenStore place un magasin système dans le registre sous une sous-clé de Registre spécifiée par l’utilisateur au lieu de la sous-clé de Registre prédéfinie.