我的客户需要在他的Windows Server 2008(R1)上运行虚拟化的Linux。 我已经成功地将VirtualBox设置为srvany
的服务,但是我看不到创build一种“停止脚本”的方法,所以当我停止注册的服务时,虚拟机会正确closures电源。
我知道可能还有其他创build无头虚拟机的选项,但这不是重点。 我怎样才能创build一个停止脚本,当我停止注册的服务(或系统重新启动)时执行?
或者,也许还有一些其他的方法来启动“系统关机”脚本,以便在关机时VM正常停止?
(对于那些可能感兴趣的人)
sc create UbuntuD binPath= "C:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe" start= auto DisplayName= "Ubuntu Daemon"
[HKEY \ _LOCAL \ _MACHINE \系统\ CurrentControlSet \服务\ UbuntuD \参数] 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
,params: controlvm Ubuntu savestate
“真正的”服务程序有处理清理和closures活动的代码。 您运行的程序不是作为服务运行的,并且在服务控制pipe理器(SCM)发出信号表明服务正在停止时,它没有这样的代码来处理正常终止。
有人可以写一个很好的服务包装的VirtualBox,可以优雅地处理作为服务运行。 这是真正的解决scheme。 不幸的是,你不会想出一个“黑客”,将做你正在寻找的东西。 SRVANY(以及我知道的同types的其他所有程序)在SCM指示服务正在停止时没有任何执行用户指定代码的function。
http://answers.yahoo.com/question/index?qid=20071011212557AAofTy6
创build一个VBS文件(即VB脚本)。 打开记事本,并在其中键入以下代码:
'===================================== Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("H:\test.bat", 0) set WshShell = Nothing '=====================================
将上面代码中的“H:\ test.bat”replace为你自己BAT文件的完整path,但不要忘记BAT文件完整path的双引号。
保存文件。 给它一个像HIDECMDWINDOW.VBS的名字。 扩展名必须是VBS。
双击VBS文件运行它。 您的BAT文件应该运行而不显示命令窗口。
如果你的BAT文件带有参数,你也可以传递参数 – 脚本会稍微高一点,但是如果你需要的话,给我留言。
上面的信用去Koushik比斯瓦斯作为原始的海报。
在这里发布,因为这是我在search中出现最多的链接,我链接到的大多数人可能是大多数人find这个。