У гостей Windows есть некоторые ограничения, но для запуска гостевого приложения в бесшовном режиме из сценария, который можно поместить в программу запуска, мы протестировали следующую процедуру:
- Запустите VirtualBox Manager
- Войдите в Windows с вашим именем пользователя и паролем
- Переключиться в бесшовный режим Host+L
- В бесшовном режиме сохранить состояние машины
Теперь мы можем получить полный контроль командной строки над виртуальной машиной с помощью следующих команд:
Запустите виртуальную машину из плавного сохранения состояния
VBoxManage startvm "<Name_of_VM>"
или (для интерфейса Qt)
VirtualBox --startvm "<Name_of_VM>"
Запустить приложение в ВМ
VBoxManage --nologo guestcontrol "<Name_of_VM>" run --exe "C:\\full\\path\\to\\program.exe" --username windowsuser --password password --wait-stdout
Завершить ВМ в состоянии сохранения
VBoxManage controlvm "Name_of_VM" savestate
Поместите их в сценарий, чтобы наслаждаться бесшовными окнами приложений Windows на рабочем столе Ubuntu.
Если вы установили пароль без входа в систему Windows, это не будет работать. Информацию об ограничениях и о том, как настроить Windows, чтобы она работала, см. В руководстве по Virtual Box .
Кроме того, чтобы использовать учетные записи без или с пустым паролем, необходимо изменить групповую политику гостя. Для этого откройте редактор групповой политики в командной строке, введя gpedit.msc , откройте ключ Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options
и измените значение Accounts: Limit local account use of blank passwords to console logon only
на Отключено.
В операционных системах без редактора групповой политики (gpedit.msc), таких как домашние выпуски Windows, создание DWORD в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\limitblankpassworduse
и установка его в ноль приведет к тому же эффекту, согласно этому ответу .
Это скорее подсказка, чем ответ, но слишком большой для комментария.
Вы, вероятно, должны посмотреть на это . Согласно документации, эта команда запускается с хост-ОС (я предполагаю, что хост Ubuntu и гость Windows):
Должен открыть regedit в Windows (гость), но я так и не смог заставить его работать.
Вы также можете использовать
проверить, работает ли виртуальная машина или нет.
источник
VBoxManage guestcontrol Windows\ XP exec --image c:\\program\ files\\quicken\\qw.exe --username XXXXX --password XXXXX
где XXXXX - мои имя пользователя и пароль.Я удалил оригинальную идею, когда понял, что она не будет работать, потому что Linux не сможет получить доступ к разделу Windows на виртуальной машине, если она еще не запущена. Может быть более сложный способ сделать это, но я не знаю, действительно ли это того стоит.
Возможно, возможно иметь общий общий каталог, и сценарий в Windows всегда проверяет этот каталог, чтобы определить, пуст он или нет. Если нет, он запустит сценарии в каталоге, который будет помещен туда системой Ubuntu перед запуском виртуальной машины.
У вас может быть второй скрипт, который удаляет первый, чтобы он не запускался в следующий раз.
источник
Я хотел то же самое и закончил тем, что решил без использования guestcontrol. На моем хосте MacOS X у меня есть папка (с именем Windows), которую мой клиент vbox с Win7 отобразил как Z :. Я использую фиктивные файлы для связи между хостом и моими клиентами следующим образом:
На хосте Mac: - создал один shell-скрипт с иконкой для каждого приложения Windows, которое я хотел запустить в Win-клиенте. Что они в основном делают, так это проверяют, что VirtualBox не запускался раньше, а затем создают файл «Запустить это конкретное приложение» в общей папке, которую Windows может прочитать после запуска. Пример того, как выглядит такой скрипт:
Затем на клиенте Windows у меня есть соответствующий скрипт (BAT-файл) в папке автозагрузки, который выглядит следующим образом:
Таким образом, в любое время, когда я хочу добавить новый значок запуска клиента на моем Mac, я копирую сценарий оболочки, изобретаю новый фиктивный файл и добавляю соответствующие строки запуска в BAT-сценарии на клиенте. Прекрасно работает, и я думаю, что это соответствует идее Мартиса в предыдущем посте.
источник
pgrep
вместоps | grep
. Последний рискует сопоставить себя.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
но, может быть, у вас есть предложение по этому поводу ?