Existem algumas limitações dos convidados do Windows, mas para executar um aplicativo convidado no modo contínuo a partir de um script que pode ser colocado em um iniciador, testamos o seguinte procedimento:
- Inicie o VirtualBox Manager
- Entre nas janelas com seu usuário e senha
- Mudar para o modo contínuo Host+L
- No modo sem costura, salve o estado da máquina
Agora podemos obter controle total da linha de comando sobre a máquina virtual com os seguintes comandos:
Inicie a máquina virtual a partir do estado de salvamento contínuo
VBoxManage startvm "<Name_of_VM>"
ou (para o front-end do Qt)
VirtualBox --startvm "<Name_of_VM>"
Execute um aplicativo na VM
VBoxManage --nologo guestcontrol "<Name_of_VM>" run --exe "C:\\full\\path\\to\\program.exe" --username windowsuser --password password --wait-stdout
Encerrar a VM no estado de salvamento
VBoxManage controlvm "Name_of_VM" savestate
Coloque-os em um script para aproveitar as janelas perfeitas dos aplicativos Windows na área de trabalho do Ubuntu.
Caso você tenha configurado um logon sem senha do Windows, isso não funcionará. Veja no Manual da Caixa Virtual as limitações e como configurar o Windows para fazê-lo funcionar.
Além disso, para usar contas sem ou com uma senha vazia, a política de grupo do convidado deve ser alterada. Para fazer isso, abra o editor de política de grupo na linha de comando, digitando gpedit.msc , abra a chave Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
e altere o valor Accounts: Limit local account use of blank passwords to console logon only
para Desativado.
Em sistemas operacionais sem o Editor de Diretiva de Grupo (gpedit.msc), como as edições Home do Windows, criar um DWORD na chave do Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduse
e defini-lo como zero obterá o mesmo efeito, de acordo com esta resposta .
Isso é mais uma dica do que uma resposta, mas é grande demais para um comentário.
Você provavelmente deveria olhar para isso . De acordo com a documentação, esse comando é executado no sistema operacional host (suponho que seja um host do Ubuntu e um convidado do Windows):
Deve abrir o regedit no Windows (o convidado), mas nunca consegui fazê-lo funcionar.
Você também pode usar
para verificar se uma VM está em execução ou não.
fonte
VBoxManage guestcontrol Windows\ XP exec --image c:\\program\ files\\quicken\\qw.exe --username XXXXX --password XXXXX
onde XXXXX era meu nome de usuário e senha.Excluí a idéia original quando percebi que ela não funcionaria porque o Linux não conseguiria acessar a partição do Windows em uma VM se ela ainda não estiver em execução. Pode haver uma maneira mais complexa de fazê-lo, mas não sei se realmente vale a pena.
Pode ser possível ter um diretório compartilhado comum, e um script no Windows sempre verifica esse diretório para ver se está vazio ou não. Caso contrário, ele executaria os scripts no diretório, que seriam colocados pelo sistema Ubuntu antes de executar a VM.
Você pode ter um segundo script que exclui o primeiro, para que não seja executado na próxima vez.
fonte
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:
Em seguida, no cliente Windows, tenho um script correspondente (arquivo BAT) na pasta Inicialização, semelhante a este:
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.
fonte
pgrep
vez deps | grep
. Este último corre o risco de se corresponder.MacMini:~ urban$ ps ax | grep -v grep | grep 'Windows 7' 10874 ?? R 4:38.49 /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM --comment Windows 7 --startvm 24507412-789d-42ed-9c79-b4faf0c2d130 --no-startvm-errormsgbox
mas talvez você tenha uma sugestão sobre isso?