本帖最后由 killer3k 于 2011-5-30 22:21 编辑
其实论坛里面已经有很多同学分享了自己的vmware服务开关的批处理,功能当然都比我的这个强大,而且更具有通用性,但是对于平常使用习惯比较固定的同学来说,批处理可以写得简单点。
这个主要是给像我一样小白以及比我还小白的同学的,所以在一些比较简单的地方也会介绍得比较详细(嘿嘿,其实是我只会简单的东东)。
对vmware和批处理比较熟的同学可以直接拉到文末。
1、vmware服务简介
2、批处理代码
3、题外话
一、vmware服务很简单很简单的一丁点介绍
如果是完整安装,vmware将会安装安装以下五个服务(如果是较低版本,可能下面的某一两个服务不会被包括在内),因为有些地方我也不太清楚,而且没找到什么详细的资料,所以在这里只能简单介绍一下了。
如果有说错了,或不准确的地方,请高手指正和补充。
1、
服务名称:ufad-ws60
显示名称:VMware Agent Service
描述:VMware Agent Service
可执行文件:vmware-ufad.exe
说明:vmware代{过}{滤}理服务。具体作用不清楚,不过启动此服务后,可以在没有网络的情况下组建虚拟局域网。原版安装的话,这个服务默认是手动,如果你使用的是精简版vmware的话,此服务一般被精简掉了。
2、
服务名称:VMAuthdService
显示名称:VMware Authorization Service
描述:Authorization and authentication service for starting and accessing virtual machines.
可执行文件:vmware-authd.exe
说明:vmware授权服务。如果你需要使用vmware的无缝模式(unity)或后台运行的话,需要启动此服务。如果你使用的精简版vmware的话,一般此服务可选择安装与否。
有些同学发现将虚拟系统台运行后,无法再将虚拟系统切换回前台来(多发生于精简版),这就是因为没有安装“vmware授权服务”的原因。
解决办法当然就是安装这个服务了。运行vmware安装目录下(指精简版)的“服务.bat”或“services.bat”(一般都是这个文件名,另外后缀也可能是“cmd”而不是“bat”)。如果其中有安装授权服务这个选项的话,安装就行了;如果没有,那就只好换一个版本,或干脆不用这个功能。
如果你没有安装“授权服务”,选项中会依然存在“后台运行”这个选项,而且可以执行,但是执行后是无法再切换到前台的,也无法再启动这个虚拟系统。怎么办?很简单,关闭vmware,然后在任务管理器中结束“vmware-vmx.exe”这个进程就行了。
如果你“安装了vmware授权服务”,但是没有启动的话,将不会有后台运行这个选项,除非你启动这个服务。
3、
服务名称:VMnetDHCP
显示名称:VMware DHCP Service
描述:DHCP service for virtual networks.
可执行文件:vmnetdhcp.exe
说明:vmware的dhcp服务器服务。为与vmnet1(默认host-only)和vmnet8(默认nat)虚拟网卡连接的虚拟机提供ip分配任务。如果使用桥接模式,不启动此服务虚拟机也可以上网。在精简版中,一般此服务可选择安装与否。
4、
服务名称:VMware NAT Service
显示名称:VMware NAT Service
描述:Network address translation for virtual networks.
可执行文件:vmnat.exe
说明:vmware网络地址转换服务。NAT网络模式需要此服务,如果是桥接模式,可以不启动此服务。在精简版中,一般此服务可选择安装与否。
5、
服务名称:VMUSBArbService
显示名称:VMware USB Arbitration Service
描述:
可执行文件:vmware-usbarbitrator.exe
说明:顾名思义,这是管理虚拟机中USB接口的服务,如果你需要在虚拟机中使用USB设备的话,那么需要启动此服务。在精简版中,一般此服务可选择安装与否。
这个服务好像是在vmware7.x以后才有的。
6、好吧,我不识数,说了五个服务,现在出来六个了。:)
服务名称:vmount2
显示名称:VMware Virtual Mount Manager Extended
描述:
可执行文件:vmount2.exe
说明:vmware虚拟磁盘映射扩展管理服务。这个是6.X中增加的一个功能,是把虚拟机中磁盘映射到物理机中的一个功能,就是在不开启虚拟机时也能访问到虚拟机中的虚拟硬盘。
如果你使用VMware DiskMount Utility 在虚拟机外映射(安装)虚拟硬盘为主机(host)分区硬盘的话,需要启动此服务。
vmware7中依然存在这个功能,但是好像不再以服务的形式出现?
以上所有的服务,对于vmware的运行来说,全都不是必需的,所以全部可以设为手动,而不必设为开机自动启动。
二、vmware开关服务的批处理
1、我们要做的第一步,就是将所有的vmware服务设置为手动:
方法一:“控制面板->性能和维护->管理工具->服务”
选中与vmware有关的服务,双击,将启动类型更改为“手动”,并停止这个服务即可。
方法二:好吧,我知道有人比我还懒,那就给个批处理吧。将下面的代码复制并粘贴到记事本中,然后保存为后缀为“bat”或“cmd”的批处理格式的文件。
批处理一:
————代码开始————不要复制本行————- @echo off
- sc config ufad-ws60 start= demand 2>nul
- net stop ufad-ws60 2>nul
- sc config VMAuthdService start= demand 2>nul
- net stop VMAuthdService 2>nul
- sc config VMnetDHCP start= demand 2>nul
- net stop VMnetDHCP 2>nul
- sc config VMware NAT Service start= demand 2>nul
- net stop VMware NAT Service 2>nul
- sc config VMUSBArbService start= demand 2>nul
- net stop VMUSBArbService 2>nul
- sc config vmount2 start= demand 2>nul
- net stop vmount2 2>nul
- pause
复制代码 ————代码结束————不要复制本行————
这个批处理包含了上面提到的六个服务,如果有些服务不存在的话(精简版中),会有出错信息。不过没关系,不用理它。当然了,如果想精益求精的话,也可以自行加上判断服务是否存在、是否启动的语句。(如果你不想看执行结果的话,批处理末的“pause”命令可以去掉)
另:这个批处理只需要执行一次。所以个人认为这一步使用批处理来完成的意义不是很大,而且硬盘上又要多一个文件,又要多占用那么一点点硬盘空间。
2、既然,已经把所有的服务设置为手动了,那么再分析一下,这个批处理需要实现什么功能。
实际上,在日常应用中,这个批处理需要实现的功能主要是以下三步:
(1)启动vmware相关服务
(2)启动vmware程序
(3)退出vmware后关闭相关服务
启动服务的命令是:net start "服务名称"
停止服务的命令是:net stop "服务名称"
注:“服务名称”也可用“显示名称”来代替。如果“服务名称”或“显示名称”中含有空格,则需要用英文引号括起;如果没有空格,则不需要引号。当然,为了方便,不管有没有空格都可以用引号括起来。
3、vmware开关服务的批处理代码
批处理二:
————代码开始————不要复制本行————- @echo off
- if "%1"=="h" goto begin
- mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
- :begin
- net start VMnetDHCP
- net start "VMware NAT Service"
- start /wait vmware.exe
- net stop VMnetDHCP
- net stop "VMware NAT Service"
- exit
复制代码 ————代码结束————不要复制本行————
稍微解释一下这个批处理的代码的含义:
(1)“:begin”前面的一段代码是用来隐藏CMD命令窗口的。这是利用mshta调用了一段vbs代码。
这段代码很有用,如果你将来需要隐藏CMD命令窗口的话,可以移植这一段代码到相应的批处理开头处,在begin后开始执行你需要的命令。
(另,可以试试把“run("""%~nx0"" h",0)”最末的“0”分别改为“1”、“2”、“3”,看看批理执行的时候有什么不同)
(2)接下来一段代码当然就是用来启动你需要启动的vmware相关服务了。
(3)“start”命令后加上“/wait”参数,是为了等待vmware.exe执行完毕后再执行下面的代码。
如果不加“/wait”参数的话,批处理启动vmware.exe后会接着往下执行,也就是停止vmware服务,这样自然就达不到我们需要的目的了。
(4)当你关闭vmware程序后,批处理自动停止已经启动了的vmware服务并退出。
(5)因为我一般用NAT网络模式,而且一般不会在虚拟机中用到U盘之类的,所以我只启动了两个服务。其他的同志可以根据自己的需要自行添减。
这是启动服务的命令,请需要的同学自行按需添加:
net start ufad-ws60
net start VMAuthdService
net start VMnetDHCP
net start "VMware NAT Service"
net start VMUSBArbService
net start vmount2
这是停止服务的命令,请需要的同学自行按需添加:
net stop ufad-ws60
net stop VMAuthdService
net stop VMnetDHCP
net stop "VMware NAT Service"
net stop VMUSBArbService
net stop vmount2
(6)将这个批处理文件拷贝到vmware的安装目录下即可。当然,为了方便,可以给它建立一个快捷方式,并且换一个漂亮点的图标。
三、题外话
有些时候,如果其它程序需要实现类似功能的话,也可以套用上面的批处理代码。
举个例子:
卡饭有不少人在用115网盘,但是前一段时间优蛋的某一个版本曾经很流氓地加入了一个自动启动的服务,并且在程序退出后不会自行关闭(当然,现在已经改正了),那么就可以用批处理来启动优蛋的程序,并在程序退出后关闭服务。 |