我正在尝试使用 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++ 创建新证书存储的正确方法是什么?
请随时指出代码中的任何错误。