Windows

如何通過命令行從安裝程序轉儲證書文件?

  • May 13, 2013

我正在建構一個腳本,它將下載並安裝一堆程序。其中一個程序依賴於虛擬驅動程序,該驅動程序需要導入其證書才能執行。通常,安裝程序會在 GUI 中為您執行此操作,然後會彈出一個確認對話框,詢問您是否信任此驅動程序。但是,對於我正在編寫的腳本來說,這種中斷是不可接受的。

我找到了一種通過文件屬性 GUI 導出證書的方法,並且可以使用腳本導入該文件,從而允許我在沒有任何使用者互動的情況下進行安裝。但是,為了部署和完全自動化這個腳本,我還需要能夠通過腳本從安裝程序中導出證書文件。這可以做到嗎?

整個過程可以使用.Net 框架中可用的X509Certificate類在 powershell 中完成。

您需要做的第一件事是從簽名文件中獲取證書文件。這是使用 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。

引用自:https://serverfault.com/questions/432668