如何通过命令行从安装程序转储证书文件?

如何通过命令行从安装程序转储证书文件?

我正在编写一个脚本,用于下载和安装一堆程序。其中一个程序依赖于虚拟驱动程序,该驱动程序需要导入其证书才能运行。通常,安装程序会在 GUI 中为您执行此操作,并弹出一个确认对话框询问您是否信任此驱动程序。但是,对于我正在编写的脚本来说,这种中断是不可接受的。

我找到了一种通过文件属性 GUI 导出证书的方法,并可以使用脚本导入该文件,这样我就无需任何用户交互即可安装。但是,为了部署并完全自动化此脚本,我还需要能够通过脚本从安装程序导出证书文件。可以这样做吗?

答案1

整个过程可以在 powershell 中使用X509证书.Net 框架中可用的类。

您需要做的第一件事是从签名文件中获取证书文件。这可以使用 CreateFromCertFile 函数完成。请注意,该函数只能采用完整路径,而不能采用相对路径。

然后,您可以在本地计算机上打开证书存储并导入证书。要写入本地计算机存储,需要以管理员身份执行此操作。

Add-Type -AssemblyName System.Security

# Create a new certificate extracted from the signed file.
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate]::CreateFromCertFile('c:\temp\SetupVirtualCloneDrive5450.exe')

# Open the Trusted Publishers cert store and add the certificate in.
$cert_store = New-Object System.Security.Cryptography.X509Certificates.X509Store -ArgumentList 'TrustedPublisher', 'LocalMachine' | ForEach-Object {

    $_.Open('ReadWrite')
    $_.Add($certificate)
    $_.Close()
}

仅供参考,我使用此方法安装了 VirtualBox Guest Additions,它也有驱动程序提示。

相关内容