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


Функция CertOpenSystemStoreA (wincrypt.h)

Функция CertOpenSystemStore — это упрощенная функция, которая открывает наиболее распространенные системные хранилища сертификатов. Чтобы открыть хранилища сертификатов с более сложными требованиями, например хранилищами на основе файлов или памяти, используйте CertOpenStore.

Синтаксис

HCERTSTORE CertOpenSystemStoreA(
  [in] HCRYPTPROV_LEGACY hProv,
  [in] LPCSTR            szSubsystemProtocol
);

Параметры

[in] hProv

Этот параметр не используется и должен иметь значение 0.

Windows Server 2003 и Windows XP: Дескриптор поставщика служб шифрования (CSP). Задайте hProv значение 0, чтобы использовать CSP по умолчанию. Если hProv не 0, это должен быть дескриптор CSP, созданный с помощью функции CryptAcquireContext. Тип данных этого параметра — HCRYPTPROV.

[in] szSubsystemProtocol

Строка, которая называет системное хранилище. Если имя хранилища системы, указанное в этом параметре, не является именем существующего системного хранилища, будет создано и используется новое системное хранилище. CertEnumSystemStore можно использовать для перечисления имен существующих системных хранилищ. Некоторые примеры системных хранилищ перечислены в следующей таблице.

Ценность Значение
ЦС
центра сертификации сертификатов.
MY
Хранилище сертификатов, которое содержит сертификаты с связанными закрытыми ключами.
КОРНЕВОй
корневых сертификатов.
SPC
сертификат издателя программного обеспечения.

Возвращаемое значение

Если функция выполнена успешно, функция возвращает дескриптор в хранилище сертификатов.

Если функция завершается ошибкой, она возвращает NULL. Для получения расширенных сведений об ошибке вызовите GetLastError.

Примечание Ошибки из вызываемой функции CertOpenStore распространяется на эту функцию.
 

Замечания

Только текущие сертификаты пользователей доступны с помощью этого метода, а не локального хранилища компьютеров.

После открытия системного хранилища все стандартные функции хранилища сертификатов можно использовать для управления сертификатами.

После использования хранилище должно быть закрыто с помощью CertCloseStore.

Дополнительные сведения о хранилищах, которые автоматически переносятся, см. в миграции хранилища сертификатов.

Примеры

В следующем примере показан упрощенный метод для открытия наиболее распространенных системных хранилищ сертификатов. Другой пример, использующий эту функцию, см. в разделе Пример программы C: операции хранилища сертификатов.

//--------------------------------------------------------------------
// Declare and initialize variables.

HCERTSTORE  hSystemStore;              // system store handle

//--------------------------------------------------------------------
// Open the CA system certificate store. The same call can be
// used with the name of a different system store, such as My or Root,
// as the second parameter.

if(hSystemStore = CertOpenSystemStore(
    0,
    "CA"))
{
  printf("The CA system store is open. Continue.\n");
}
else
{
  printf("The CA system store did not open.\n");
  exit(1);
}

// Use the store as needed.
// ...

// When done using the store, close it.
if(!CertCloseStore(hSystemStore, 0))
{
  printf("Unable to close the CA system store.\n");
  exit(1);
}

Заметка

Заголовок wincrypt.h определяет CertOpenSystemStore как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка wincrypt.h
библиотеки Crypt32.lib
DLL Crypt32.dll

См. также

CertAddEncodedCertificateToStore

CertCloseStore

CertGetCRLContextProperty

CertOpenStore

CertSaveStore

функции хранилища сертификатов