参考:从 Ubuntu 桌面启动 Windows 中的应用程序
我想知道 Takkat 是否可以详细说明脚本文件中的实际执行方式。
这将非常有帮助。提前致谢
我的脚本文件 InternetExplorerVM.sh 看起来像这样,执行是
/path/to/InternetExplorerVM.sh "C:\Program Files\Internet Explorer\iexplore.exe"
#!/bin/bash
# start Internet Explorer inside of a Windows7 Ultimate VM
echo "Starting 'Internet Explorer' browser inside Windows7 virtual machine"
echo ""
sleep 1
echo "Please be patient"
VBoxManage startvm b307622e-6b5e-4e47-a427-84760cf2312b
sleep 15
echo ""
echo "Now starting 'Internet Explorer'"
##VBoxManage --nologo guestcontrol b307622e-6b5e-4e47-a427-84760cf2312b execute --image "$1" --username RailroadGuest --password bnsf1234
VBoxManage --nologo guestcontrol b307622e-6b5e-4e47-a427-84760cf2312b execute --image "C:\\Program/ Files\\Internet/ Explorer\\iexplore.exe" --username RailroadGuest --password bnsf1234 --wait-exit --wait-stdout
echo ""
echo "Saving the VM's state now"
VBoxManage controlvm b307622e-6b5e-4e47-a427-84760cf2312b savestate
sleep 2
#Check VM state
echo ""
echo "Check the VM state"
VBoxManage showvminfo b307622e-6b5e-4e47-a427-84760cf2312b | grep State
exit
如有错误,我深表歉意,这是我第一次在 askubuntu 上发帖。提前致谢。这非常有帮助。BNSF 客人需要这个,他们的大型机模拟器专门在支持 Java 的 Internet Explorer 上运行。
答案1
他基本上是说你可以这样做:
- 创建一个虚拟机,例如 Windows 虚拟机。
- 登录虚拟机。
- 将虚拟机切换到“无缝”模式
- 在 Virtual Box 主窗口中保存虚拟机的状态。
- 使用命令创建一个 bash 脚本
VBoxManage
,以便您可以执行类似以下操作./runinwindows "C:\\some\\path\\executable.exe"
例如:
#!/bin/bash
# Start the VM
VBoxManage startvm "<Name_of_VM>"
# Run the executable
VBoxManage --nologo guestcontrol "<Name_of_VM>" execute --image "$1" --username windowsuser --password password --wait-exit --wait-stdout
# Save the current machine state for the next time you run the script.
VBoxManage controlvm "Name_of_VM" savestate
然后您可以在终端中运行 Windows 可执行文件(在本例中),但它实际上是在虚拟机中运行。
答案2
我写脚本使用 VBoxManage 控制虚拟机。您可以使用如下脚本执行命令:
./vmcontrol.sh -m [VMName] [Your Command]
剧本:
#!/bin/bash
#Creation du script vmcontrol.sh
function execute
{
vmname=\$1;
command=\$2;
shift 2;
VBoxManage --nologo guestcontrol \$vmname execute --image \$command --username root --password root --wait-exit --wait-stdout --wait-stderr -- \$@ 2>&1 ;
}
param=\$1;
#Execution d'une commande
if [ \$param = "-e" ]
then
command=\$2;
shift 1;
execute "Xubuntu" \$@ ;
#Execution d'une commande dans une vm donnée
elif [ \$param = "-m" ]
then
vmname=\$2;
command=\$3;
shift 1;
execute \$@
#Allumer une machine virtuelle donnée
elif [ \$param = "-s" ]
then
vmname=\$2;
VBoxHeadless --startvm \$vmname;
elif [ \$param = "-c" ]
then
vmname=\$2;
VBoxManage clonevm Xubuntu --mode machine --name \$vmname --basefolder /home/VMs --register ;
elif [ \$param = "-r" ]
then
vmname=\$2;
VBoxManage unregistervm \$vmname --delete ;
elif [ \$param = "-vbox" ]
then
startx virtualbox;
elif [ \$param = "-i" ]
then
vmname=\$2;
if [ \$vmname = "vms" ]
then
VBoxManage list vms
elif [ \$vmname = "runningvms" ]
then
VBoxManage list runningvms
else
#Erreur
echo "error in commmande";
fi
elif [ \$param = "-sv" ]
then
vmname=\$2;
VBoxManage startvm \$vmname ;
elif [ \$param = "-p" ]
then
vmname=\$2;
VBoxManage controlvm \$vmname acpipowerbutton;
else
#Erreur
echo "error in commmande";
fi