Vb.net VirtualBox API iGetSession状态始终返回“0”;“开始”;,启动来宾操作系统时
我尝试运行VirtualBox来宾操作系统(Debian)并使用VB.net执行脚本 到目前为止,一切都很正常,我可以启动虚拟机,登录它,然后执行脚本。但前提是我手动等待足够长的时间,以便在来宾操作系统中启动Vbox来宾服务 我可以通过VB.net查询iGetSession状态,但在操作系统启动时,我总是得到错误的状态(已启动) 在这里,您可以看到启动VM的代码:Vb.net VirtualBox API iGetSession状态始终返回“0”;“开始”;,启动来宾操作系统时,vb.net,api,sdk,virtualbox,vbox,Vb.net,Api,Sdk,Virtualbox,Vbox,我尝试运行VirtualBox来宾操作系统(Debian)并使用VB.net执行脚本 到目前为止,一切都很正常,我可以启动虚拟机,登录它,然后执行脚本。但前提是我手动等待足够长的时间,以便在来宾操作系统中启动Vbox来宾服务 我可以通过VB.net查询iGetSession状态,但在操作系统启动时,我总是得到错误的状态(已启动) 在这里,您可以看到启动VM的代码: Dim machine As IMachine = virtualBox.FindMachine("Debian"
Dim machine As IMachine = virtualBox.FindMachine("Debian")
Dim arr As Array
Dim progress As IProgress = machine.LaunchVMProcess(session, "gui", arr)
progress.WaitForCompletion(60000)
一切正常,虚拟机启动
不,我有一个按钮,可以用以下代码启动访客会话:(用于测试目的)
如果我在虚拟机启动后立即按下按钮(显示VirtualBox徽标)
我得到以下输出:
来自guestWaitResults:“GuestSessionWaitResult\u WaitFlagNotSupported”
来自guestsession状态:“GuestSessionStatus\u已启动”
如果我在大约20秒后按下按钮进行测试(当我从来宾操作系统收到登录提示时),我会得到以下信息:
From guestWaitResults:引发“等待来宾进程失败:来宾执行服务未就绪(尚未)”错误
来自guestsession状态:“GuestSessionStatus\u错误”
如果我在大约60秒后按下按钮进行测试(Guest完全启动),我会得到以下输出:
来自guestWaitResults:“GuestSessionWaitResult_Start”
来自guestsession状态:“GuestSessionStatus\u已启动”
我能够在客户机上执行一个流程
我不知道为什么在启动时会发生这种情况。据我对SDK的理解,我只需要等待“guestsession Wait for Start”。或者我可以循环“guestsession.status”并等待它返回“Started”
因此,在我看来,当来宾启动时,API调用返回了一个错误的值,或者我误解了什么?或者我是否能够以另一种方式获取来宾服务的状态,以便在操作系统启动和来宾服务运行时立即执行脚本sa
我正在Windows 10上运行VirtualBox 6.1.18
非常感谢您的帮助
谢谢
Dim console As IConsole = session.Console
Dim guest As IGuest = console.Guest()
Dim guestsession As IGuestSession = guest.CreateSession("root", "password", "", "")
Dim guestWaitResults = guestsession.WaitFor(GuestSessionWaitForFlag.GuestSessionWaitForFlag_Start, 0)
MsgBox(guestWaitResults.tostring)
MsgBox(guestsession.Status.ToString)