Hy, 我有興趣找到一種方法(也許vbs腳本?)來隱藏幾個(超過10,無論如何)的Windows 7更新,所以他們永遠不會被安裝。 我認爲最好的方法是,如果我可以解析一個.txt文件,其中列出了每個KB號碼(每個都在新行中)。但是,當然,如果它使代碼更簡單,那麼在腳本內硬編碼的數組也可以工作。唯一的要求是按KB編號而不是按描述編號。如何根據KB編號批量隱藏Windows 7更新?
問題是我不知道我該怎麼做,所以我向你們求助。
非常感謝!
Hy, 我有興趣找到一種方法(也許vbs腳本?)來隱藏幾個(超過10,無論如何)的Windows 7更新,所以他們永遠不會被安裝。 我認爲最好的方法是,如果我可以解析一個.txt文件,其中列出了每個KB號碼(每個都在新行中)。但是,當然,如果它使代碼更簡單,那麼在腳本內硬編碼的數組也可以工作。唯一的要求是按KB編號而不是按描述編號。如何根據KB編號批量隱藏Windows 7更新?
問題是我不知道我該怎麼做,所以我向你們求助。
非常感謝!
你絕對可以用VBS腳本來做到這一點。在其他一些StackExchange站點上已經回答了類似問題(請參閱How to disable the 「Get Windows 10」 icon shown in the notification area (tray)?和Block specific Windows update hotfix)
與您的問題相關的部分將在下面複製。原始問題值得一讀,而且他們還有其他注意事項,可能也會有所幫助。
這些是專門爲處理GWX更新而編寫的,但您可以使用任何KB編號。
「BlockWindows10.bat」:
ECHO OFF
REM --- remember to invoke from ELEVATED command prompt!
REM --- or start the batch with context menu "run as admin".
SETLOCAL
REM --- (as of 2015-09-07):
REM KB3035583 - GWX Update installs Get Windows 10 app in Windows 8.1 and Windows 7 SP1
REM KB3021917 - Update to Windows 7 SP1 for performance improvements
REM KB3012973 - Upgrade to Windows 10 Pro
REM --- no longer blocking:
REM KB2952664 - Compatibility update for upgrading Windows 7
REM KB2976978 - Compatibility update for Windows 8.1 and Windows 8
REM KB3022345 - Telemetry [Replaced by KB3068708]
REM KB3068708 - Update for customer experience and diagnostic telemetry
REM --- uninstall updates
echo uninstalling updates ...
start "title" /b /wait wusa.exe /kb:3021917 /uninstall /quiet /norestart
echo - next
start "title" /b /wait wusa.exe /kb:3035583 /uninstall /quiet /norestart
echo - done.
timeout 10
REM --- hide updates
echo hiding updates ...
start "title" /b /wait cscript.exe "%~dp0HideWindowsUpdates.vbs" 3021917 3035583 3012973
echo - done.
echo ... COMPLETED (please remember to REBOOT windows, now)
pause
REM --- EOF
「HideWindowsUpdates.vbs」(工藤https://serverfault.com/a/341318):
'// Inspired by Colin Bowern: https://serverfault.com/a/341318
If Wscript.Arguments.Count < 1 Then
WScript.Echo "Syntax: HideWindowsUpdates.vbs [KB1] [KB2] ..." & vbCRLF & _
" - Example1: HideWindowsUpdates.vbs 3035583" & vbCRLF & _
" - Example2: HideWindowsUpdates.vbs 3035583 3012973"
WScript.Quit 1
End If
Dim objArgs
Set objArgs = Wscript.Arguments
Dim updateSession, updateSearcher
Set updateSession = CreateObject("Microsoft.Update.Session")
Set updateSearcher = updateSession.CreateUpdateSearcher()
Wscript.Stdout.Write "Searching for pending updates..."
Dim searchResult
Set searchResult = updateSearcher.Search("IsInstalled=0")
Dim update, kbArticleId, index, index2
WScript.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
Next
Next
'// EOF
謝謝你的幫助。與此同時,我能夠整理我的劇本。是不完美的,它可能有錯誤,但我在Windows 7 Pro x64上運行它,它的行爲如預期。
對於任何有興趣的人,請隨時在這裏查看:https://github.com/dereius/WindowsUpdateHider