在 Windows 启动时启动 VirtualBox 和 VM

Posted

技术标签:

【中文标题】在 Windows 启动时启动 VirtualBox 和 VM【英文标题】:Start VirtualBox and VM in windows boot 【发布时间】:2018-02-08 20:20:15 【问题描述】:

我在 Windows Server 2016 中运行 VirtualBox。我想在 Windows 启动时同时启动 VirtualBox 和其中的 VM。我看过一些关于在 Windows 启动时启动 VB 的帖子,但我还没有让它工作。即使我这样做了,也不会自动启动虚拟机。我觉得一定有办法做到这一点,但数小时的谷歌搜索还没有找到方法。

【问题讨论】:

【参考方案1】:

我有一个如何在 Windows 启动期间自动启动 VirtualBox VM 的示例。我运行的是 Windows 10,但在 Windows Server 2016 上应该不会有太大的不同。

我系统上的启动文件夹是:

C:\Users\chriwill\AppData\Roaming\Microsoft\Windows\开始菜单\程序\启动

在该文件夹中,我放置了一个批处理文件kubuntu.bat,其内容如下:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm kubuntu --type headless

在我的示例中,VM 被命名为 kubuntu。您必须为您的实例更改它。

插件:

如果您需要帮助来查找 Windows 实例上的启动文件夹,请按键 WINDOWS+R 并输入 shell:startup

参考:https://www.virtualbox.org/manual/ch08.html#vboxmanage-startvm

【讨论】:

当 Windows 关闭或重新启动时,VM 是否正常关闭? 我发现当我正确反弹或终止主机箱时,VM 会正确关闭(嘿,那里有两个词),是的。主要障碍是之后启动时(重新)启动。 我同意@DeeJayh,但是他提供的链接似乎是错误的。【参考方案2】:

对我有用的是。

    创建快捷方式。 打开虚拟盒子 突出显示您要启动的虚拟机 点击“机器”->“在桌面上创建快捷方式” 添加到 Windows 启动 开始 -> 运行 输入“shell:startup” 在此处复制和粘贴快捷方式。

【讨论】:

它很好,如果这可以变成无头,那就太棒了。【参考方案3】:

Oracle VirtualBox 6.1.16 支持automatic startup via a windows service,无需第三方脚本或软件。这些是我遵循的步骤。在整个过程中将我的登录名替换为您的登录名。

    C:\Users\Tim\.VirtualBox\autostart.properties 中创建配置文件:
    # Default policy is to deny starting a VM, the other option is "allow".
    default_policy = deny
    
    # Bob is allowed to start virtual machines but starting them
    # will be delayed for 10 seconds
    Tim = 
        allow = true
        startup_delay = 10
    
    
    
    VBOXAUTOSTART_CONFIG 添加环境变量并将其设置为C:\Users\Tim\.VirtualBox\autostart.properties。 从管理 Powershell 创建自动启动服务:
    cd "C:\Program Files\Oracle\VirtualBox"
    .\VBoxAutostartSvc.exe install --user=Tim
    .\VBoxManage.exe modifyvm "Peppermint x64" --autostart-enabled on
    
    Services 应用中找到VirtualBox Autostart Service tim@tim-pc 服务。 确保服务登录名是您上面配置的本地登录名。 确保已启用自动启动。 启动服务。 在应用程序日志下检查 Windows Event Viewer 应用程序中的错误。错误说明位于“详细信息”标签下。

【讨论】:

我的 VirtualBox 目录中似乎缺少 VBoxAutostartSvc.exe 二进制文件。有什么指点吗?【参考方案4】:

您可以使用NSSM为其创建服务,例如:

打开cmd

cd /d A:\programs\nssm-2.24\win64 
nssm.exe install  kubuntu

填写表格:

# Application Tab

 Application Path:   C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
Startup directory:   C:\Program Files\Oracle\VirtualBox
        Arguments:   startvm "kubuntu" --type headless


# Details Tab
    Display name:  kubuntu

点击安装服务,完成。

【讨论】:

【参考方案5】:

我需要一个作为服务运行的虚拟机——在用户第一次登录之前就可以从网络获得——所以fanxings' answer 几乎是一个理想的解决方案。

问题是 VBoxManage 启动虚拟机,然后简单地退出。所以服务管理器尝试再次运行它。然后再次。又一次……

我用一个小批处理文件解决了这个问题:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm zztop --type headless
pause

该批处理文件随后使用nssm 作为服务安装。这解决了使用 GUI 关闭虚拟机的问题——例如用于更改配置,并防止在系统日志中显示多条错误消息。

【讨论】:

【参考方案6】:

计划任务。在操作下,程序/脚本

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"

根据参数

startvm Pihole --type headless

【讨论】:

【参考方案7】:

解决方案:

如果不对您的系统使用第三方包装器(阅读:另一个故障点),就不可能做到您要求的服务。但是,您可以通过任务计划程序轻松地将其实现为任务,该任务计划程序在您的系统每次启动/启动之前用户登录时运行在。

可以在我的回答中找到相关信息: https://***.com/a/67305645/5387389

【讨论】:

【参考方案8】:

添加计划任务是一个不错的选择。如何加热有很多选择。

无论用户登录如何,您都可以选择在启动时运行任务。

【讨论】:

【参考方案9】:

如果您想在不登录系统的情况下运行虚拟机,您可以使用VBoxVmService 实用程序,该实用程序以无头模式将一台或多台虚拟机作为 Windows 服务运行,并在启动时自动启动它们。

【讨论】:

以上是关于在 Windows 启动时启动 VirtualBox 和 VM的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 启动时启动 VirtualBox 和 VM

如何在 Windows 启动时启动应用程序?

XAMPP 在 Windows 7 启动时自动启动

如何编写一个在windows启动时自动启动的python程序?

windows启动时如何启动xampp v3.2.1自动启动?

为啥 Windows 总是启动? [关闭]