Функция 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 можно использовать для перечисления имен существующих системных хранилищ. Некоторые примеры системных хранилищ перечислены в следующей таблице.

Значение Значение
CA
Сертификаты центра сертификации.
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 или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

CertAddEncodedCertificateToStore

CertCloseStore

CertGetCRLContextProperty

CertOpenStore

CertSaveStore

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