Il y a quelques limitations des invités Windows, mais pour exécuter une application invitée en mode transparent à partir d'un script qui peut être placé dans un lanceur, nous avons testé la procédure suivante:
- Démarrez VirtualBox Manager
- Connectez-vous à Windows avec votre utilisateur et votre mot de passe
- Passer en mode transparent Host+L
- En mode transparent, enregistrez l'état de la machine
Maintenant, nous pouvons obtenir un contrôle complet en ligne de commande sur la machine virtuelle avec les commandes suivantes:
Démarrez la machine virtuelle à partir d'un état d'enregistrement transparent
VBoxManage startvm "<Name_of_VM>"
ou (pour le frontend Qt)
VirtualBox --startvm "<Name_of_VM>"
Exécutez une application dans la machine virtuelle
VBoxManage --nologo guestcontrol "<Name_of_VM>" run --exe "C:\\full\\path\\to\\program.exe" --username windowsuser --password password --wait-stdout
Mettre fin à la VM en état de sauvegarde
VBoxManage controlvm "Name_of_VM" savestate
Mettez-les dans un script pour profiter de fenêtres d'applications Windows transparentes sur votre bureau Ubuntu.
Si vous avez configuré une connexion Windows sans mot de passe, cela ne fonctionnera pas. Voir dans le Manuel de la Boîte Virtuelle pour les limitations et comment configurer Windows pour le faire fonctionner.
De plus, pour utiliser des comptes sans ou avec un mot de passe vide, la stratégie de groupe de l'invité doit être modifiée. Pour ce faire, ouvrez l'éditeur de stratégie de groupe sur la ligne de commande en tapant gpedit.msc , ouvrez la clé Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
et modifiez la valeur de Accounts: Limit local account use of blank passwords to console logon only
sur Désactivé.
Sur les systèmes d'exploitation sans l'Éditeur de stratégie de groupe (gpedit.msc), tels que les éditions personnelles de Windows, la création d'un DWORD à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduse
et sa définition à zéro auront le même effet, selon cette réponse .
C'est plus un indice qu'une réponse, mais c'est trop gros pour un commentaire.
Vous devriez probablement regarder cela . Selon les documents, cette commande, exécutée à partir du système d'exploitation hôte (je suppose un hôte Ubuntu et un invité Windows):
Devrait ouvrir regedit dans Windows (l'invité), mais je n'ai jamais pu le faire fonctionner.
Vous pouvez aussi utiliser
pour vérifier si une VM est en cours d'exécution ou non.
la source
VBoxManage guestcontrol Windows\ XP exec --image c:\\program\ files\\quicken\\qw.exe --username XXXXX --password XXXXX
où XXXXX était mon nom d'utilisateur et mon mot de passe.J'ai supprimé l'idée d'origine lorsque j'ai réalisé que cela ne fonctionnerait pas car Linux ne pourrait pas accéder à la partition Windows dans une machine virtuelle si elle ne fonctionne pas déjà. Il peut y avoir une façon plus complexe de le faire, mais je ne sais pas si cela en vaut vraiment la peine.
Il peut être possible d'avoir un répertoire partagé commun, et un script sous Windows vérifierait toujours ce répertoire pour voir s'il est vide ou non. Sinon, il exécuterait les scripts dans le répertoire, qui y seraient mis par le système Ubuntu avant d'exécuter la machine virtuelle.
Vous pourriez avoir un 2e script qui supprime le 1er afin qu'il ne s'exécute pas la prochaine fois.
la source
Je voulais la même chose et j'ai fini par la résoudre sans utiliser guestcontrol. Sur mon hôte MacOS X, j'ai un dossier (nommé Windows) que mon client vbox exécutant un Win7 a mappé en tant que Z :. J'utilise des fichiers factices pour communiquer entre l'hôte et mes clients comme ceci:
Sur l'hôte Mac: - créé un script shell complet avec une icône pour chaque application Windows que je voulais démarrer dans Win-client. Ce qu'ils font, c'est de s'assurer que la VirtualBox n'a pas été démarrée avant, puis crée un fichier "démarrer cette application particulière" dans le dossier partagé que Windows peut lire après le démarrage. Voici à quoi ressemble un tel script:
Ensuite, sur le client Windows, j'ai un script correspondant (fichier BAT) dans le dossier de démarrage qui ressemble à ceci:
De cette façon, chaque fois que je veux ajouter une nouvelle icône de démarrage client sur mon Mac, je copie le script shell, invente un nouveau fichier factice et ajoute les lignes de démarrage correspondantes dans le script BAT sur le client. Fonctionne très bien et je pense que cela correspond à l'idée de Martys dans le post précédent.
la source
pgrep
au lieu deps | grep
. Ce dernier risque de s'accorder.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
mais peut-être avez-vous une suggestion à ce sujet?