пятница, 7 ноября 2014 г.

Удаление и сокрытие обновлений Windows из командной строки

Бывает так, что после установки очередного обновления Windows некоторые программы перестают работать. Выход в такой ситуации, почти всегда, один - удаление конфликтного обновления и последующий запрет его повторной установки. В этой заметке я расскажу, как это сделать из командной строки.
С удалением обновлений проблем возникнуть не должно, для этого есть специальная утилита от Microsoft - wusa.exe.
Для удаления обновления нужно выполнить от имени администратора команду
wusa /uninstall /kb:[номер обновления без букв KB]
С запретом повторной установки (сокрытием) обновлений всё немного сложнее, специальной утилиты для этого нет, поэтому для решения этой задачи можно использовать небольшой скрипт на visaual basic.
Dim hideupdates(7)
hideupdates(0) = "Microsoft Security Essentials - KB2267621"
hideupdates(1) = "Microsoft Security Essentials - KB2691894"
hideupdates(2) = "Bing Desktop"
hideupdates(3) = "Windows Internet Explorer 9 for Windows 7"
hideupdates(4) = "Windows Internet Explorer 9 for Windows 7 for x64-based Systems"
hideupdates(5) = "KB971033"
hideupdates(6) = "Update for Windows 7 for x64-based Systems (KB971033)"
hideupdates(7) = "KB2483139"

set updateSession = createObject("Microsoft.Update.Session")
set updateSearcher = updateSession.CreateupdateSearcher()
set searchResult = updateSearcher.Search("IsInstalled=0 and Type='Software'")

For i = 0 To searchResult.Updates.Count-1
 set update = searchResult.Updates.Item(i)
 For j = LBound(hideupdates) To UBound(hideupdates)
  if instr(1, update.Title, hideupdates(j), vbTextCompare) > 0 then
   Wscript.echo "Hiding " & hideupdates(j)
   update.IsHidden = True
  end if
 Next
Next
Этот скрипт, так же от имени администратора, нужно запустить, выполнив команду
wscript hide.vbs
После выполнения скрипта обновления будут изъяты из списка подлежащих установке.
Оригинал скрипта.

1 комментарий: