使用虚拟盒可以将虚拟机时间设置为不同于主机时间。比如说 1 年前。
如果我想从这里运行微软提供的 Windows XP 映像。
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11575
对于 XP 图像,值得注意的是:
Expires: This image will shutdown and become completely unusable on February 14, 2013.
这是测试 IE 6、IE 7 的更好方法之一。其他 XP 典型测试。
答案1
完全没有问题。只需记住在 VirtualBox Guest Additions 中禁用时间同步,然后根据需要在虚拟机中设置日期和时间。如果安装时需要,也可以选择进入虚拟 BIOS 并在那里设置日期和时间。
此命令禁用同步:
http://www.virtualbox.org/manual/ch09.html#disabletimesync
VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
以下选项允许设置以毫秒为单位的偏移量: http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm
VBoxManage modifyvm "VM name" --biossystemtimeoffset <msec>
答案2
Windows powerShell 脚本示例
启动虚拟机.ps1
# Starts the VM always on the date 12/30/2016
$tempo = ""+([datetime]"12/30/2016" - [datetime]::Now).TotalMilliseconds
$tempo = ""+[math]::Round($tempo)
$nome = "virtualMachineName"
& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage setextradata $nome "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage modifyvm $nome --biossystemtimeoffset $tempo
& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage startvm $nome
答案3
根据上面的“.ps1”(Windows PowerShell 脚本)示例,我编写了一个常规的“.bat”脚本文件来更改 VirtualBox 虚拟机启动的时钟时间。
所需的开始时间以纪元格式设置在变量“TEMPO_START_TIMESTAMP”中。您可以在“http://www.timestampconvert.com/“。
变量“NOME”中需要输入要启动的 VirtualBox 虚拟机的名称(与上面的“.ps1”脚本中使用的命名法相同)。
echo off
echo %time%
set NOME="Windows_7_x64"
set TEMPO_CS_2_MS=0
set TEMPO_S_2_MS=000
rem # Starts the VM always on the date 07/11/2014 - 11h58
rem http://www.timestampconvert.com/
set TEMPO_START_TIMESTAMP=1415361480
for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x
rem %epoch%
set TEMPO_CURRENT_TIMESTAMP=%epoch%
rem set TEMPO_CURRENT_TIMESTAMP=1544518714
set /A TEMPO_TEMP=(%TEMPO_START_TIMESTAMP%-%TEMPO_CURRENT_TIMESTAMP%)
call set TEMPO=%TEMPO_TEMP%%TEMPO_S_2_MS%
rem %TEMPO_TEMP%
rem %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage setextradata %NOME% "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
c:\Progra~1\Oracle\VirtualBox\VBoxManage modifyvm %NOME% --biossystemtimeoffset %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage startvm %NOME%
您还需要 epoh 格式的当前时间,为此请使用以下脚本(保存为“toEpoch.vbs”,此 Visual Basic 脚本从上面的“.bat”脚本调用):
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())
要运行虚拟机,只需执行上面的“.bat”脚本文件即可。无需打开“Oracle VM VirtualBox 管理”界面。
我希望这有帮助。
问候
答案4
仅提供一些有助于了解的信息,命令:
VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
可以在“VM 名称”客户机运行时运行并立即生效(至少在 Windows 主机和 Windows 客户机上)。
运行后(也是客户机正在运行),您可以更改日期,并且它不会恢复到主机日期;无需关闭或重新启动客户机。