如何用Inno Setup在本地计算机受信任根证书颁发机构安装.pfx证书
用Inno Setup把.pfx证书装到本地计算机受信任根CA的解决办法
你之前用的-enterprise参数不对,要安装到本地计算机(Local Machine)的根证书存储区,得用-machine参数才行。而且.pfx是带私钥的证书,certutil的参数和.cer格式不一样,下面给你具体的解决方案:
无密码的.pfx文件安装命令
直接在Inno Setup的[Run]段这么写:
[Run] Filename: "certutil.exe"; Parameters: "-addstore -machine Root ""{app}\Application\rootCert.pfx"""; Flags: runhidden; StatusMsg: "安装受信任根证书..."; Privileges: admin
带密码的.pfx文件安装命令
如果你的.pfx设了密码,要加-p参数指定密码:
[Run] Filename: "certutil.exe"; Parameters: "-addstore -machine Root -p ""你的证书密码"" ""{app}\Application\rootCert.pfx"""; Flags: runhidden; StatusMsg: "安装受信任根证书..."; Privileges: admin
重要注意点
- 必须要管理员权限:往本地计算机证书存储区装东西,必须让安装程序以管理员身份运行,所以一定要加上
Privileges: admin,Inno Setup会自动弹出UAC请求。 - 参数解释:
-machine:明确告诉certutil操作本地计算机的证书库,不是当前用户的。Root:指定目标是受信任根证书颁发机构存储区。-p:如果pfx有密码,用这个参数传密码,要是密码里有特殊符号,记得用双引号包起来转义。
- 用PowerShell替代的方案:要是你不想用certutil,也可以用PowerShell命令,效果一样:
带密码的情况:
无密码的情况:[Run] Filename: "powershell.exe"; Parameters: "-Command ""Import-PfxCertificate -FilePath '{app}\Application\rootCert.pfx' -CertStoreLocation 'Cert:\LocalMachine\Root' -Password (ConvertTo-SecureString '你的证书密码' -AsPlainText -Force)"""; Flags: runhidden; StatusMsg: "安装受信任根证书..."; Privileges: admin[Run] Filename: "powershell.exe"; Parameters: "-Command ""Import-PfxCertificate -FilePath '{app}\Application\rootCert.pfx' -CertStoreLocation 'Cert:\LocalMachine\Root'"""; Flags: runhidden; StatusMsg: "安装受信任根证书..."; Privileges: admin
内容的提问来源于stack exchange,提问作者Tushar Mahajan
相关产品推荐
相关产品推荐

