Функция 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 можно использовать для перечисления имен существующих системных хранилищ. Некоторые примеры системных хранилищ перечислены в следующей таблице.
Значение | Значение |
---|---|
|
Сертификаты центра сертификации. |
|
Хранилище сертификатов, в котором хранятся сертификаты со связанными закрытыми ключами. |
|
Корневые сертификаты. |
|
Сертификат издателя программного обеспечения. |
Возвращаемое значение
Если функция выполняется успешно, функция возвращает дескриптор в хранилище сертификатов.
Если функция завершается сбоем, она возвращает значение NULL. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Комментарии
С помощью этого метода доступны только текущие сертификаты пользователей, а не локальное хранилище компьютера.
После открытия системного хранилища все стандартные функции хранилища сертификатов можно использовать для управления сертификатами.
После использования хранилище должно быть закрыто с помощью 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 |