VMware虚拟机服务的vmware-hostd自动启动和停止

时间:2023-03-08 17:43:31
安装了虚拟机 任务管理器会出现vmware-hostd.exe  占用了80端口,导致xampp打不开,所以就想关闭vmware,解决方案如下:
开始——运行——services.msc,找到VM打头的服务,改为手动,并停止服务。
以下内容转自:
http://bbs.cfanclub.net/thread-497122-1-1.html
其中 要用VM虚拟机的时候 VMware Authorization Service是必须开启的。VMware DHCP Service、VMware NAT Service是跟网络有关的。不开启虚拟机用不了网络。VMware Agent Service和VMware USB Arbitration Service设置为手动就可以,用虚拟机的时候一般也不用启动。还有2个网络连接VMware Network Adapter VMnet1、VMware Network Adapter VMnet8
这两个要是不用虚拟机的话也用不到。一会就和那些服务一起开启和禁止。
下面说语句
启动停止服务的语句 net start/stop \"服务名称\" (ps:填写的是服务名称 不是显示名称这个别搞错了)
开启禁止网络连接的语句 netsh interface set interface \"网络连接名\" enable/disable
(\"\"这个引号最好带上,为了避免不必要的麻烦。)
也就是说 简单的 代码就是
启动的
  1. @echo off
  2. echo 正在启用服务...
  3. net start \"VMAuthdService\"
  4. net start \"VMnetDHCP\"
  5. net start \"VMware NAT Service\"
  6. echo 正在启用网络连接...
  7. netsh interface set interface \"VMware Network Adapter VMnet1\" enable
  8. netsh interface set interface \"VMware Network Adapter VMnet8\" enable
  9. echo 网络连接VMware Network Adapter VMnet1、VMware Network Adapter VMnet8启动成功...
  10. pause

复制代码

禁止的

  1. @echo off
  2. echo 正在禁用服务服务...
  3. net stop \"VMAuthdService\"
  4. net stop \"VMnetDHCP\"
  5. net stop \"VMware NAT Service\"
  6. echo 正在禁用网络连接...
  7. netsh interface set interface \"VMware Network Adapter VMnet1\" disable
  8. netsh interface set interface \"VMware Network Adapter VMnet8\" disable
  9. echo 网络连接VMware Network Adapter VMnet1、VMware Network Adapter VMnet8禁用成功...
  10. pause

复制代码

echo 后面加的是你想说的话。。。这些就随便了。
总之代码简单来说就是这样了。
这样两个简单的批处理文件,就解决这些问题了。
(PS:如果Win7系统下运行请右键选择 以管理员身份运行 否则将会出现错误5!)
如果还麻烦可以把这两个合成一个。
下面是我现在用的

  1. @echo off
  2. for /f \"skip=3 tokens=4\" %%i in ('sc query \"VMAuthdService\"') do set \"zt=%%i\" &goto :next
  3. :next
  4. if /i \"%zt%\"==\"RUNNING\" (
  5. echo 服务VMware Authorization Service正在运行
  6. ) else (
  7. echo 服务VMware Authorization Service已停止
  8. )
  9. for /f \"skip=3 tokens=4\" %%i in ('sc query \"VMnetDHCP\"') do set \"zt=%%i\" &goto :next
  10. :next
  11. if /i \"%zt%\"==\"RUNNING\" (
  12. echo 服务VMware DHCP Service正在运行
  13. ) else (
  14. echo 服务VMware DHCP Service已停止
  15. )
  16. for /f \"skip=3 tokens=4\" %%i in ('sc query \"VMware NAT Service\"') do set \"zt=%%i\" &goto :next
  17. :next
  18. if /i \"%zt%\"==\"RUNNING\" (
  19. echo 服务VMware NAT Service正在运行
  20. ) else (
  21. echo 服务VMware NAT Service已停止
  22. )
  23. pause
  24. echo 1:启用VM虚拟机服务(VMware Authorization Service、VMware DHCP Service、VMware NAT Service)及网络连接(VMware Network
  25. Adapter VMnet1、VMware Network Adapter VMnet8)
  26. echo 2:禁用VM虚拟机服务(VMware Authorization Service、VMware DHCP Service、VMware NAT Service)及网络连接(VMware Network
  27. Adapter VMnet1、VMware Network Adapter VMnet8)
  28. choice /c:12 /m \"根据选项请选择...\"
  29. if errorlevel 2 goto two
  30. if errorlevel 1 goto one
  31. :one
  32. echo 正在启用服务...
  33. net start \"VMAuthdService\"
  34. net start \"VMnetDHCP\"
  35. net start \"VMware NAT Service\"
  36. echo 正在启用网络连接...
  37. netsh interface set interface \"VMware Network Adapter VMnet1\" enable
  38. netsh interface set interface \"VMware Network Adapter VMnet8\" enable
  39. echo 网络连接VMware Network Adapter VMnet1、VMware Network Adapter VMnet8启动成功...
  40. echo 按任意键退出...
  41. pause>nul
  42. exit
  43. :two
  44. echo 正在禁用服务服务...
  45. net stop \"VMAuthdService\"
  46. net stop \"VMnetDHCP\"
  47. net stop \"VMware NAT Service\"
  48. echo 正在禁用网络连接...
  49. netsh interface set interface \"VMware Network Adapter VMnet1\" disable
  50. netsh interface set interface \"VMware Network Adapter VMnet8\" disable
  51. echo 网络连接VMware Network Adapter VMnet1、VMware Network Adapter VMnet8禁用成功...
  52. echo 按任意键退出...
  53. pause>nul
  54. exit

复制代码

加了个 检测服务是否开启 都是一些简单的语句。
如果不爱自己写的 可以把 代码直接复制到记事本里 把 文件名改为 VMware虚拟机服务、网络连接.bat 就OK。

=======================================================================================
现在用VMware虚拟机的可能多数还是使用的NAT网络方式,这个方式需要启动两个服务:vmnat和vmdhcp。如果让它们作为自动服务,开机就启动个人比较不喜欢。所以想办法让服务在用虚拟机的时候启动,退出的时候停止。
Windows的net start/stop命令可以启动停止服务。所以就写了个bat脚本来做这个事情:
vmstart.bat:
------------------
net
start "VMware DHCP Service"
net start "VMware NAT Service"

vmplayer

net stop "VMware DHCP Service"
net stop "VMware NAT
Service"
-------------------
**记得把那两个服务(vmnat和vmdhcp)改成手动,可以把vmauth这个禁用掉。**
**我用的VMplayer,你用VMware
Station就改成vmware。 **

这样子,执行这个bat就启动服务,运行虚拟机,然后会等虚拟机退出,之后停止服务。代价是背后有个cmd.exe在等待虚拟机退出,看不见,不影响什么。
但是在执行bat时会出现一下cmd的黑框框,想不让出现,所以我写了个几行的Win32程序调用ShellExecute()执行bat,并传SW_HIDE参数,就可以不显示黑框了。后来在网上发现别人用VBScript实现更简单:
runbat.vbs:
----------------------
dim
wsh
if WScript.Arguments.Count <> 1 then
MsgBox
"没有指定要执行的bat!"
WScript.Quit(-1)
end if
set
wsh=WScript.CreateObject("WScript.Shell")
wsh.Run WScript.Arguments(0),
SW_HIDE, FALSE
----------------------
好了,把这两个文件放到VMPlayer/VMware
Station的目录下面,创建个快捷方式,写上:
runbat.vbs vmstart.bat
这就可以了,不过还可以把快捷方式的图标改成虚拟机的图标。
以后启动虚拟机打开这个快捷方式就行了。虽然麻烦了一下,但一劳永逸的事情何乐而不为 :)
P.S. 也可以把这个启动服务的方法用到其他软件上。
P.S.
使用VMPlayer是免费的,不需要注册码,但VMPlayer不能创建和修改虚拟机。
P.S. 新的VMPlayer 2和VMware Station
v6体积大了不少,发现主要是里面的linux.iso大了很多,是linux guest的vmware-tools。之前用vmware
v5的时候发现debian和ubuntu好像装vmware-tools编译会出错,提示版本不匹配什么的。用这个版本的好了。而且用vmware
v5.x时我的XP在登录时经常要等好久,用这些新版本好像没问题了。
P.S. vmware-tools:安装与uname
-r版本一致的linux-headers,我是先dist-upgrade了一下才有匹配的。似乎还要make
include/linux/version.h生成这个文件。
P.S. 把vmware station
v6的vmware.exe拷到VMPlayer的目录里去,就可以运行vmware.exe建立和修改虚拟机了,但不能运行,反正我们平时用VMPlayer运行。
P.S. again... 我经常开了虚拟机然后用putty登录虚拟机,因为我没装X
window。(设置UTF-8编码,putty还可以控制台显示和输入汉字。推荐用fixed sys字体。)我因此想把虚拟机隐藏到托盘,据说VMware
Station v6有这个功能,但VMPlayer没有 :( 。可以考虑下PowerMenu这个小软件。但又多了一个累赘...