查看: 11360|回复: 11
收起左侧

[分享] 分享一个自用的vmware服务开关的简单的批处理 另附vmware服务简介

[复制链接]
killer3k
发表于 2011-5-30 01:00:09 | 显示全部楼层 |阅读模式
本帖最后由 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”的批处理格式的文件。
批处理一:
————代码开始————不要复制本行————
  1. @echo off

  2. sc config ufad-ws60 start= demand 2>nul
  3. net stop ufad-ws60 2>nul

  4. sc config VMAuthdService start= demand 2>nul
  5. net stop VMAuthdService 2>nul

  6. sc config VMnetDHCP start= demand 2>nul
  7. net stop VMnetDHCP 2>nul

  8. sc config VMware NAT Service start= demand 2>nul
  9. net stop VMware NAT Service 2>nul

  10. sc config VMUSBArbService start= demand 2>nul
  11. net stop VMUSBArbService 2>nul

  12. sc config vmount2 start= demand 2>nul
  13. net stop vmount2 2>nul

  14. pause
复制代码
————代码结束————不要复制本行————

  这个批处理包含了上面提到的六个服务,如果有些服务不存在的话(精简版中),会有出错信息。不过没关系,不用理它。当然了,如果想精益求精的话,也可以自行加上判断服务是否存在、是否启动的语句。(如果你不想看执行结果的话,批处理末的“pause”命令可以去掉)
  另:这个批处理只需要执行一次。所以个人认为这一步使用批处理来完成的意义不是很大,而且硬盘上又要多一个文件,又要多占用那么一点点硬盘空间。

  2、既然,已经把所有的服务设置为手动了,那么再分析一下,这个批处理需要实现什么功能。
   实际上,在日常应用中,这个批处理需要实现的功能主要是以下三步:
   (1)启动vmware相关服务
   (2)启动vmware程序
   (3)退出vmware后关闭相关服务
   启动服务的命令是:net start "服务名称"
   停止服务的命令是:net stop "服务名称"
   注:“服务名称”也可用“显示名称”来代替。如果“服务名称”或“显示名称”中含有空格,则需要用英文引号括起;如果没有空格,则不需要引号。当然,为了方便,不管有没有空格都可以用引号括起来。

  3、vmware开关服务的批处理代码
批处理二:
————代码开始————不要复制本行————
  1. @echo off

  2. if "%1"=="h" goto begin
  3. mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit

  4. :begin

  5. net start VMnetDHCP
  6. net start "VMware NAT Service"

  7. start /wait vmware.exe

  8. net stop VMnetDHCP
  9. net stop "VMware NAT Service"

  10. 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网盘,但是前一段时间优蛋的某一个版本曾经很流氓地加入了一个自动启动的服务,并且在程序退出后不会自行关闭(当然,现在已经改正了),那么就可以用批处理来启动优蛋的程序,并在程序退出后关闭服务。

评分

参与人数 1经验 +20 收起 理由
詩、未詺 + 20 感谢提供分享

查看全部评分

种过一豆
发表于 2011-5-30 07:13:37 | 显示全部楼层
没有很深入地了解过vm

坐   vm新手表示,好好学习一下,感谢分享,期待lz给虚拟区带来更多vm教程
梦落红尘
发表于 2011-5-30 10:35:30 | 显示全部楼层
学过编程的表示鸭梨不大,直接可以照写一个。
可以写一个类似选择语句的,一个跳转到开始,一个跳转到结束就行了。
看下面的语句。if就是选择,start就是开始,stop就是停止。只要自己去查服务的名称就行了。
@echo off
color 0a

GOTO MENU
:MENU
echo.=-=-=-=-=VMware 手工启动批处理=-=-=-=-=
echo. 1 启动VMware各项服务
echo. 2 关闭VMware各项服务
echo. 3 退出
echo 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto start
if "%id%"=="2" goto stop
if "%id%"=="3" exit
PAUSE

:start
net start "VMware Authorization Service"
net start "VMware DHCP Service"
net start "VMware NAT Service"
net start "VMware Registration Service"
net start "VMware Virtual Mount Manager Extended"

goto MENU

:stop
net stop "VMware Registration Service"
net stop "VMware Authorization Service"
net stop "VMware DHCP Service"
net stop "VMware NAT Service"
net stop "VMware Virtual Mount Manager Extended"

GOTO MENU
zby_1991
发表于 2011-5-30 12:23:48 | 显示全部楼层
好贴~顶lz!!
这个强大多了~~
killer3k
 楼主| 发表于 2011-5-30 12:37:02 | 显示全部楼层

RE: 分享一个自用的vmware服务开关的简单的批处理 另附vmware服务简介

种过一豆 发表于 2011-5-30 07:13
没有很深入地了解过vm

坐   vm新手表示,好好学习一下,感谢分享,期待lz给虚拟区带来更多vm教程

嘿嘿,你常用的是vbox吧?多整点好东东出来嘛!
看了你的贴后,下了一个qemu,准备过几天好好学习一下。
killer3k
 楼主| 发表于 2011-5-30 12:48:00 | 显示全部楼层
tk86935367 发表于 2011-5-30 10:35
学过编程的表示鸭梨不大,直接可以照写一个。
可以写一个类似选择语句的,一个跳转到开始,一个跳转到结束 ...

是的,就如我前面提到的,你这个批处理一是比我的更通用,无论谁直接拿去不用修改就可以用;二是比我的更强大,可以自由选择启动或停止服务。
但也正因为如此,在使用过程中需要的步骤就稍多了一点,需要多做几个动作才能完成全部过程。
不过,看了你的后,我也在考虑:有没有必要写复杂一点,以便增加通用性?考虑一下吧。
梦落红尘
发表于 2011-5-30 12:57:32 | 显示全部楼层
killer3k 发表于 2011-5-30 12:48
是的,就如我前面提到的,你这个批处理一是比我的更通用,无论谁直接拿去不用修改就可以用;二是比我的更 ...

呵呵,这个不是我写的。我才开始学vm。
以前是vbox的
is泰迪熊吖
发表于 2011-5-30 13:03:01 | 显示全部楼层
学习批处理的语句
onlyangli
发表于 2011-5-30 22:14:14 | 显示全部楼层
tk86935367 发表于 2011-5-30 12:57
呵呵,这个不是我写的。我才开始学vm。
以前是vbox的

VB比VM差在哪里呢?怎么大家都说VM强些呢?
ariera
发表于 2011-6-7 23:46:53 | 显示全部楼层
谢谢了 尽管看不懂额
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-26 21:27 , Processed in 0.135333 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表