Поделиться через


Логические и физические хранилища

Системные хранилища по умолчанию, включая MY, ЦС и ROOT, реализуются как логические хранилища коллекций с рядом предопределенных физических хранилищ в качестве их членов. Физические хранилища-члены системного хранилища открываются автоматически при открытии системного хранилища. Пользователь может добавить дополнительные физические хранилища в любую коллекцию системных хранилищ. Функция CryptoAPI CertRegisterPhysicalStore добавляет новое физическое хранилище в коллекцию системных хранилищ. CertUnregisterPhysicalStore отменяет связь физического хранилища с логическим системным хранилищем. CertRegisterSystemStore создает системное хранилище в реестре hKey, а CertUnregisterSystemStore удаляет системное хранилище из реестра.

В CryptoAPI системные хранилища являются логическими хранилищами со связанными физическими хранилищами. Все сертификаты в существующем системном хранилище остаются доступными, а физическое добавление новых сертификатов выполняется в физических хранилищах, составляющих логическое системное хранилище.

Пользователи, которые предпочитают продолжать использовать физические системные хранилища и не преобразовывать их в логические хранилища, могут открывать системные хранилища с помощью поставщика CERT_STORE_PROV_SYSTEM_REGISTRY. Этот поставщик будет продолжать использовать каждое системное хранилище как единое физическое хранилище.

Функции CertEnumSystemStoreLocation, CertEnumSystemStore и CertEnumPhysicalStore перечисляют расположения системных хранилищ, доступные системные хранилища и все физические хранилища, которые являются членами системного хранилища.

Также можно перемещать системные хранилища. По умолчанию системное хранилище открывается относительно подраздела реестра по предопределенной схеме. Дополнительные сведения см. в разделе Расположения системных магазинов. Настройка CERT_SYSTEM_STORE_RELOCATE_FLAG в параметре dwFlags , передаваемом в CertOpenStore , помещает системное хранилище в реестре в указанный пользователем подраздел реестра вместо предопределенного.