4

这样的问题:我需要在我的安装(WiX 3.5)中导入 .pfx 证书。我需要接受在没有任何(!)用户交互的情况下导入它们,甚至接受(对于构建服务器和测试市场的测试需要如此)

尝试使用标准 WiX 解决方案,WiXIISExtension但没有安静(静默)导入的选项。

在 C++ 上尝试了这样的解决方案(来自 wix 中 dll 的延迟自定义操作):

  1. PfxImportCertStore - CertEnumCertificatesStore - CertAddCertificateContextToStore:证书管理器要求接受...

  2. CryptUIWizImport带有标志CRYPTUI_WIZ_NO_UI:CryptoAPI 试图访问私钥,经理要求接受...

有没有办法解决这个问题?或者我真的需要写一个定制服务来接受?

4

2 回答 2

1

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

  • 谨慎使用证书导入方法。当您需要使用从文件或从上下文中导入时,您应该了解不同的情况。

  • 注意您使用的标志(如果您使用一些示例,则更多)

  • 确保您的证书获得批准。

PS如果有人需要导入不同证书的工作代码的好例子,请评论我。

于 2012-07-19T08:17:32.560 回答
-1

尝试在根信任位置添加自签名证书时遇到了同样的问题。它提示我安全警告。

安全警告

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

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);

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

于 2019-03-20T15:06:55.147 回答