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,则它必须是使用 CryptAcquireContext 函数创建的 CSP 句柄。此参数的数据类型为 HCRYPTPROV。
[in] szSubsystemProtocol
一个命名系统存储的字符串。 如果此参数中提供的系统存储名称不是现有系统存储的名称,则将创建和使用一个新的系统存储。 CertEnumSystemStore 可用于列出现有系统存储的名称。 下表列出了一些示例系统存储。
Value | 含义 |
---|---|
|
证书颁发机构 证书。 |
|
保存具有关联私钥的证书的证书存储。 |
|
根证书。 |
|
软件发布者证书。 |
返回值
如果函数成功,该函数将返回证书存储的句柄。
如果函数失败,则返回 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 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | wincrypt.h |
Library | Crypt32.lib |
DLL | Crypt32.dll |