Vb.net VirtualBox API iGetSession状态始终返回“0”;“开始”;,启动来宾操作系统时

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"

我尝试运行VirtualBox来宾操作系统(Debian)并使用VB.net执行脚本

到目前为止,一切都很正常,我可以启动虚拟机,登录它,然后执行脚本。但前提是我手动等待足够长的时间,以便在来宾操作系统中启动Vbox来宾服务

我可以通过VB.net查询iGetSession状态,但在操作系统启动时,我总是得到错误的状态(已启动)

在这里,您可以看到启动VM的代码:

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)