实施解决方案

实施解决方案

2013 年我追踪到当主机是 Linux 时如何自动启动/关闭 Virtualbox VM。该过程已正式记录,需要几个步骤。

现在我感兴趣的是如何配置 Virtualbox VM 以在 Windows 重启后自动启动?

是否有正式记录的流程?如果没有,有人测试过哪些解决方案?

我的天真尝试是这样的:

  • 完成:设置窗口在重启时自动登录

  • TODO:使用以下代码创建批处理脚本:sleep 120 && vboxmanage startvm my_vm_name

  • TODO:将批处理脚本放入我的用户的启动目录中。(不过我在 Windows 10 中没有看到任何“启动”目录……)

答案1

真正最一致的选择是使用任务计划程序。

实施解决方案

这需要几个非常简单的步骤,但我会详细解释它们,以确保任何技术背景的人都可以进行设置:

  1. 确定虚拟机名称
  2. 在任务计划程序中创建任务

1. 确定虚拟机名称

导航C:\Users\YourUserNameHere\VirtualBox VMs

VirtualBox VM 文件夹

上面的文件夹名称通常反映虚拟机名称。您可以通过检查 VirtualBox Manager 本身来确认这一点:

VirtualBox 图形界面

机器名称为WindowsXPSP3

2.在任务计划程序中创建任务

首先单击开始按钮并输入“任务计划程序”(不带引号)。然后打开任务计划程序:

任务计划程序搜索

在任务调度程序中,我们将在左侧看到一个圣诞树。右键单击Task Scheduler Library。左键单击New Folder...

任务计划程序新建文件夹

将文件夹命名为容易记住的名称,然后User Custom点击确定(如果您已经有一个想要使用的现有文件夹,那也没问题,直接跳到下一段)

命名新文件夹

单击您新创建的文件夹(在我的情况下为)User Custom,以突出显示它。右键单击右侧的空白列表,然后左键单击Create New Task...

创建新任务

现在到了棘手的部分。请逐字逐句地按照我的指示操作。如果您因为它不起作用而想投反对票,或者在评论中说“这对我来说不起作用”,我敢打赌您在这里跳过了一个步骤。回来再试一次。

和可以是任何你喜欢的,它只是美观的NameDescription不会影响功能。我将以我的虚拟机命名并添加一个简短的描述。重要的是你选择Run whether user is logged on or notRun with highest privileges

创建任务:常规

切换到Triggers顶部的选项卡并单击New...。将Begin the task:组合框切换到At Startup然后左键单击确定:

新扳機

切换到Actions顶部的选项卡并单击鼠标左键New...。单击浏览(执行不是尝试手动输入此内容,您会感到头疼)并导航到C:\Program Files\Oracle\VirtualBox。突出显示VBoxManage.exe并单击左键Open

浏览到 VBoxManage

复制所有内容除了可执行文件和引号从Program/script:into Start in (optional):

复制目录路径

最后,输入以下行Add arguments (optional):并点击确定:

startvm "YourVirtualMachineNameFromStep1" --type headless

就我而言,我将使用:

startvm "WindowsXPSP3" --type headless

输入参数

我的Conditions标签一般设置如下:

条件选项卡

确保您的Settings选项卡如下所示,但绝对确保您已将标记为黄色的项目设置为与我的一致。这将确保如果某些先决条件尚未准备好,它将重试几次以启动虚拟机,并且虚拟机不会在 3 天后终止。除非您知道自己在做什么,否则我会将其他所有内容保留为默认设置。如果您不按照我在此处展示的方式操作,并且最终无法正常工作,那就是您的问题:

“设置”选项卡

最后,点击窗口底部的“确定” Create Task您已完成!

测试解决方案

测试上述模拟场景(以及如何测试你的模拟场景)

当我重新启动计算机时,我可以登录并打开 VirtualBox 管理器并看到我的虚拟机正在运行:

正在运行虚拟机

我还可以打开任务计划程序备份,并验证它是否成功运行,或者如果没有成功运行,请查看错误是什么(大多数错误都是目录错误,因为人们试图手动输入我告诉他们不要输入的地方):

任务计划程序成功

测试我的实际用例

在另一台机器上,我将 Linux 服务器设置为虚拟机,并配备自己的原始固态硬盘。我希望该服务器在机器重新启动(崩溃、Windows 更新等)时自动重新启动,而无需用户登录。我完全按照上述说明设置了该服务器,然后重新启动了该机器。我知道它成功运行了,因为我能够从另一台计算机访问我的 Samba 共享(外行人:一个包含我通过网络与其他计算机共享的内容的文件夹)没有首先登录运行服务器虚拟机的机器。这 100% 确认它确实在系统启动时启动,而不是在用户登录后启动。

答案2

启动目录仍然存在,尽管是在一个很隐蔽的地方......

通过打开“运行”框(Win+R)并输入来访问

shell:startup

现在将其最小化。

打开 VirtualBox 并右键单击要自动启动的 VM,单击在桌面上创建快捷方式的选项并关闭 VirtualBox。

只需从桌面剪切快捷方式并将其粘贴到之前打开的文件夹中即可应该一切都很好。

答案3

现在,您实际上可以无头启动虚拟机,而无需借助第三方 VBoxVmService。只需创建一个快捷方式<VirtualBoxDirectory\VBoxManage.exe> startvm "vmname" --type headless并将其放在启动文件夹中即可。

来自VirtualBox 手册

答案4

虽然有服务固然很好,但您也可以使用计划任务来实现。以系统启动为触发器,选中无需登录用户即可运行任务的选项,并将操作设置为<VirtualBoxDirectory\VBoxManage.exe> startvm "vmname" --type headless。确保从难以理解的默认选项“如果运行超过 3 天则终止任务”中删除勾选。Srsly,MS,您怎么想的,没有一台 Windows 计算机可以在不重启的情况下运行这么长时间?

需要注意的是:如果虚拟机在启动时以这种方式启动,您将在 VirtualBox 管理器中看到它显示为“已关闭”,因此没有按钮显示虚拟机的显示。只有“启动”按钮,当您尝试双重启动它时,您可能会搞砸一切。

您可以定义一个远程显示端口,这样您就可以通过 RDC(mstsc.exe)访问虚拟机的控制台,而无需 VirtualBox 管理器,但您仍然必须记住不要相信“已关闭”信息。我不知道这是否对实际服务更有效。

相关内容