查看單個文章
舊 2006-01-26, 01:51 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 實現 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)
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次