微軟為推銷Windows 10可謂是不遺余力,居然強制向廣大的Windows 7和Windows 8/8.1用戶進(jìn)行了推送,其結(jié)果是小伙伴們發(fā)現(xiàn)電腦的右下角出現(xiàn)一個“獲取 Windows 10”(英文版:Get Windows 10)的圖標(biāo),但對于我這樣的沒有升級欲望的,看到這樣的圖標(biāo)頗為不爽,打開任務(wù)管理器,居然還有一個GWX.exe的進(jìn)程,罷了,罷了,反正我也知道可以升級Windows 10,但占用我可憐的內(nèi)存資源則不能忍受了,所以決定卸載并移除該提示。
首先查閱了網(wǎng)上的資料,發(fā)現(xiàn)大家都從更新入手,已知更新代號為KB3035583,那么直接卸載,問題不是解決了嗎?非也非也,該更新被標(biāo)注為高優(yōu)先級,也就是說只能解燃眉之急,不能做長久打算,過一段時間“獲取 Windows 10”(為了簡便,下文稱為“GWX”)還是會死而復(fù)活。
那么正確的做法應(yīng)該是卸載更新后再把該更新給隱藏起來,在下次收到該更新時,先右擊再選擇隱藏更新即可。
好了,問題似乎到這里得到了解決,當(dāng)然作為一名久經(jīng)沙場的程序猿,怎么能天真的認(rèn)為微軟叔叔會就此作罷,所以我收集了網(wǎng)上所有的方案,集多種致命武器于一身的“要你命3000”就此誕生(此處應(yīng)有掌聲)。
通過老外的《Disable & Remove Get Windows 10 Upgrade Reservation Notification & System Tray Icon》得知微軟還留了一手,那就是注冊表大法,即通過注冊表禁用該功能,將以下內(nèi)容保存DisableGWX.reg,并雙擊運行即可:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Gwx]"DisableGwx"=dword:00000001 |
好了,就此徹底將GWX打入冷宮。
總結(jié)來看,我們依次進(jìn)行了三步,首先卸載了KB3035583的更新;其次隱藏了KB3035583的更新;最后通過注冊表徹底禁用GWX。
當(dāng)然本著方便群眾的精神,我將其打包成了批處理和VBScript腳本,其中VBScript腳本是供批處理調(diào)用的,主要是實現(xiàn)隱藏指定KB更新的功能(抱歉,這個功能的實現(xiàn)只有VBS版的,所以這里累贅的分成兩個文件),腳本來源于《Block specific windows update hotfix》,代碼轉(zhuǎn)載如下:
'// Inspired by Colin Bowern: http://serverfault.com/a/341318If Wscript.Arguments.Count < 1 Then WScript.Echo "Syntax: HideWindowsUpdates.vbs [Hotfix Article ID]" & vbCRLF & _ " - Examples: HideWindowsUpdates.vbs 2990214" & vbCRLF & _ " - Examples: HideWindowsUpdates.vbs 3022345 3035583" WScript.Quit 1End If Dim objArgsSet objArgs = Wscript.ArgumentsDim updateSession, updateSearcherSet updateSession = CreateObject("Microsoft.Update.Session")Set updateSearcher = updateSession.CreateUpdateSearcher() Wscript.Stdout.Write "Searching for pending updates..." Dim searchResultSet searchResult = updateSearcher.Search("IsInstalled=0") Dim update, kbArticleId, index, index2WScript.Echo CStr(searchResult.Updates.Count) & " found."For index = 0 To searchResult.Updates.Count - 1 Set update = searchResult.Updates.Item(index) For index2 = 0 To update.KBArticleIDs.Count - 1 kbArticleId = update.KBArticleIDs(index2) For Each hotfixId in objArgs If kbArticleId = hotfixId Then If update.IsHidden = False Then WScript.Echo "Hiding update: " & update.Title update.IsHidden = True Else WScript.Echo "Already hiddn: " & update.Title End If End If Next NextNext'// EOF |
很明顯,通過“HideWindowsUpdates.vbs KB號”即可隱藏指定KB號的更新,結(jié)合這篇文章《How to disable the “Get Windows 10” icon shown in the notification area (tray)?》,最終我編寫的批處理如下:
@ECHO OFF ECHO Welcome to use GWX - Get Windows 10 Removal ToolECHO For more information please visit http://wangye.orgECHO. REM See http://stackoverflow.com/questions/4051883/batch-script-how-to-check-for-admin-rightsgoto check_Permissions :check_Permissions echo Administrative permissions required. Detecting permissions... net session >nul 2>&1 if %errorLevel% == 0 ( echo Success: Administrative permissions confirmed. ) else ( echo Failure: Current permissions inadequate. GOTO Done ) ECHO Terminating process GWX.exe....taskkill /F /IM GWX.exeECHO GWX.exe terminated. ECHO Uninstalling KB3035583 Update, Please wait...start "title" /b /wait WUSA.exe /quiet /norestart /uninstall /kb:3035583ECHO KB3035583 uninstalled. ECHO Adding Policy For Disable Gwx Software...reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Gwx" /v DisableGwx /t REG_DWORD /d 1 /fECHO DisableGwx Policy Added. ECHO Removing GWX directory...del /f /s /a /q %SystemRoot%\System32\GWXECHO GWX directory removed. ECHO Hiding GWX Updates, Please wait...start "title" /b /wait cscript.exe //NoLogo "%~dp0HideWindowsUpdates.vbs" 3035583ECHO Done. ECHO All steps completed, Please restart your computer! :DonePAUSE |
大家可以看到,其中有一段代碼是
check_Permissions
,這段是檢查運行環(huán)境是否在管理員權(quán)限下,因為我們的代碼必須運行在管理員權(quán)限下,也就是說需要右擊以“管理員身份運行”,這段代碼來自《Batch script: how to check for admin rights》,原代碼如下:
@echo offgoto check_Permissions :check_Permissions echo Administrative permissions required. Detecting permissions... net session >nul 2>&1 if %errorLevel% == 0 ( echo Success: Administrative permissions confirmed. ) else ( echo Failure: Current permissions inadequate. ) pause >nul |
好啦,其他的代碼不需要解釋,大家應(yīng)該都清楚,主要是結(jié)束GWX.exe進(jìn)程,通過WUSA.exe工具卸載更新,通過
reg add
添加注冊表項目,再強制移除
C:\Windows\System32\GWX
路徑及包含文件,最后通過
HideWindowsUpdates.vbs
隱藏更新。通過這一系列操作,我想GWX再無翻身之日吧。
對于不拘小節(jié)的朋友們,我提供了打包好的程序[點擊下載]DisableGWX,解壓后,直接右擊disableGWX.bat,選擇以“管理員身份運行”,稍等片刻等出現(xiàn)“All steps completed, Please restart your computer!”時候重啟電腦即可完成。
如果出現(xiàn) Failure: Current permissions inadequate. 則表明程序沒有以管理員身份運行,部分過程處理時間可能較長,請耐心等待,尤其是Please wait…提示的時候。
代碼已經(jīng)由32位 Windows 7 SP1 專業(yè)版測試通過,其他版本W(wǎng)indows建議謹(jǐn)慎考慮。
其他參考文獻(xiàn)
How to remove installed Windows Updates and block them afterwards
下載地址:聯(lián)系客服