Repositórios lógicos e físicos

Os repositórios de sistema padrão, incluindo MY, CA e ROOT, são implementados como repositórios de coleção lógica com vários repositórios físicos predefinidos como seus repositórios membros. Os repositórios físicos membro de um repositório do sistema são abertos automaticamente quando o repositório do sistema é aberto. Um usuário pode adicionar repositórios físicos adicionais a qualquer coleção de repositórios do sistema. A função CryptoAPI CertRegisterPhysicalStore adiciona um novo repositório físico a uma coleção de repositórios do sistema. CertUnregisterPhysicalStore desassocia um repositório físico de um repositório de sistema lógico. CertRegisterSystemStore cria um novo repositório de sistema em um hKey do Registro, enquanto CertUnregisterSystemStore remove um repositório do sistema do registro.

No CryptoAPI, os repositórios do sistema são repositórios lógicos com repositórios físicos associados. Todos os certificados em um repositório de sistema existente permanecem disponíveis e a adição física de novos certificados é feita nos repositórios físicos que compõem o repositório do sistema lógico.

Os usuários que preferem continuar a usar repositórios de sistema físico e não converter em repositórios lógicos podem abrir repositórios de sistema com o provedor CERT_STORE_PROV_SYSTEM_REGISTRY. Esse provedor continuará a usar cada repositório do sistema como um único repositório físico.

As funções CertEnumSystemStoreLocation, CertEnumSystemStore e CertEnumPhysicalStore listam locais de repositório do sistema, repositórios de sistema disponíveis e todos os repositórios físicos que são membros de um repositório do sistema.

Os repositórios do sistema também podem ser realocados. Por padrão, um repositório do sistema é aberto em relação a uma subchave do Registro seguindo um padrão predefinido. Para obter mais informações, consulte Locais do Repositório do Sistema. Definir CERT_SYSTEM_STORE_RELOCATE_FLAG no parâmetro dwFlags passado para CertOpenStore coloca um repositório do sistema no registro em uma subchave do Registro especificada pelo usuário em vez da predefinida.