Hi
Danke für das interessante Projekt. Bei mir gabe es bisher folgende Probleme:
1. Programmabbruch bei allen Val(..)-Kommandos
Das Problem konnte schnell durch das Austauschen von Val(..) gegen CStr(..) behoben werden (wir verwenden in Deutschland das Komma zum Separieren der Dezimalen).
2. Programabbruch durch Parser
Das Programm brach ab, weil der Parser in GetBoxes() meine Kali VBox-Appliance nicht richtig verarbeitete. Das lag an der abweichenden Struktur des Info-Blocks dieser VM:
-----------------------------------------------------------------
VM Name: "Kali-Linux-2022.2-virtualbox-amd64"
UUID: 98aefc3c-c537-4093-bb5c-b9baa1c72df9
Desc: Kali Rolling (2022.2) x64
2022-05-12
- - - - - - - - - - - - - - - - - -
Username: kali
Password: kali
(US keyboard layout)
- - - - - - - - - - - - - - - - - -
* Kali Homepage:
https://www.kali.org/
* Documentation:
https://www.kali.org/docs/
* Kali Tools:
https://www.kali.org/tools/
* Forum/Community Support:
https://forums.kali.org/
* IRC Channel:
ircs://irc.oftc.net:6697/#Kali-Linux
https://www.kali.org/docs/community/kal ... c-channel/
Path: /home/user/VirtualBox VMs/Kali-Linux-2022.2-virtualbox-amd64/Kali-Linux-2022.2-virtualbox-amd64.vbox
Image: Kali-Linux-2022.2-virtualbox-amd64-disk001.vdi
UUID: b29eab3e-62e4-4b89-9230-d0e4f35a5d3f
Path: /home/user/VirtualBox VMs/Kali-Linux-2022.2-virtualbox-amd64/Kali-Linux-2022.2-virtualbox-amd64-disk001.vdi
Format: vdi
Size: 12.4G
State: created
Type: normal
Nachdem ich den Parser wie folgt geändert hatte:
Code: Alles auswählen
Public Sub GetBoxes()
Dim hVM As VBoxUnit
Dim sTmp As String
Dim aVbox As String[]
Dim aMounts As String[] = FMain.GetOtherMounts()
Dim s As String
Dim i As Integer
$aVMS = New VBoxUnit[]
'Dim d As Date = Now
' Shell "vboximg-mount -lv" Wait To sRes
sTmp = Temp("vms")
Shell "vboximg-mount -lv >" & sTmp Wait
$sVMText = File.Load(sTmp)
Try Kill sTmp
'Debug DateDiff(d, Now, gb.Millisecond)
aVBox = Split($sVMText, "\n")
Print aVBox.max
Do Until i = aVBox.max
Inc i
s = aVBox[i]
'Print "s: "; s
If InStr(s, "VM Name:") Then
hVM = New VBoxUnit As "VBUNIT"
hVM.Name = UnQuote(GetLine(s))
Else
If InStr(s, "UUID:") Then
hVM.UUID = GetLine(s)
Else If InStr(s, " Path:") Then
hVM.Path = GetLine(s)
Else If InStr(s, "Image:") Then
hVM.ImageName = GetLine(s)
Else If InStr(s, "ImageUUID:") Then
hVM.ImageUUID = GetLine(s)
Else If InStr(s, " UUID:") Then
hVM.ImageUUID = GetLine(s)
Else If InStr(s, "Path:") Then
hVM.ImagePath = GetLine(s)
Else If InStr(s, " Format:") Then
hVM.ImageFormat = GetLine(s)
Else If InStr(s, " Size:") Then
hVM.ImageSize = GetLine(s)
Else If InStr(s, " State:") Then
hVM.ImageState = GetLine(s)
Else If InStr(s, " Type:") Then
hVM.ImageType = GetLine(s)
'hVM.Volumes = VBoxVDI.GetVolumes(hVM.ImagePath)
$aVMS.Add(hVM)
If aMounts.Exist(hVM.TmpDir & "/*", gb.Like) Then
hVM.Mount(True)
Endif
Endif
End If
Loop
End
und auch diese Sub geändert hatte:
Code: Alles auswählen
Private Function GetLine(sLine As String) As String
Dim sSplit As String[]
sSplit = Split(sLine, ":")
Return Trim(sSplit[1])
End
wurden die VMs aufgelistet. Nachdem ich allerdings die auskommentierte Zeile
'hVM.Volumes = VBoxVDI.GetVolumes(hVM.ImagePath)
aktivierte, erhielt ich in der Zeile:
Code: Alles auswählen
Static Public Sub GetVolumes(Path As String) As VBoxVDI[]
...
Error.Raise(Split(sRes, "\n\r", Null, True)[0])
...
die Fehlermeldung: "vboximg-mount: error: Could not get the storage format of the medium 'home/user .....vbox' (VERR_NOT_SUPPORTED)
Danach habe ich meine Versuche vorerst abgebrochen.
Viele Grüße
Crabman