VMware服务随意关

Posted by 冰河 at 21:04 No Responses » 5,775 Views
十二 182009

VMware 虚拟机程序安装后同时会有4个服务打开,极大的消耗了系统资源,对我这样的铁公鸡来说实在不可忍受。若关闭了这4个服务, 右下角的托盘又会显示两个未接通的网络连接,很是烦人。

因此考虑实现需要运行虚拟机时——自动启动服务、启用虚拟网卡,关闭程序后——自动停止服务、禁用虚拟网卡。

一、禁用/启用网卡的实现

通过微软测试硬件驱动程序 devcon.exe 实现。

虚拟网卡的硬件 ID 为:*vmnetadapter1 和 *vmnetadapter8

通过下面命令启用虚拟网卡:

devcon.exe enable *vmnetadapter1

devcon.exe enable *vmnetadapter8

通过下面命令禁用虚拟网卡:

devcon.exe disable *vmnetadapter1

devcon.exe disable *vmnetadapter8

二、随程序 自动启动 和 关闭服务 的实现

实现 自动启动 和 关闭服务 有很多办法,这里介绍两种办法(BctchRun和Autoit),在分别介绍前先来做以下预备工作:

安装完 VMware 后,把原为自动启动的4个服务设为手动,或用下面的批处理:

sc config VMAuthdService start= demand

sc config VMnetDHCP start= demand

sc config "VMware NAT Service" start= demand

sc config vmount2 start= demand

net stop VMAuthdService

net stop VMnetDHCP

net stop "VMware NAT Service"

net stop vmount2

保存下面内容为一个批处理文件VM.bat

QUOTE:

net start VMAuthdService

net start VMnetDHCP

net start "VMware NAT Service"

net start vmount2

devcon.exe enable *vmnetadapter1

devcon.exe enable *vmnetadapter8



保存下面内容为另一个批处理文件VM_Stop.bat

QUOTE:

net stop VMAuthdService

net stop VMnetDHCP

net stop "VMware NAT Service"

net stop vmount2

devcon.exe disable *vmnetadapter1

devcon.exe disable *vmnetadapter8



1、用 BatchRun 实现:

分别添加3条记录,注意第二条中选中 Wait until end 。保存为 VM.brs

在 BatchRun 中设置关联 brs 文件后可以直接运行。

2、用Auto it 实现:

保存下面代码为 Run&Exit_VM.au3

QUOTE:

AutoItSetOption ( "TrayIconHide", 1 )

Run("D:VM.bat")

Runwait("C:Program FilesVMwareVMware Workstationvmware.exe")

Run("D:VM_Stop.bat")



同样用AutoIt3.exe 关联.au3 文件后也可以直接运行。

还可以直接打包成可执行文件。

附件分别为两种解决方案源代码文件,代码中软件目录需要自己调整。Autoit包括一个已生成的可执行文件(注意使用VM_run.exe时需要把所有文件释放至 C:Program FilesVMware 目录下才可以。)



同时转一下 Limpo @ CCF 在上面基础上做的Autoit 脚本,完全使用Autoit 解决。

我偷了一下懒,Autoit中也用批处理了。 



QUOTE:

;TraySetIcon("C:Program FilesVMwareVMware Workstationicoconfig.ico");

TrayTip("VMWare", "启动服务“VMware Authorization Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start VMAuthdService", "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware DHCP Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start VMnetDHCP", "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & 'net start "VMware NAT Service"', "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start vmount2", "", @SW_HIDE)

TrayTip("VMWare", "启动连接“VMware Network Adapter VMnet1”", 10, 1)

RunWait("devcon.exe enable *vmnetadapter1", "", @SW_HIDE)

TrayTip("VMWare", "启动连接“VMware Network Adapter VMnet8”", 10, 1)

RunWait("devcon.exe enable *vmnetadapter8", "", @SW_HIDE)

TrayTip("VMWare", "", 10, 1)

RunWait("C:Program FilesVMwareVMware Workstationvmware.exe")

TrayTip("VMWare", "停止服务“VMware Authorization Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop VMAuthdService", "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware DHCP Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop VMnetDHCP", "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & 'net stop "VMware NAT Service"', "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop vmount2", "", @SW_HIDE)

TrayTip("VMWare", "停止连接“VMware Network Adapter VMnet1”", 10, 1)

RunWait("devcon.exe disable *vmnetadapter1", "", @SW_HIDE)

TrayTip("VMWare", "停止连接“VMware Network Adapter VMnet8”", 10, 1)

RunWait("devcon.exe disable *vmnetadapter8", "", @SW_HIDE)

© 2009 - 2018 冰河的博客