Как сохранить состояние виртуальной машины гостевой ОС VirtualBox при выходе из системы на хосте Windows?

793
Pak

Я использую гостевую ОС Ubuntu VM в автономном режиме на хосте Windows 7. Я написал пакетный скрипт, который использует VBoxManage для запуска или сохранения состояния виртуальной машины на основе переданного аргумента. Я могу нормально запустить ВМ, поставив ярлык на скрипт в моей папке автозагрузки, но у меня возникают проблемы с приостановкой ВМ при выходе из системы.

Я пробовал несколько разных методов:

  1. Создание записи сценариев выхода пользователя из системы в редакторе локальной групповой политики (gpedit.msc) запускает мой сценарий, но процесс VBoxManage сообщает, что виртуальная машина не работает. Я предполагаю, что процесс выхода из системы убивает виртуальную машину, прежде чем мой сценарий сможет добраться до нее.
  2. Создание задачи с помощью планировщика задач, которое запускается при событии 7002, которое, как мне сказали, является событием выхода из системы, запускает сценарий, но VBoxManage сообщает следующее:

VBoxManage.exe: ошибка: не удалось создать объект VirtualBox!

VBoxManage.exe: ошибка: код E_ACCESSDENIED (0x80070005) - ошибка общего доступа запрещена (расширенная информация недоступна)

VBoxManage.exe: ошибка: Скорее всего, COM-сервер VirtualBox не запущен или не запустился.

Есть ли лучший способ автоматически приостановить состояние виртуальной машины при выходе из Windows?


Содержание пакетного скрипта:

@echo off  setlocal  rem list of VMs to start/stop set vm_list=Ubuntu  set action=%1 if not "%action%" == "start" if not "%action%" == "stop" exit /B  set command="C:\Program Files\Oracle\VirtualBox\VboxManage.exe" set logfile="C:\bin\vm_log.txt"  if exist %logfile% echo.>> %logfile%  echo %date% %time%>> %logfile%  for %%A in (%vm_list%) do ( if "%action%" == "start" ( echo Starting %%A>> %logfile% 2>&1 %command% startvm %%A --type headless >> %logfile% 2>&1 ) else if "%action%" == "stop" ( echo Suspending %%A>> %logfile% 2>&1 %command% controlvm %%A savestate >> %logfile% 2>&1 )  )  endlocal 

У меня есть перенаправление команд, на vm_log.txtкоторые я могу посмотреть сообщения, о которых было сообщено.

0
Сможете ли вы опубликовать свой пакетный скрипт? Похоже, что сам VirtualBox отключился до того, как скрипт сможет выполнить команду сохранения снимка / состояния? JakeGould 8 лет назад 0
Я разместил содержимое скрипта по вашему запросу. Я предполагаю, что оба метода, которые я попробовал, отключили VirtualBox до запуска моего скрипта. Pak 8 лет назад 1

0 ответов на вопрос