Я пытаюсь запустить виртуальную машину VirtualBox в фоновом режиме из службы. У меня проблемы с запуском процесса так, как я хочу. Я хотел бы запустить гостя виртуального бокса в безголовом режиме как отдельный процесс и ничего не показывать, кроме графического интерфейса.
Вот что я пробовал:
Из командной строки:
запустите 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.
На случай, если кто-то снова столкнется с этой проблемой, вот что я делаю для этого ...
start-process "vboxheadless" "-s ubuntu" -WindowStyle Hidden
либо поместите его в сценарий PowerShell, либо введите в окно консоли PowerShell. Вы можете создать ярлык или псевдоним и т. Д.
Мне недавно удалось это сделать Вот. Решение не очень хорошее: мне не нравится разработка под Windows ... но работает, что еще можно пожелать? :))