web-dev-qa-db-ja.com

Windows7へのvirtualboxツールの完全自動インストール

Windowsを無人でインストールしています。その一部は、virtualboxゲスト追加機能のインストールです。これは、Autounattend.xmlに次のエントリがあるため、インストーラーによって実行されます。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-Microsoft-com:unattend">
  ...
  <settings pass="oobeSystem">
    ...
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="NonSxS" xmlns:wcm="http://schemas.Microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      ...
      <FirstLogonCommands>
        <SynchronousCommand>
          <Order>30</Order>
          <Description>VirtualBox Additions</Description>
          <CommandLine>F:\VBoxWindowsAdditions-x86.exe /S</CommandLine>
        </SynchronousCommand>
        ...

GUIなしでインストールしても、正常に動作します。ただし、2つのデバイスドライバをインストールするかどうかを尋ねる2つのウィンドウがポップアップ表示されます。これは、自動インストールの前兆にはなりません。 win7にドライバーを受け入れるように強制する方法、またはドライバーを信頼させるために設定できるレジストリキーはありますか?

3
Claudiu

これらのプロンプトを回避するための最善の方法は、デバイスドライバーが署名されている必要な証明書を取得し、インストールする前にそれらをゲストにインストールすることです。 Sunの証明書とOracleの証明書は、[ローカルコンピューター]-> [信頼された発行元]証明書ストアにあります。そこから簡単にエクスポートして、追加をインストールする前にゲストにインポートできます。

PowerShellを使用してデバイスドライバーに署名するために使用される証明書を既にインストールして信頼しているマシンから証明書を抽出するには、次の手順を実行します。

cd cert:\LocalMachine\TrustedPublisher
$cert = dir | where { $_.Subject -like "*Oracle*" }
$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
$bytes = $cert.Export($type)
[System.IO.File]::WriteAllBytes("C:\Oracle.cer", $bytes)

上記のコマンドを実行して*Oracle**Sun Microsystems*に置き換え、両方の証明書をキャプチャして、両方が存在できるようにして、VirtualBoxでもう少しバージョンに依存しないようにすることができます。ゲスト追加機能を無人でインストールする前に、これらの証明書がインストールされていることを確認してください。

4
Goyuix

@Goyuixの回答に追加するために、このスクリプトは、ファイル名に拇印の先頭を付けて、現在のディレクトリにあるすべてのOracle .cersをエクスポートします。

$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert
dir cert:\LocalMachine\TrustedPublisher | where { $_.Subject -like "*Oracle*" } | ForEach { [System.IO.File]::WriteAllBytes("vbox_Oracle_" + $_.Thumbprint.Substring(0, 10) + ".cer", $_.Export($type))  }

次に、これらは次のcmdスニペットでインポートできます。

for %%i in (%~dp0\vbox_*.cer) do certutil -addstore -f "TrustedPublisher" %%i
1
Kevin Smyth

答えが書かれて以来、オラクルはこれを解決するためのよりクリーンなメカニズムを追加しました。必要な証明書は、正しい証明書ストアに証明書をインポートするためのユーティリティとともに、CD自体に含まれています。

ISOがドライブ文字Eとしてマウントされていると仮定すると、インストーラーを実行する前に、このコマンドを無人スクリプトに追加する必要があります。

E:\cert\VBoxCertUtil add-trusted-publisher E:\cert\vbox*.cer --root E:\cert\vbox*.cer
0
Kevin Keane