【发布时间】:2014-01-17 01:57:01
【问题描述】:
我正在尝试使用 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++ 创建新证书存储的正确方法是什么?
请随时指出代码中的任何错误。
【问题讨论】:
-
"如果函数成功,则函数返回非零 (TRUE)。如果函数失败,则返回零 (FALSE)。有关扩展错误信息,请调用
GetLastError。"那么 GetLastError 返回什么?
标签: c++ c winapi creation certificate-store