C ++和维克斯:沉默接受的.pfx证书(c++ and WiX: Silent accept .p

2019-09-19 16:05发布

这样的问题:我需要在我的安装(维克斯3.5)导入的.pfx证书。 我需要接受导入它们没有任何(!)用户交互,甚至验收规范(需要先所以testion建筑服务器和测试makets)

试图标准WiX的解决方案,使用WiXIISExtension ,但安静(静音)进口的选项。

试图在C ++(从维克斯DLL延迟定制操作),这样的解决方案:

  1. PfxImportCertStore - CertEnumCertificatesStore - CertAddCertificateContextToStore :证书管理要求验收规范...

  2. CryptUIWizImport与标志CRYPTUI_WIZ_NO_UI :CryptoAPI的试图访问一个私钥,经理要求验收规范...

是否有解决这个的方法吗? 或者我真的需要编写验收规范的定制服务? 这是不是很爽?

Answer 1:

好吧,我解决我的问题。 在我的情况下,它是用户保护的证书......只是我的假的只是标志......可是,就在这两天,我意识到:

  • 与进口sertificate的方法小心地...ü应该知道不同的情况下,当u需要使用从文件导入或从上下文中...

  • 注意标志,U通用(更多,如果u使用一些例子)

  • 确保UR证书有批准...

如果有人需要工作导入了不同的证书编码的很好的例子PS我评论



Answer 2:

我尝试添加根信任位置的自签名证书时,同样的问题。 它促使我的安全警告。

安全警告

用下面的代码,我现在可以默默添加自签名证书的根信任的位置。

    HCERTSTORE hUIRootCertStore = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, NULL, CERT_SYSTEM_STORE_LOCAL_MACHINE, L"Root");
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"<certificate file>";
importSrc.pwszPassword = L"<your password>";
importSrc.dwFlags = CRYPT_EXPORTABLE;
bRet = CryptUIWizImport(CRYPTUI_WIZ_NO_UI | CRYPTUI_WIZ_IMPORT_TO_LOCALMACHINE, NULL, NULL, &importSrc, hUIRootCertStore);

如果有任何其他方法,请告诉我。



文章来源: c++ and WiX: Silent accept .pfx certificates