Como salvar o estado de uma VM do SO do VirtualBox em um logout do host do Windows?

0

Estou executando um sistema operacional convidado do Ubuntu VM no modo sem cabeça em um host do Windows 7. Eu escrevi um script em lote que usa VBoxManage para iniciar ou salvar o estado da VM com base no argumento passado. Eu posso começar a VM muito bem colocando um atalho para o script na minha pasta de inicialização, mas estou tendo problemas para fazer com que a VM seja suspensa no logout.

Eu tentei alguns métodos diferentes:

  1. A criação de uma entrada de scripts de logoff de usuário no Editor de Diretiva de Grupo Local (gpedit.msc) executa meu script, mas o processo VBoxManage informa que a VM não está em execução. Presumo que o processo de logout esteja eliminando a VM antes que meu script possa chegar a ela.
  2. A criação de uma tarefa pelo Agendador de Tarefas que é acionado no evento 7002, que é o evento de logoff, executa o script, mas o VBoxManage relata o seguinte:

VBoxManage.exe: error: Failed to create the VirtualBox object!

VBoxManage.exe: error: Code E_ACCESSDENIED (0x80070005) - General access denied error (extended info not available)

VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start.

Existe alguma maneira melhor de suspender automaticamente o estado de uma VM ao fazer logoff do Windows?

O conteúdo do script em lote:

@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

Eu tenho a saída dos comandos redirecionados para vm_log.txt , que é como eu posso ver as mensagens que foram relatadas.

    
por Pak 08.09.2015 / 17:55

0 respostas