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 可用于列出现有系统存储的名称。 下表列出了一些示例系统存储。
价值 | 意义 |
---|---|
|
证书颁发机构 证书。 |
|
保存具有关联私钥的证书的证书存储。 |
|
根证书。 |
|
软件发布者证书。 |
返回值
如果函数成功,该函数将返回证书存储的句柄。
如果函数失败,它将返回 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 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | wincrypt.h |
库 | Crypt32.lib |
DLL | Crypt32.dll |