Eu queria a mesma coisa e acabei resolvendo sem usar o guestcontrol. No meu host do MacOS X, tenho uma pasta (chamada Windows) que meu cliente vbox executando um Win7 mapeou como Z :. Eu uso arquivos fictícios para me comunicar entre o host e meus clientes assim:
No host do Mac: - criei um shell-script completo com um ícone para cada aplicativo do Windows que eu queria iniciar no Win-client. O que eles basicamente fazem é garantir que o VirtualBox não tenha sido iniciado antes e, em seguida, crie um arquivo "iniciar este aplicativo específico" na pasta compartilhada que o Windows pode ler após a inicialização. Exemplo de como esse script se parece é este:
#!/bin/bash
# bail if vbox is already started/running windoze...
ps ax | grep -v grep | grep 'Windows 7' > /dev/null
if [ $? -eq 0 ]; then
echo "Sorry, Windows is already running."
exit 0
fi
# send a message to Windoze which program to start...
touch /Users/urban/Documents/Windows/START_TS2000I.TXT
# startup Windoze in seamless mode
vboxmanage setextradata 'Windows 7' GUI/Seamless on
vboxmanage startvm 'Windows 7' &
exit 0
Em seguida, no cliente Windows, tenho um script correspondente (arquivo BAT) na pasta Inicialização, semelhante a este:
@echo off
pushd "C:\Program Files\Omega Research\Program"
if exist Z:\start_ts2000i.txt start ORTrade.exe
if exist Z:\start_ts2000i.txt del Z:\start_ts2000i.txt
.
.
.
exit 0
Dessa forma, sempre que eu quiser adicionar um novo ícone de inicialização do cliente no meu Mac, copio o script de shell, invento um novo arquivo fictício e adiciono as linhas de inicialização correspondentes no script BAT do cliente. Funciona muito bem e acho que está de acordo com a ideia de Martys no post anterior.