CertAddCertificateLinkToStore 函数 (wincrypt.h)

CertAddCertificateLinkToStore 函数将 证书存储中的链接添加到不同 存储中的 证书上下文。 此函数不创建和添加证书上下文的副本,而是添加指向原始证书的链接。

语法

BOOL CertAddCertificateLinkToStore(
  [in]            HCERTSTORE     hCertStore,
  [in]            PCCERT_CONTEXT pCertContext,
  [in]            DWORD          dwAddDisposition,
  [out, optional] PCCERT_CONTEXT *ppStoreContext
);

参数

[in] hCertStore

要在其中添加链接的 证书存储的句柄。

[in] pCertContext

指向要链接 CERT_CONTEXT 结构的指针。

[in] dwAddDisposition

如果存储中已存在匹配证书或指向匹配证书的链接,则指定该作。 目前定义的处置值及其用途如下所示。

价值 意义
CERT_STORE_ADD_ALWAYS
该函数不检查现有匹配证书或链接到匹配证书。 新证书始终添加到存储区。 这可能会导致存储中的重复项。
CERT_STORE_ADD_NEW
如果存在匹配证书或指向匹配证书的链接,作将失败。 GetLastError 返回CRYPT_E_EXISTS代码。
CERT_STORE_ADD_REPLACE_EXISTING
如果存在指向匹配证书的链接,则会删除该现有链接,并创建一个新链接并将其添加到存储区。 如果不存在匹配证书或指向匹配证书的链接,则会添加一个证书。
CERT_STORE_ADD_USE_EXISTING
如果存在匹配证书或指向匹配证书的链接,则使用现有证书。 函数不会失败,但未添加新链接。 如果不存在匹配证书或指向匹配证书的链接,则会添加新链接。

[out, optional] ppStoreContext

指向指向所创建链接副本的指针。 ppStoreContext 参数可以 NULL,以指示不需要链接的副本。 如果创建了链接的副本,则必须使用 CertFreeCertificateContext 函数释放该副本。

返回值

如果函数成功,则返回值 TRUE

如果函数失败,则返回值 FALSE。 有关扩展错误信息,请调用 GetLastError。 下面是一些可能的错误代码。

返回代码 描述
CRYPT_E_EXISTS
对于 CERT_STORE_ADD_NEW 的 dwAddDisposition 参数,证书已存在于存储中。
E_INVALIDARG
dwAddDisposition 参数中指定了无效的处置值。

言论

由于该链接提供对原始证书 上下文的访问权限,因此在链接 证书上下文中设置扩展属性 证书的原始位置和该证书的任何其他链接中的扩展属性。

无法将链接添加到作为集合打开的存储区。 作为集合打开的存储包括使用 CertOpenSystemStoreCertOpenStore 使用 CERT_STORE_PROV_SYSTEM 或 CERT_STORE_PROV_COLLECTION 打开的所有存储。 有关详细信息,请参阅 CertAddStoreToCollection

如果使用链接并 使用 CERT_CLOSE_STORE_FORCE_FLAG调用 CertCloseStore,则必须在包含原始上下文的存储区关闭之前关闭使用链接的存储。 如果未使用CERT_CLOSE_STORE_FORCE_FLAG,则可以按任一顺序关闭这两个商店。

若要从证书存储中删除证书上下文链接,请使用 CertDeleteCertificateFromStore 函数。

例子

有关使用此函数的示例,请参阅 示例 C 程序:证书存储作。 有关使用此函数的其他代码,请参阅 示例 C 程序:集合和同级证书存储作

要求

要求 价值
最低支持的客户端 Windows XP [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2003 [桌面应用 |UWP 应用]
目标平台 窗户
标头 wincrypt.h
Crypt32.lib
DLL Crypt32.dll

另请参阅

CertAddCRLLinkToStore

CertAddCTLLinkToStore

CertAddStoreToCollection

CertCloseStore

CertFreeCertificateContext

CertOpenStore

CertOpenSystemStore

证书函数