CertSetStoreProperty 函数 (wincrypt.h)

CertSetStoreProperty 函数设置存储属性。

语法

BOOL CertSetStoreProperty(
  [in] HCERTSTORE hCertStore,
  [in] DWORD      dwPropId,
  [in] DWORD      dwFlags,
  [in] const void *pvData
);

参数

[in] hCertStore

证书存储的句柄。

[in] dwPropId

指示一系列存储属性之一。 用户定义的属性的值必须超出预定义上下文属性值的当前范围。 目前,用户定义的 dwPropId 值从 4,096 开始。 有一个预定义的存储属性,CERT_STORE_LOCALIZED_NAME_PROP_ID存储的本地化名称。

[in] dwFlags

保留以供将来使用,必须为零。

[in] pvData

pvData 的类型定义取决于 dwPropId 值。 如果 dwPropId CERT_STORE_LOCALIZED_NAME_PROP_ID, 则 pvData 指向 CRYPT_DATA_BLOB 结构。 该结构的 pbData 成员是指向 以 null 结尾的 Unicode 字符串的指针。 该结构的 cbData 成员是包含字符串长度的 DWORD 值。

对于用户定义的 dwPropId 值, pvData 是指向编码 CRYPT_DATA_BLOB的指针。

如果所选属性的值已存在,则替换旧值。

如果 pvData 设置为 NULL ,则调用此函数会删除属性。

返回值

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

如果函数失败,则返回值为 FALSE

注解

存储属性标识符是适用于整个存储区的属性。 它们不是单个 证书CRLCTL 上下文的属性。 目前,不保留任何存储属性。

示例

以下示例演示如何设置打开的证书存储的本地化名称属性。

//--------------------------------------------------------------
// Declare and initialize variables.

HCERTSTORE hCertStore = NULL;       // Original certificate store
CRYPT_DATA_BLOB Property_Name_Blob; // BLOB to hold store property

//--------------------------------------------------------------
// Open the certificate store that will have its localized name
// property set. In this case, the CA system store is opened. 

if ( hCertStore = CertOpenStore(
    CERT_STORE_PROV_SYSTEM,
    0,
    NULL,
    CERT_SYSTEM_STORE_CURRENT_USER,
    L"CA"))
{
     printf("The CA store is open.\n");
}
else
{
     printf("The CA store could not be opened \n.");
     exit(1);
}

//--------------------------------------------------------------------
// Prepare a data structure to set a store property.
// Initialize the members of the CRYPT_DATA_BLOB.
Property_Name_Blob.pbData = (BYTE *) L"The Local CA Store";
Property_Name_Blob.cbData = 
       (wcslen((LPWSTR)Property_Name_Blob.pbData)+1) * sizeof(WCHAR);

//--------------------------------------------------------------------
// Set the store's localized name property.
if (CertSetStoreProperty(
    hCertStore,
    CERT_STORE_LOCALIZED_NAME_PROP_ID,
    0,
    &Property_Name_Blob))
{
     printf("The name of the store has been set. Continue. \n");
}
else
{
     printf("Setting the store's localized name failed.\n");
     exit(1);
}

// Close the store when done.
if (!CertCloseStore(
     hCertStore,
     0 ))
{
     printf("The CA store could not be closed \n.");
     exit(1);

}

有关使用此函数的另一个示例,请参阅 示例 C 程序:设置和获取证书存储属性

要求

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

另请参阅

CertGetStoreProperty

证书存储函数