Моему клиенту нужен виртуализированный Linux, работающий на его Windows Server 2008 (R1). Мне удалось настроить VirtualBox как службу с srvany
, но я не вижу способа создать своего рода «сценарий остановки», чтобы виртуальная машина корректно выключалась, когда я останавливаю зарегистрированную службу.
Я знаю, что могут быть другие варианты создания виртуальной машины без головы, но дело не в этом. Как я могу создать «сценарий остановки», который запускается, когда я останавливаю зарегистрированную службу (или перезагружаю систему)?
Или, может быть, есть другие способы запустить сценарии завершения работы системы, чтобы виртуальная машина правильно останавливалась при завершении работы?
(для тех, кому может быть интересно)
srvany
: sc create UbuntuD binPath= "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe" start= auto DisplayName= "Ubuntu Daemon"
[HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\UbuntuD\Parameters] Application="C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe" AppParameters="--vrdp=off -s Ubuntu" AppDirectory="C:\Program Files\Sun\VirtualBox\"
C:\Program Files\Sun\VirtualBox\vboxmanage
, параметры: controlvm Ubuntu savestate
«Настоящие» сервисные программы имеют код для выполнения операций по очистке и остановке. Вы запускаете программу, которая не предназначена для запуска в качестве службы, и у нее нет такого кода для обработки постепенного завершения, когда диспетчер управления службами (SCM) сигнализирует о том, что служба останавливается.
Кто-нибудь мог бы написать хорошую служебную оболочку для VirtualBox, которая могла бы изящно обрабатывать работу как службу. Это настоящее решение. К сожалению, вы не собираетесь придумать «хак», который сделает то, что вы ищете. SRVANY (и любая другая программа того же типа, о которой я знаю) не имеет возможности выполнять указанный пользователем код, когда SCM сигнализирует о том, что служба останавливается.
http://answers.yahoo.com/question/index?qid=20071011212557AAofTy6
Создайте файл VBS (т.е. сценарий VB). Откройте Блокнот и введите в него следующий код:
'=====================================
Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("H:\test.bat", 0)
set WshShell = Nothing
'=====================================
Замените «H: \ test.bat» в приведенном выше коде на полный путь к вашему собственному BAT-файлу, но не забудьте двойные кавычки вокруг полного пути к BAT-файлу.
СОХРАНИТЕ файл. Дайте ему имя, например HIDECMDWINDOW.VBS. Расширение должно быть VBS.
Дважды щелкните файл VBS, чтобы запустить его. Ваш BAT-файл должен запускаться без отображения командного окна.
Если ваш файл BAT принимает аргументы, вы также можете передавать ему аргументы - сценарий для этого будет немного более продвинутым, но если он вам нужен, оставьте мне сообщение.
Благодарность за вышесказанное принадлежит Кушику Бисвасу как оригинальному плакату.
Размещено здесь, потому что это была ссылка, которая больше всего подходила мне в моем поиске, и то, на что я ссылался, вероятно, является тем, что ищет большинство людей, которые ее находят.