2

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 を出力し、2 回目以降は 0 を出力します。

これは正しい方法ですか?はいの場合、MMC にストアが表示されないのはなぜですか? いいえの場合、C/C++ を使用して新しい証明書ストアを作成する正しい方法は何ですか?

コードに間違いがあれば遠慮なく指摘してください。

4

2 に答える 2