TVG*_*TVG 5 command-line virtualbox guest-additions 23.04 23.10
我设法使用以下命令从 Ubuntu 23.04 主机在 Windows 10 来宾虚拟机上打开计算器:
VBoxManage guestcontrol $MY_VM_NAME run --exe "C:\\Windows\\System32\\calc.exe" --username $MY_USERNAME --password $MY_PASSWORD
Run Code Online (Sandbox Code Playgroud)
但是,当对WordPad、Microsoft Office 应用程序或Adobe Acrobat Reader执行相同操作时,它不起作用:
VBoxManage guestcontrol $MY_VM_NAME run --exe "C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe" --username $MY_USERNAME --password $MY_PASSWORD
Run Code Online (Sandbox Code Playgroud)
注:run并start给出相同的结果。
在Ubuntu主机上,当我执行最后一个命令时,光标闪烁并且提示符从未返回。在 Windows 10 VM 中,查看任务管理器,我注意到应用程序(本例中为写字板)出现在后台进程列表中。当我尝试使用相同的命令执行我已转换为 .exe 文件而不是应用程序的个人脚本时,我习惯在来宾 Windows“终端”中看到的输出出现在主机 Ubuntu 终端中(请参阅下面的测试部分)。这就像guestcontrol进程尝试将应用程序的输出重定向到主机一样。但是,我不知道为什么打开计算器时没有问题。
使用该--verbose选项返回:
$ VBoxManage guestcontrol $MY_VM_NAME start --verbose --exe "C:\\Windows\\System32\\calc.exe" --username $MY_USERNAME --password $MY_PASSWORD
Executing:
Image : C:\Windows\System32\calc.exe
arg[0]: C:\Windows\System32\calc.exe
Creating guest session as user 'toto'...
Waiting for guest session to start...
Successfully started guest session (ID 8)
Starting guest process ...
[1284 - Session 8]
Wait result is 'started' (1)
Process successfully started!
Guest session detached
$ VBoxManage guestcontrol $MY_VM_NAME start --verbose --exe "C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe" --username $MY_USERNAME --password $MY_PASSWORD
Executing:
Image : C:\Program Files\Windows NT\Accessories\wordpad.exe
arg[0]: C:\Program Files\Windows NT\Accessories\wordpad.exe
Creating guest session as user 'toto'...
Waiting for guest session to start...
Successfully started guest session (ID 9)
Starting guest process ...
[8812 - Session 9]
Wait result is 'started' (1)
Process successfully started!
Guest session detached
Run Code Online (Sandbox Code Playgroud)
我对 VirtualBox v6.1 和 v7.0 都得到了相同的结果。我还尝试过使用从Win10_21H2_English_x64.iso和创建的虚拟机Win10_22H2_English_x64v1.iso。但是,无论 VirtualBox 的版本如何,如果我使用Ubuntu 22.04,那么它都可以完美运行。
编辑 1: Ubuntu 23.10上的行为与Ubuntu 23.04上的行为完全相同。
编辑2: VirtualBox v7.0.12问题仍然存在。
我创建了一个 HelloWorld 脚本,并将其转换为客户机上的可执行文件。楼主,当我这样做的时候
toto@toto-pc:~$ VBoxManage guestcontrol $MY_VM_NAME run --exe "C:\\Users\\Toto\\Desktop\\runapp\\runHello.exe" --username $MY_USERNAME --password $MY_PASSWORD
Hello, World!
toto@toto-pc:~$
Run Code Online (Sandbox Code Playgroud)
请注意“你好,世界!” 显示在我的主机而不是访客的终端中。
这个答案只是提供信息,并不旨在成为问题的完整解决方案......尽管,它可能是。
该实用程序有两个相似的命令guestcontrol,run但略有不同......来自VBoxManage guestcontrolstart的文档:
在来宾上运行命令
VBox管理访客控制 运行 [--arg0=参数 0] [--domain=域名] [--dos2unix] [--exe=文件名] [--忽略孤立进程] [ --no-wait-stderr | --wait-stderr ] [ --no-wait-stdout | --wait-stderr ] [ --no-wait-stdout | --wait-stderr ] --wait-stdout ] [ --passwordfile=密码文件 | --wait-stdout ] --password=密码] [--profile] [--putenv=var-name=[值]] [--quiet] [--timeout=msec] [--unix2dos] [--unquoted-args] [--username=用户名] [--verbose]VBoxManage guestcontrol vmname run命令使您能够在来宾 VM 上执行程序。标准输入、标准输出和标准错误从虚拟机重定向到主机系统,直到程序完成。
... 和:
在来宾上启动命令
VBoxManage guestcontrol start [--arg0=参数 0] [--domain=域名] [--exe=文件名] [--忽略孤立进程] [ --passwordfile=密码文件 | --password=密码] [--profile] [--putenv=var-name=[值]] [--quiet] [--timeout=msec] [--unquoted-args] [--username=用户名] [--verbose]VBoxManage guestcontrol vmname start命令使您能够执行来宾程序直至其完成。
...因此,正如您所看到的,您应该使用后者(即)start,因为前者将保持来宾进程的标准 I/O 流打开并将它们重定向到主机上的终端(或更准确地说连接它们),从而导致一些应用程序在启动之前可以接受/期望输入,就像在“写字板”的情况下要打开的文件参数一样,继续等待,而不是完全加载并保持主机终端中的提示......而像“计算器”这样的简单应用程序似乎不知道这些 I/O 流,会立即断开它们的连接并启动(即,就主机上的进程所知,来宾上的命令已终止,并且 I/O 流已终止)断开连接,因此终端中的提示被释放并恢复)。
有限制... Windows 操作系统对图形应用程序施加了某些限制。请参阅第 14 章,已知限制...其中包括:
宾客控制。在 Windows 来宾上,使用来宾控制执行支持启动的进程将无法显示图形用户界面,除非运行该进程的用户帐户当前已登录并具有桌面会话。
... 和:
此外,要使用没有或有空密码的帐户,必须更改访客的组策略。为此,请在命令行上键入 来打开组策略编辑器
gpedit.msc,打开计算机配置\Windows 设置\安全设置\本地策略\安全选项项,然后更改帐户的值:限制本地帐户使用空白密码进行控制台登录仅限残疾人。
...以及其他可能导致影响 GUI 应用程序问题的实验性功能:
某些 Oracle VM VirtualBox 功能被标记为实验性的。此类功能按“原样”提供,未得到正式支持。不过,欢迎提供有关此类功能的反馈和建议。实验功能的综合列表如下:
针对 Windows、Linux 和 Oracle Solaris 客户机的硬件 3D 加速支持
Windows 虚拟机的硬件 2D 视频播放加速支持
ICH9芯片组仿真
电喷固件
在同一主机上使用 Oracle VM VirtualBox 和 Hyper-V
使用可用选项--verbose查看实际发生的情况(来宾端的报告可能会受到 Windows 选择报告或不报告的内容的限制),例如:
VBoxManage guestcontrol $MY_VM_NAME start --verbose \
--exe "C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe" \
--username $MY_USERNAME --password $MY_PASSWORD
Run Code Online (Sandbox Code Playgroud)
该问题来自VirtualBox Guest Additions v7。降级到v6版本解决问题。
VBoxGuestAdditions_6.1.48.iso。~/.config/VirtualBox/.VBoxWindowsAdditions.exe按说明安装 VirtualBox Guest Additions v6.1.48。VirtualBox Guest Additions v7 似乎都不起作用。然后,由于只有 VirtualBox Guest Additions v6 可以工作,因此最好也使用 VirtualBox v6 而不是 VirtualBox v7。
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |