在Windows 7中完全自动安装virtualbox工具

我正在做一个无人值守安装的Windows。 部分原因是由于Autounattend.xml的以下条目,安装了由安装程序运行的virtualbox guest添加项:

 <?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安装。 但是,两个窗口popup询问是否安装两个设备驱动程序。 这对自动化安装来说不是一个好兆头。 有没有办法强制win7接受驱动程序,或者我可以设置一个registry键让它相信他们?

避免这些提示的最佳方法是获取设备驱动程序签名所需的证书,并在安装之前将其安装在客户机上。 您可以在本地计算机 – >受信任的发布者证书存储中findSun证书和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) 

您可能需要运行上述命令,并用*Sun Microsystems*replace*Oracle*并同时捕获两个证书,这样它们都可以存在,因此您可以使用更多的版本独立于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