close

實現 VMware 服務/網路卡隨程序執行和關閉——最大程度節約系統資源

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
引用:
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
引用:
net stop VMAuthdService
net stop VMnetDHCP
net stop "VMware NAT Service"
net stop vmount2
devcon.exe disable *vmnetadapter1
devcon.exe disable *vmnetadapter8


1、用 BatchRun 實現:
這個軟體以前介紹過,套用起來也很簡單。
漢化新世紀有漢化版:hxxp://www.hanzify.org/index.php?Go=Show::List&ID=2398
如圖設定,分別增加3條記錄,注意第二條中選 Wait until end 。儲存為 VM.brs
在 BatchRun 中設定關聯 brs 文件後可以直接執行。

2、用Auto it 實現:
儲存下面程式碼為 Run&Exit_VM.au3
引用:
AutoItSetOption ( "TrayIconHide", 1 )
Run("D:\VM.bat")
Runwait("C:\Program Files\VMware\VMware Workstation\vmware.exe")
Run("D:\VM_Stop.bat")


同樣用AutoIt3.exe 關聯.au3 文件後也可以直接執行。
還可以直接打包成可執行文件。

附件分別為兩種解決方案來源碼文件,程式碼中軟體目錄需要自己調整。Autoit包括一個已產生的可執行文件(注意使用VM_run.exe時需要把所有文件解壓縮至 C:\Program Files\VMware\ 目錄下才可以。)
接把VM的服務關了, 網路卡禁了.


但這樣使用 VM 時要手動式把服務和網路卡開啟,很麻煩。

我的只是把這一程序自動化了。
啟動程序時,自動啟動服務和網路卡,關閉程序時自動關閉服務、禁用網路卡。只用Admin權限用戶使用VMWare不需要VMAuthdService,可以直接禁掉。
虛擬機配靜態IP,那個DHCP也可以禁掉。
如果啟用ICS服務,NAT和DHCP服務都可以禁掉。

;TraySetIcon("C:\Program Files\VMware\VMware Workstation\ico\config.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 Files\VMware\VMware Workstation\vmware.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)

arrow
arrow
    全站熱搜

    sunyo 發表在 痞客邦 留言(0) 人氣()