instalação totalmente automatizada de ferramentas de caixa virtual no windows 7

3

Estou fazendo uma instalação autônoma do Windows. Parte disso é a instalação das adições de convidados do virtualbox, que são executadas pelo instalador devido à seguinte entrada em 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>
        ...

Funciona bem, instalando sem interface gráfica. No entanto, duas janelas aparecem perguntando se você deseja instalar dois drivers de dispositivo. Isso não é bom para uma instalação automatizada. Existe alguma maneira de forçar win7 para aceitar os drivers, ou uma chave de registro que posso definir para torná-los confiáveis?

    
por Claudiu 07.04.2011 / 22:56

2 respostas

4

Sua melhor chance de evitar esses prompts é pegar os certificados necessários com os quais os drivers de dispositivo estão assinados e instalá-los no convidado antes da instalação. Você pode encontrar um certificado para a Sun e um para Oracle no computador local - > Armazenamento de certificados do Trusted Publisher. Você pode facilmente exportá-los de lá e importá-los para o convidado antes de instalar as adições.

Para extrair o certificado de uma máquina que já tenha instalado e confie no (s) certificado (s) usado (s) para assinar os drivers de dispositivo usando o 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)

Você pode querer executar o comando acima e substituir *Oracle* por *Sun Microsystems* e capturar os dois certificados, para que eles possam estar presentes para que você possa ser um pouco mais independente da versão com o VirtualBox. Apenas certifique-se de que esses certificados estejam instalados antes da instalação autônoma das adições do convidado.

    
por 29.04.2011 / 06:11
1

Para adicionar à resposta do @ Goyuix, este script exportará todo o% do Oracle .cer s no diretório atual com o início da impressão digital no nome do arquivo:

$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))  }

Estes podem ser importados com este cmd snippet:

for %%i in (%~dp0\vbox_*.cer) do certutil -addstore -f "TrustedPublisher" %%i
    
por 23.10.2014 / 17:21