QEMU:在前台执行客户程序

QEMU:在前台执行客户程序

我使用 QEMU 在 Ubuntu 主机上运行 Windows 10 虚拟机 (VM)。我的目标是通过编程指示 VM 在前台运行特定的 GUI 程序,就像用户启动了该程序一样。

Windows 客户机已安装客户机代理。在主机上,我可以执行

virsh qemu-agent-command win10_vm "{\"execute\": \"guest-exec\", \"arguments\": { \"path\": \"notepad.exe\", \"arg\": [], \"capture-output\": true}}"

我从任务管理器中看到 notepad.exe 在后台执行。但是,我更希望 GUI 能够打开。

我到目前为止没有成功的尝试:

  • 在 Windows 客户机上,以用户身份运行客户机代理服务。
  • 对于 qemu-agent-command,将执行路径从 更改为notepad.exestart notepad.exe但命令失败并出现错误。

有人知道如何指示虚拟机在前台运行程序吗?

答案1

(抱歉重新发帖,我之前发过帖子,但完全搞错了,是我的错误)

原因是,默认情况下,Qemu-GA 服务在会话 0 上以 SYSTEM 用户身份运行,因为 Windows XP 中,会话 0 与 UI 会话是隔离的。安全原因

您可以使用以下方法绕过此问题执行切换到用户的互动服务。

要获取分步说明,请按照以下步骤操作:

  1. 打开 services.msc,找到 Qemu-GA,在其登录选项卡上,选择以特定用户身份运行,并启用桌面访问。停止,然后启动该服务。
  2. 下载并将 psexec 解压到 C:\psexec.exe(或您选择的任何其他路径)
  3. 您现在可以使用以下命令以用户身份启动 UI。

qm guest exec 100 -- C:\\psexec.exe -accepteula -i 1 notepad.exe(用于 proxmox)

virsh -c qemu:///system qemu-agent-command win10_vm "{\"execute\": \"guest-exec\", \"arguments\": { \"path\": \"C:\\\\Users\\\\matt\\\\Downloads\\\\PSTools\\\\PsExec.exe\", \"arg\": [\"-accepteula\", \"-i\", \"1\", \"notepad.exe\"], \"capture-output\": true}}"(针对 libvirt)

相关内容