Die Windows-Gäste haben einige Einschränkungen, aber um eine Gastanwendung im Seamless-Modus über ein Skript auszuführen, das in einem Launcher abgelegt werden kann, haben wir das folgende Verfahren getestet:
- Starten Sie den VirtualBox Manager
- Melden Sie sich mit Ihrem Benutzer und Kennwort bei Windows an
- Wechseln Sie in den Seamless-Modus Host+L
- Speichern Sie im Seamless-Modus den Maschinenzustand
Jetzt können wir mit den folgenden Befehlen die vollständige Befehlszeilensteuerung über die virtuelle Maschine erhalten:
Starten Sie die virtuelle Maschine aus dem nahtlosen Speicherstatus
VBoxManage startvm "<Name_of_VM>"
oder (für das Qt-Frontend)
VirtualBox --startvm "<Name_of_VM>"
Führen Sie eine Anwendung in der VM aus
VBoxManage --nologo guestcontrol "<Name_of_VM>" run --exe "C:\\full\\path\\to\\program.exe" --username windowsuser --password password --wait-stdout
Beenden Sie die VM im Sicherungszustand
VBoxManage controlvm "Name_of_VM" savestate
Fügen Sie diese in ein Skript ein, um nahtlose Windows-Anwendungsfenster auf Ihrem Ubuntu-Desktop zu genießen.
Falls Sie eine kennwortlose Windows-Anmeldung eingerichtet haben, funktioniert dies nicht. Weitere Informationen zu Einschränkungen und zur Konfiguration von Windows finden Sie im Handbuch zu Virtual Box .
Um Konten ohne oder mit einem leeren Kennwort zu verwenden, muss die Gruppenrichtlinie des Gasts geändert werden. Öffnen Sie dazu den Gruppenrichtlinien-Editor in der Befehlszeile, indem Sie gpedit.msc eingeben , den Schlüssel öffnen Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
und den Wert von Accounts: Limit local account use of blank passwords to console logon only
in Deaktiviert ändern .
Auf Systemen ohne den Gruppenrichtlinien - Editor (gpedit.msc), wie Home - Editionen von Windows, die Schaffung eines DWORD in dem Registrierungsschlüssel Betrieb HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduse
und Einstellung auf Null wird die gleiche Wirkung erzielen, nach dieser Antwort .
Dies ist eher ein Hinweis als eine Antwort, aber für einen Kommentar zu groß.
Sie sollten wahrscheinlich betrachten dies . Laut Dokumentation wird dieser Befehl vom Host-Betriebssystem aus ausgeführt (ich gehe von einem Ubuntu-Host und einem Windows-Gast aus):
Sollte regedit in Windows öffnen (der Gast), aber ich habe es nie geschafft, es zum Laufen zu bringen.
Sie können auch verwenden
um zu überprüfen, ob eine VM ausgeführt wird oder nicht.
quelle
VBoxManage guestcontrol Windows\ XP exec --image c:\\program\ files\\quicken\\qw.exe --username XXXXX --password XXXXX
wobei XXXXX mein Benutzername und mein Kennwort war.Ich habe die ursprüngliche Idee gelöscht, als mir klar wurde, dass sie nicht funktioniert, da Linux nicht auf die Windows-Partition in einer VM zugreifen kann, wenn sie noch nicht ausgeführt wird. Es mag eine komplexere Möglichkeit geben, aber ich weiß nicht, ob es sich wirklich lohnt.
Möglicherweise ist ein gemeinsames freigegebenes Verzeichnis möglich, und ein Skript in Windows überprüft dieses Verzeichnis immer, um festzustellen, ob es leer ist oder nicht. Andernfalls werden die Skripte im Verzeichnis ausgeführt, das vom Ubuntu-System vor dem Ausführen der VM dort abgelegt wird.
Sie könnten ein zweites Skript haben, das das erste löscht, damit es beim nächsten Mal nicht ausgeführt wird.
quelle
Ich wollte dasselbe und löste es schließlich, ohne die Gästesteuerung zu verwenden. Auf meinem MacOS X-Host habe ich einen Ordner (mit dem Namen Windows), den mein vbox-Client, auf dem Win7 ausgeführt wird, als Z: zugeordnet hat. Ich benutze Dummy-Dateien, um wie folgt zwischen Host und meinen Clients zu kommunizieren:
Auf dem Mac-Host: - Für jede Windows-Anwendung, die ich im Win-Client starten wollte, wurde ein Shell-Skript mit einem Symbol erstellt. Sie stellen im Grunde genommen sicher, dass die VirtualBox noch nicht gestartet wurde, und erstellen dann eine "Start this particular application" -Datei in dem freigegebenen Ordner, die Windows nach dem Start lesen kann. Ein Beispiel für ein solches Skript ist:
Dann habe ich auf dem Windows-Client ein passendes Skript (BAT-Datei) im Startup-Ordner, das so aussieht:
Auf diese Weise kopiere ich jedes Mal, wenn ich ein neues Client-Startsymbol auf meinem Mac hinzufügen möchte, das Shell-Skript, erfinde eine neue Dummy-Datei und füge die entsprechenden Startzeilen im BAT-Skript auf dem Client hinzu. Funktioniert großartig und ich denke, es stimmt mit Martys Idee im vorherigen Beitrag überein.
quelle
pgrep
alsps | grep
. Letzteres läuft Gefahr, sich anzupassen.MacMini:~ urban$ ps ax | grep -v grep | grep 'Windows 7' 10874 ?? R 4:38.49 /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VirtualBoxVM --comment Windows 7 --startvm 24507412-789d-42ed-9c79-b4faf0c2d130 --no-startvm-errormsgbox
Aber haben Sie vielleicht einen Vorschlag dazu?