我正在尝试通过服务在后台运行 VirtualBox VM。我无法按照自己想要的方式启动进程。我想以无头模式启动 VirtualBox 客户机作为单独的进程,并且在 GUI 上不显示任何内容。
这是我尝试过的:
从命令行:
启动 vboxheadless -s“Ubuntu 服务器”
在 C# 中:
ProcessStartInfo info = new ProcessStartInfo
{
UseShellExecute = false,
RedirectStandardOutput = true,
ErrorDialog = false,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
FileName = "C:/program files/sun/virtualbox/vboxheadless",
Arguments = "-s \"Ubuntu Server\""
};
Process p = new Process();
p.StartInfo = info;
p.Start();
String output = p.StandardOutput.ReadToEnd(); //BLOCKS! (output stream isnt closed)
我希望能够通过输出来了解服务器是否启动成功。但是,生成的窗口似乎从未关闭其输出流。
还值得一提的是,我尝试使用 vboxmanage startvm "Ubuntu Server" --type=vrdp。我可以使用此命令确定服务器是否正确启动。但它会为新启动的 VirtualBox 客户机显示一个新的命令提示符窗口。
答案1
为了防止有人再次遇到这种情况,以下是我所采取的措施......
start-process "vboxheadless" "-s ubuntu" -WindowStyle Hidden
要么将其放入 powershell 脚本中,要么在 powershell 控制台窗口中输入。您可以创建快捷方式或别名等。
答案2
我最近成功做到了这里。解决方案不是很好:我不喜欢 Windows 开发。。但它有效,你还想要什么?:))