Функция CertOpenSystemStoreA (wincrypt.h)
Функция CertOpenSystemStore
Синтаксис
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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | wincrypt.h |
библиотеки |
Crypt32.lib |
DLL | Crypt32.dll |