我正在尝试使用 C/C++ 以编程方式在 Windows 中创建新的证书存储。
我从这个函数开始 - CryptAcquireContext
,并写了这段代码:
#include<windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HCRYPTPROV hCryptProvider;
PCWSTR DefaultContainerName = L"MyStoreName";
PCWSTR DefaultProviderName = MS_STRONG_PROV;
DWORD DefaultProviderType = PROV_RSA_FULL;
DWORD DefaultProviderFlags = CRYPT_MACHINE_KEYSET | CRYPT_SILENT | CRYPT_NEWKEYSET;
printf("%d\n", CryptAcquireContext(&hCryptProvider, DefaultContainerName, DefaultProviderName, DefaultProviderType, DefaultProviderFlags));
return 0;
}
容器名称和提供程序名称值是从我应该遵循的设计文档中选取的。
我不知道这是否是创建商店的正确方法,因为在运行它并打开 MMC 的证书管理单元后,我没有看到给定名称的商店。该程序在第一次运行时打印 1,从第二次开始打印 0。
这是正确的方法吗?如果是,为什么我在 MMC 中看不到商店?如果不是,使用 C/C++ 创建新证书存储的正确方法是什么?
请随时指出代码中的任何错误。
最佳答案
CryptAcquireContext
可以创建 key 容器。 key 容器与证书存储不同。
要创建证书存储,请使用 CertRegisterPhysicalStore
或 CertRegisterSystemStore
。
关于c++ - 在 C/C++ 中创建新的证书存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835179/