Я устанавливаю окна без участия оператора. Частично это установка гостевых дополнений виртуального бокса, запускаемых установщиком из-за следующей записи в 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>
...
Он работает нормально, установка без графического интерфейса. Однако появляются два окна с вопросом, нужно ли устанавливать два драйвера устройств. Это не сулит ничего хорошего для автоматической установки. Есть ли способ заставить win7 принимать драйверы или ключ реестра, который я могу установить, чтобы он им доверял?
Лучший способ избежать этих запросов - получить необходимые сертификаты, которыми подписаны драйверы устройств, и установить их на гостевой машине до установки. Вы можете найти сертификат для Sun и один для Oracle в Local Computer -> Trusted Publisher certificate store. Вы можете легко экспортировать их оттуда, а затем импортировать в гостевую систему перед установкой дополнений.
Чтобы извлечь сертификат из машины, на которой уже установлены сертификаты, которым доверяют сертификаты, используемые для подписи драйверов устройств с помощью 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. Просто убедитесь, что эти сертификаты установлены до автоматической установки гостевых дополнений.
Чтобы добавить к ответу @ Goyuix, этот скрипт экспортирует все Oracle .cer
s в текущем каталоге с началом отпечатка пальца в имени файла:
$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
Поскольку ответы были написаны, Oracle добавила более чистый механизм для решения этой проблемы. Необходимые сертификаты находятся на самом компакт-диске вместе с утилитой для импорта сертификатов в правильное хранилище сертификатов.
Предполагая, что ISO смонтирован как диск с буквой E: вам просто нужно добавить эту команду в свой автоматический сценарий перед запуском установщика:
E:\cert\VBoxCertUtil add-trusted-publisher E:\cert\vbox*.cer --root E:\cert\vbox*.cer