我需要以编程方式将证书导入Windows应用商店。
CryptUIWizImport函数运行良好,但是Windows要求用户创建其他密码来保护证书。
但是用户可以选择不设置此密码。

是否可以避免Windows UI并以编程方式设置此附加密码?

最佳答案

作为以下代码,您应该清空密码字段:

#include "stdafx.h"
#include "windows.h"
#include "Cryptuiapi.h"

#pragma comment(lib, "Cryptui.lib")

int _tmain(int argc, _TCHAR* argv[]){
    CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc;
    memset(&importSrc, 0, sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO));
    importSrc.dwSize = sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO);
    importSrc.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_FILE;
    importSrc.pwszFileName = L"C:\\PathToPFX\\cert.pfx";
    importSrc.pwszPassword = L"";
    importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;
    if (CryptUIWizImport(
      CRYPTUI_WIZ_NO_UI,
      NULL,
      NULL,
      &importSrc,
      NULL
    ) == 0)
    {
      printf(“CryptUIWizImport error 0x%x\n”, GetLastError());
    }
    return 0;
}

08-05 08:47