使用虚拟盒是否可以将虚拟机时间设置为与主机时间不同

使用虚拟盒是否可以将虚拟机时间设置为与主机时间不同

使用虚拟盒可以将虚拟机时间设置为不同于主机时间。比如说 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 客户机上)。

运行后(也是客户机正在运行),您可以更改日期,并且它不会恢复到主机日期;无需关闭或重新启动客户机。

相关内容