в Администририрование

После крайних вестей о том, что Windows Update в полу-принудительном порядке поставил пользователям Windows 7/8/8.1 обновления KB3080149 и KB3075249, которые собирают данные телеметрии и отправляют их в M$ — остро почувствовался очередной параноидальный приступ. Передача осуществляется через TCP по порту 443 с использованием SSL.

«Как то не хорошо получается» подумал я и накидал небольшой скрипт который несколько автоматизирует:

  • Удаление хреновых апдейтов и их блокирование/сокрытие (необходим PowerShell с модулем PSWindowsUpdate; ставится автоматически; если рядом (в оной директории) со скриптом находятся файлы unzip.exe и PSWindowsUpdate.zip — используются они, иначе же — они скачиваются);
  • Блокирует некоторые доменные имена средствами файла хостов (есть мнение, что MS его всё таки игнорирует в данном случае);
  • Блокирует запросы к известным на данный момент серверам по IP (как с помощью add route, так и правилом файрвола);
  • Отключает задачи планировщика, которые каким-либо образом связаны с передачей «аналитической» информации (да и не только, полный список смотри в сорце);
  • Останавливает и отключает авто-запуск сервисов, которые отвечают за отправку «диагностических данных»;
  • Отключает отправку отчетов об ошибках в M$;
  • Настраивает Windows Update на «Искать обновления, но решение о скачивании и установки принимается мной».

Его исходник ниже. Возможен запуск с определенными параметрами, их описание в верхней части скрипта. Идея была собрана из самых различных источников, авторы которых остались неизвестны. Необходимо его скачать себе, сохранить с расширением .cmd и запустить с правами администратора:

GitHubСкачать v0.2.14

Внимание! При запуске скрипта в пути до него должны отсутствовать как спецсимволы, так и символ ! (коммент). Очень желательно запускать просто из корня системного диска.

Можно так же (если требуется включенный Windows Update с автоматической установкой обновлений) поставить исполнение скрипта в планировщик заданий с интервалом раз в сутки, например (для запуска в свернутом окне команда запуска может иметь вид cmd /c start /min c:\remove_MS_telemetry.cmd -e).

Так же хочу обратить внимание, что со временем данный скрипт будет дорабатываться и дополняться. Самая свежая версия всегда будет доступна как здесь, так и на GitHub.

Всё предельно просто:

  1. Чистим файл хостов:
    C:\> notepad %windir%\System32\drivers\etc\hosts
  2. Удаляем правило файрвола:
    C:\> netsh advfirewall firewall delete rule name="Block MS Telemetry"
  3. Восстанавливаем маршруты:
    C:\> route -f

    После чего отключаем и подключаем обратно сетевое подключение (Панель управленияЦентр управления сетями и общим доступомИзменение параметров адаптера → На нужном подключении Отключить и Подключить обратно)

  4. Панель управленияЦентр обновления WindowsВосстановить скрытые обновления → Отметить нужные и жмякнуть Восстановить. После чего Настройка параметров и выставляем необходимые настройки обновлений

Ахтунг! Иногда сокрытие обновлений длится ну очень долго. Причин тому может быть несколько, как и путей решения. Все они довольно подробно изложены на форме мелкософта. Мне удалось воспроизвести проблему, но решить её на данный момент — нет. Как временное решение — запускать скрипт с флагом -d или -disable, для отключения функционала блокирования/сокрытия обновлений.

По поводу глюков скайпа после запуска скрипта

И ещё раз внимание! Если у вас ранее после запуска скрипта «глючил скайп», то вам необходимо ручками подчистить файл хостов перед запуском обновленной версии скрипта (в котором эта проблема вроде как решена). Как это сделать? Жмем Windows + R, вводим notepad %windir%\System32\drivers\etc\hosts, и удаляем всё что ниже строки ## Block MS telemetry domain names. Автоматизировать этот процесс меня дико ломает :)

Скрипт мной более не поддерживается. Обновлений ждать нет смысла. Всем мур.

Changelog

  • Версия 0.2.14 от 16.02.2016:
    • Добавлены обновления 3135445, 3123862
    • Убран из блокировки хосты apps.skype.com, ui.skype.com, m.hotmail.com, s.gateway.messenger.live.com (имеются подозрения что «скайп глючит» именно из-за них; т.к. сам скайпом не пользуюсь — не имею возможности полноценно проверить это)
  • Версия 0.2.13 от 22.01.2016:
    • Добавлены обновления 3112343, 3112336
    • Убран из блокировки хост msftncsi.com (почему)
  • Версия 0.2.12 от 01.11.2015:
    • Добавлены обновления 2882822, 3083710 и 3083711
  • Версия 0.2.11 от 19.09.2015:
    • Из списка блокировки убраны хосты diagnostics.support.microsoft.akadns.net и diagnostics.support.microsoft.com, т.к. есть мнение что именно их использует утилита от MS FixIt
  • Версия 0.2.10 от 19.09.2015:
    • Наконец-таки нашел способ значительного сокращения времени выполнения скрипта. Как оказалось всё-таки можно передавать список обновлений для сокрытия обновлений, вместо того чтоб обрабатывать каждое по отдельности. Все кто жаловались на данную проблему — в обязательном порядке обновитесь.
  • Версия 0.2.9 от 17.09.2015:
    • Всё таки добавил обновления «Windows Update Client» под номерами 3065988, 3083325, 3083324, 3075853, 3065987, 3050265, 3050267, 3046480. Ниибическую задержку на стадии сокрытия обновлений решить так и не удалось, а подключать для этого vbs — очень не хочется
    • Обновлен список доменов для блокировки, перечислять все смысла не вижу, проще глянуть diff
    • Добавлено снятие атрибута «Только для чтения» с файла хостов перед добавлением в него записей
  • Версия 0.2.8 от 01.09.2015:
    • Добавлен флаг запуска -d или -disable — который отменяет функционал сокрытия обновлений (применимо как временное решение того, что скрипт на моменте сокрытия обновления очень долго «отрабатывает»)
  • Версия 0.2.7 от 01.09.2015:
    • Из списка хотфиксов, подлежащих удалению убраны KB3050265 - Windows Update Client for Windows 7: June 2015 // WS 2008 R2 SP1, 7 SP1, KB3075853 - Windows Update Client for Windows 8.1 and Windows Server 2012 R2: August 2015 // WS 2012 R2 / 8.1 / RT 8.1 и KB3065987 - Windows Update Client for Windows 7 and Windows Server 2008 R2: July 2015 // WS 2008 R2 SP1 / 7 SP1 / Embedded Standard 7 SP1, так как возможно они являются причиной того, что в исключительных случаях удаление/сокрытие обновлений длятся очень долго. На данный момент такое поведение иногда воспроизводится, причина его до конца не выяснена, а решения предложенные на форме мелкософта — не решают данную проблему.
  • Версия 0.2.6 от 01.09.2015:
    • Исправлена ещё одна небольшая ошибка с некорректным добавлением правила файрвола
    • Добавлена поддержка локальных файлов unzip.exe и самого модуля для PowerShellPSWindowsUpdate.zip. Теперь если они находятся рядом (в оной директории) со скриптом — используются именно они, а иначе — они скачиваются
    • Некоторые другие незначительные изменения и исправления
  • Версия 0.2.5 от 31.08.2015:
    • Исправлена ошибка с добавлением пустого правила файрвола (из-за этого в исключительных ситуациях после работы скрипта «не работал интернет»)
    • Исправлена ошибка с остановкой работы скрипта после автоматической установки модуля для PowerShell
    • Некоторые незначительные изменения и исправления
  • Версия 0.2.4 от 30.08.2015:
    • Добавлено отключение отправки отчетов об ошибках в M$
  • Версия 0.2.3 от 30.08.2015:
    • Реализована автоматическая установка модуля PSWindowsUpdate для PowerShell
    • Добавлена возможность логирования сообщений скрипта (по умолчанию пишутся в файл %имя_скрипта%.log в директории, откуда скрипт был запущен); для отключения этой штуки запускай скрипт с флагом -log или -l
    • Небольшой рефакторинг кода
    • По рекомендации тов. Pavel из блокировки убран адрес 68.232.34.200
  • Версия 0.2.1 от 26.08.2015:
    • Ахрененно объемное обновление
    • Добавлена поддержка отключения (сокрытия) обновлений средствами PowerShell и модуля к нему PSWindowsUpdate
    • Добавлена поддержка блокирования IP ещё и на уровне виндового файрвола
    • Значительно обновлен список IP адресов для блокировки. Большая часть из них взята из доменных имен, которые блокировали в файле hosts (давай MS, игнорируй файл хостов дальше, успехов).
    • Исправлена ошибка с записью в файл хостов — ранее если он не заканчивался пустой строкой — крайняя запись косячилась. Встречалось это крайне редко, но всё же
    • Обновлен список доменных имен
    • Поправлены мелкие ошибки (и конечно же порождены новые)
  • Версия 0.1.9 от 26.08.2015:
    • Поправлена ошибка с ошибочным определением отсутствия прав администратора
  • Версия 0.1.9 от 26.08.2015:
    • Поправлена ошибка с ошибочным определением отсутствия прав администратора
  • Версия 0.1.8 от 25.08.2015:
    • Добавлены некоторые задачи (tasks) подлежащие отключению
    • Добавлен ещё один сервис dmwappushservice + дополнительное отключение телеметрии в Windows 10
  • Версия 0.1.6 от 24.08.2015:
    • Добавлена поддержка альтернативных флагов (более понятных)
    • Незначительные поправки в UI (если это вообще можно назвать UI)
  • Версия 0.1.5 от 24.08.2015:
    • Увеличен таймаут перед выходом до 60 секунд
  • Версия 0.1.4 от 24.08.2015:
    • Добавлена поддержка остановки&отключения сервисов
    • В список сервисов подлежащих отключению внесен Diagtrack
  • Версия 0.1.1 от 24.08.2015:
    • Добавлена поддержка флагов запуска
  • Версия 0.0.9 от 24.08.2015:
    • Добавлена функция отключения автоматического обновления
  • Версия 0.0.7 от 24.08.2015:
    • Добавлена хренова куча новых доменных имен для блокировки
    • Увеличен таймаут перед выходом до 15 секунд
  • Версия 0.0.4 от 24.08.2015:
    • Обновлен список хреновых обновлений
    • Теперь умеем блокировать запросы к определенным IP средствами add route
    • Добавлены наиболее известные адреса для блокировки
    • Так же умеем отключать задачи (tasks)
    • Добавлен список основных задач
    • Незначительно наведена красота в коде
  • Версия 0.0.2 от 24.08.2015:
    • Первый релиз
    • Умеем удалять обновления
    • Умеем блокировать запросы к доменам средствами правки файла hosts

Комментатор — ахтунг!

  • Комментарии в духе «После .. не работает ..» без каких-либо оснований будут сразу удаляться к хуям.
  • То же самое касается комментариев в стиле «А как скрипт..» или «А в каких случаях в лог пишется..» — исходник перед вами — читайте и анализируйте. Не получается? Закройте вкладку с этой страницей.
  • Оформляй, л*ть, текст комментария! Для тебя сделаны кнопочки по выделению кусков кода, вставки ссылок, изображений, и всего прочего — не игнорируй их.
  • Пиши грамотно! Такайа хуйита типа эта, эврибади пышут тыак — сразу нахуй. Вот сразу, не задумываясь.

Бабахнуть комментарий

Комментарии

327 Комментариев

  1. Если уж поддержки проекта больше не будет, то может стоит заодно так указать в основной части описания ссылки на другие подобные актуальные работы, чтобы вновь прибывшим не искать их в комментариях(если таковые имеются)?

    • Рекомендовать кого-либо, и уж тем более — указывать на них ссылки не стану по причине отсутствия уверенности в том, что в один определенный момент в рекомендованном решении не появится зловредный код. А то что поддержка более не осуществляется — указано бооольшими буквами по ссылке, что как раз указана в самом начале скрипта.

  2. Каким образом реклама относится к телеметрии?
    Например вот:
    0.0.0.0 a1095.g2.akamai.net
    0.0.0.0 ad.doubleclick.net
    0.0.0.0 adnexus.net
    0.0.0.0 adnxs.com
    0.0.0.0 secure.adnxs.com
    0.0.0.0 m.adnxs.com

        • Потому что средствами win (даже +ps) делать это не сосем тривиально.
          Печально, когда из-за бажности виндового анинсталлера хренова куча ребят тут пишут комментарии о том что «скрипт зависает при удалении обнов» и, сука, с этим врятли что можно поделать двумя-тремя кликами.
          Подход что описан в посте скорее как средство по быстрому прикрыться от очевидных утечек данных «в лоб», но актуальность этого подхода уменьшается с каждым апдейтом от MS, потому как заниматься анализом каждого обновления и сидеть за wireshark-ом — дело чертовски не благодарное.

          Лирика: адекватным подходом в данном случае (как мне кажется) было бы написание полноценного демона, который бы занимался многоуровневой фильтрацией и анализом данных, да авто-обновлением правил. Необходимо расширенное тестирование на всевозможных версиях ос для обеспечения стабильности и отсутствия проблем, которые иногда появляются, например как «конференции в скайпе перестали работать» или падения некоторых системных фич, потому что DNS MS резольвит IP адреса не только серверов предполагаемой телеметрии, но и вполне легитимных сервисов. Более того — необходимо централизованное и открытое хранилище данных, где пользователи сами смогли репортить и добавлять новые фильтры, плюс с открытым апи для сторонних разработчиков

  3. есть мнение, что, если допустим обновление версии 7, то его надо удалять 7 раз, потому как возвращается предыдущая версия, а не удаляется полностью. Что Вы думаете по этому поводу?

  4. Ну как быть то? От скрипта слетает SP1 и старые обновы, пробовал скрипты от других авторов и все одно, что не моча то гавно!

    • Где-то тут в комментариях уже поднимался этот вопрос. Причина такого поведения кроется в бажности сервиса обновлений MS. Эмпирически доказано, что даже установка обновлений строго для него не всегда исправляет это положение. А самое печальное заключается в том, что вполне вероятно эти проблемы могли бы исправить те обновления, которые мы как раз скриптом и сносим, т.к. они несут в себе «в комплекте» не только полезные исправления, но и функционал телеметрии (по крайней мере именно такой вывод напрашивается исследуя исходники других ребят)

      • Вылечил!!!)
        Откатил на пару дней назад.
        Ребята перед экспериментами делайте точку восстановления!

        Обычно после установки Windows 7/8.1 запускаю этот батник на блокировку ненужностей — http://pastebin.com/1AFukKEJ

      • Таже хрень. svchost.exe -k netsvcs грузит 1 ядро, 300 метров ОЗУ.
        Вангую что из-за заблоченых в hosts MS-айпишников, т.к. процесс хочет сходить на:

        TCP vortex.data.microsoft.com:49154
        UDP vortex.data.microsoft.com:isakmp
        UDP vortex.data.microsoft.com:ipsec-msft

  5. Было бы удобнее и нагляднее, чтобы при удалении обновлений писалось DONE или FAILED. В логе ниже строчки сливаются, и с трудом понятно какие все-таки обновления пролезли и сейчас удаляются…
    [10:10:00,37] Update KB971033 not installed
    [10:10:00,38] Uninstall update KB3075851..
    [10:10:20,30] Uninstall update KB3065988..
    [10:10:30,04] Update KB3065988 not installed
    [10:10:30,05] Uninstall update KB3083325..
    [10:10:39,69] Update KB3083325 not installed
    [10:10:39,70] Uninstall update KB3083324..
    [10:10:57,02] Uninstall update KB3075853..
    [10:11:06,78] Update KB3075853 not installed

    Вот так нагляднее

    [10:10:30,05] Uninstall update KB3083325 ... FAILED!
    [10:10:39,69] Update KB3083325 not installed
    [10:10:39,70] Uninstall update KB3083324 ... DONE!

    P.S. Спасибо за огромный труд и полезную программу!

    • Всё бы ничего, но «капсить» лишний раз — плохой тон. Сообщение у нас — не критичное, а просто информирующее о том что обновление не установлено

  6. А где можно сейчас скачать предыдущие версии скрипта (0.2.12 — 0.2.13
    )? Сегодня, после использования пару дней назад версии 0.2.14, с удивлением обнаружил значек запущенного GWX.exe. Да и сама работа скрипта вызвала подозрение — строки типа:
    [i] Uninstall evil M$ updates..
    [13:01:24,89] Uninstall update KB3080149..
    [13:01:24,98] Uninstall update KB3075249..
    [13:01:25,08] Uninstall update KB2952664..

    пролетают мгновенно, нет сообщения not installed...
    Одним словом, я бы хотел вернуться к предыдущей версии, которую поторопился стереть..

      • Это печально — скачал и прогнал версии 0.2.11 — 0.2.13, но ничего не изменилось, хотя раьше они на этой же машине работали правильно, а сейчас вот описанным выше образом. Да и появление gwx.exe было пропущено, то есть может много чего не работать ((
        Но спасибо в любом случае…

      • А не может это поведение быть связано с какими либо проблемами с PowerShell? Помнится раньше в логах проскакивали строки с его упоминанием, теперь же я их не вижу… Как можно проверить правильность (ну или неправильность) установки и работы PowerShell или NET.Framework (они же вроде как-то связаны)? PowerShell у меня запускается, но попытка проверить версию не проходит: http://joxi.ru/YmEJa5fZj6BB26 Но я, к сожалению, не разбираюсь в этом всем, а хотелось бы ситуацию поправить, иначе Ваш скрипт становится для меня бесполезен на этом компе. :(

      • Еще добавлю, что, как оказалось, файл hosts имеет дату 20.09.2015, то есть не модифицировался с тех пор, хоть я и запускал скрипт…
        Проверил сейчас на другой машине с Win7SP1 Pro за которой никто не работал с 20 января — точно такая же фигня — строк типа
        «[11:13:13,33] Uninstall update KB3080149..
        [11:13:13,40] Disable update KB3080149..
        [11:13:34,58] Update KB3080149 successfully DISABLEDи hosts от 05.11.2015
        или
        «update not installed» нет, hosts не менялся с 05.11.2015.. ((
        Что-то не нравится мне это — ведь две совершенно разные, никак не связанные машины, разве что версия ОС одинаковая..
        У кого-то, кто ставил все апдейты на Win7SP1 Pro скрипт сейчас нормально работает??

        • Возможна проблема с тем от чьего имени запускается скрипт? Если ему не хватит прав на запись — то, соответственно, и ожидать модификаций файла хостов не стоит

  7. Привет, после скрипта удалились все установленные ранее обновления и пропали скрытые обновления, которые вручную скрывал, это нормально или так не должно быть?

  8. Привет,
    как часто обновляется написанный Вами скрипт ?
    Вчера получил 13 необязательных обновлений (Windows 8.1).
    Порекомендуйте пожалуйста схожий с Вашим ресурс,
    которому (на Ваш взгляд), можно доверять.
    Спасибо за Ваш труд.

    • Как часто обновляется можно посмотреть в «Changelog»-е. Рекомендовать никого не стану (т.к. не разбирался в вопросе аналогов достаточно досконально), но в комментариях к этому посту где-то проскакивали ссылки

  9. А не следует ли «обезвредить» еще и KB3068708 (Обновление для улучшения качества и диагностики телеметрии) и KB3083325 (Клиент для Windows 8.1 и Windows Server 2012 R2 центра обновления Windows: Сентябрь 2015 г.)?

  10. Почему-то автоматически не скачал unzip и powershell с dropbox, пришлось скачать с сайта. Но всё равно спасибо, классный батник.

  11. Присоединяюсь к благодарностям за скрипт, хотел добавить ссылку на ресурс в подобной тематике

    Вполне может быть это не существенно, там предлагают удалить вместо деактивировать :

    Task Scheduler Library (search for this in start)
    Delete:
    Everything under "Application Experience"
    Everything under "Autochk"
    Everything under "Customer Experience Improvement Program"
    Under "Disk Diagnostic" only the "Microsoft-Windows-DiskDiagnosticDataCollector"
    Under "Maintenance" "WinSAT"
    "Media Center" and click the "status" column, then select all non-disabled entries and disable them.
  12. Супер! Всё чётко отработано на вин 8.1! Спасибищща огромная Вам! Предыдущий мой комментарий — не скрыло обновы на семёрке, ну и фиг с ней, вручную скрыл

  13. Приветствую.

    У меня многие обновления из списка скрипта являются «обязательными компонентами» и их удаление не возможно.
    Все? телеметрия пустила корни и ее не выкорчевать из системы?

    ЗЫЖ windows 8.1

    • Да, разумеется, просто отписывайтесь о тех обновлениях/хостах/ip, которые вызывают подозрения (желательно со ссылками на пруфы) — они будут рассмотрены и в обязательном порядке добавлены

  14. Спасибо за скрипт.
    Провёл небольшое исследование… для размышления
    * написал скрипт по сбору уникальных IP из списка блокироуемых хостов
    * скрипт запускается регулярно в течении месяца
    * в результате из 100 хостов набралось 212 IP
    * набор происходит постепенно
    * скрипт продолжает работу…

    • Более того, со временем IP меняются, видимо из-за балансировщиков нагрузки. Блокировать все подряд — не выход, так как за ними могут стоять и вполне «нормальные» сервисы, а тестировать каждый — не благодарное дело..

  15. Tarampampam а можно в скрипт сделать опцию чтоб все таки банить diagnostics.support.microsoft.akadns.net и diagnostics.support.microsoft.com я лично этой фигней не пользуюсь.

  16. У меня некорректно работает скрипт. В ходе разбирательств нашёл пару нюансов:
    1. При установке PSWindowsUpdate используется команда move /y "!pswu_temp!\PSWindowsUpdate" !ps_modules_dir! которая не работает в случае, если папка %temp% находится не на системном разделе. Пишет отказано в доступе. Может, заменить её на xcopy /y /i "!pswu_temp!\PSWindowsUpdate" "!ps_modules_dir!\PSWindowsUpdate"?
    2. У меня не работает логгирование. Как оказалось, команда setlocal EnableDelayedExpansion приводит к тому, что из пути set LogFilePath="%~f0.log" убираются все восклицательные знаки, а я запускал скрипт из папки, имя которой начинается с «!». Соответственно, при каждом вызове :log у меня пишет «не найден путь». Получается, надо предупредить юзеров чтобы не запускали скрипт из папок с восклицательными знаками.

      • По поводу kb3083710. Твой скрипт удаляет обновления «Windows Update Client for Windows» за июль, август и сентябрь. Исходя из этой логики я предположил, что стоит удалять «Windows Update Client for Windows» и за октябрь.
        По поводу kb2952664 — наверное не стоит его удалять, ведь это просто обновление совместимости для апгрейда на 10ку.

  17. Как побороть эти две ошибки [Error] Cannot disable updates: Update your PowerShell or install PowerShell module ‘PSWindowsUpdate’ ([Ошибка] не Может отключить обновления: Обновите свой PowerShell или установите модуль PowerShell ‘PSWindowsUpdate’)?
    PowerShell у меня в Win 8.1. последней версии 4.0, и почему скрипт предлагает обновить или установить.
    Или забить на эту ошибку…

    • Такого поведения в принципе не должно быть. Но попробуй всё проверить и при необходимости поставить модуль ручками, и если сможешь найти причину почему именно у тебя не работало из коробки — дай, пожалуйста, знать

  18. Tarampampam, привет!
    Очень понравился твой скрипт, все лаконично, красиво и прозрачно. Спасибо :)
    А это я оставлю тут для реверс-инжиниринга — думаю найдешь что-нибудь полезное.

  19. привет, такой вопрос… установил win7, накатил все обновления. после запустил скрипт, перезагрузился. в центре обновления перестали отображаться все последние установленные обновления, статус — «последние обновления никогда не устанавливались». нажал на кнопку «найти обновления» и выкатились всего два, те самые которые входят в список зондов :) есть такой вариант, что остальные просто не успели накатится? и куда делся список всех обновлений? спасибо.

  20. В своём батнике я делаю так:

    do (
    start "Hide Update KB%%i" /b /wait cscript.exe "%~dp0WUHideByKB.vbs" %%i
    ---------------------------[WUHideByKB.vbs]---------------------------
    If Wscript.Arguments.Count = 0 Then
    WScript.Echo "Syntax: HideWindowsUpdate.vbs [Hotfix Article ID]" & vbCRLF & _
    "Examples:" & vbCRLF & _
    " - Hide KB940157: HideWindowsUpdate.vbs 940157"
    WScript.Quit 1
    End If
    
    Dim hotfixId
    hotfixId = WScript.Arguments(0)
    
    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)
    If kbArticleId = hotfixId Then
    WScript.Echo "Hiding update: " & update.Title
    update.IsHidden = True
    End If 
    Next
    Next

    Правда отрабатывает медленно

    • Я подобным образом делаю, но совмещая с powershell (хайд через вбскрипт делается только для тех, кто остался незахайденым через PS)

  21. Не могли бы вы обьяснить подробнее, этап блокировки обновлений.
    Если служба WU работает, то скрипт доходит до этапа скрытия и наглухо виснет. Если WU не работает, то быстренько отрабатывает и пишет Updates successfully DISABLED, но в WU ничего не блокируется.
    Win7Professional x86

    • Ещё раз повторю ответ, который описывал ранее — открываем исходник и смотрим как и что делается. Если не понимаете/не получается — увы, матчасть сама не выучится. О причинах описанного вами поведения могу только догадываться, в вашем случае можете попытаться запускать с флагом -d и скрывать «вредные» обновления ручками.

  22. На семёрке не отрабатывает:
    powershell -ExecutionPolicy RemoteSigned -Command "Import-Module PSWindowsUpdate; Hide-WUUpdate -KBArticleID KB3075851"
    Он просто не видит этого обновления.

    При этом другие KBшки хайдятся без проблем. Также занятно то, что руками через Центр Обновления Windows без проблем прячется и это обновление. А через PS — не хочет :-(

    Может, у тебя есть светлые мысли по этому поводу?

      • Делал скрипт на базе всех существующих в сети в том числе и твоего, описал кучу исключительных ситуаций и одна из них эта. Вот кусок с костылём, предлагаю тебе добавить подобную реализацию, а то не комильфо:

          rem Add update to Windows Update exceptions (hide update) using PowerShell
          set updlist=
          if defined %collected_updates_list[0] (
          	for /F "tokens=2 delims==" %%s in ('set collected_updates_list[') do set updlist=!updlist!, KB%%s
          	set updlist=!updlist:~2!
        
          	rem Hiding
          	powershell -ExecutionPolicy RemoteSigned -NoLogo -Noninteractive -Command "Import-Module PSWindowsUpdate; try { Hide-WUUpdate -KBArticleID !updlist! -Confirm:$false; exit 100; } catch { exit 0; }">nul 2>&1
               
            rem Checking, if updates was hided
        	set badlist=
            For /F "Delims=" %%I In ('powershell -ExecutionPolicy RemoteSigned -Command "Import-Module PSWindowsUpdate; Get-WUInstall -ListOnly" -KBArticleID !updlist! ^| findstr KB[0-9]') Do (
              	set tmpstr=%%I      	
              	set "tmpstr=!tmpstr:*KB=!"
            	for /f "tokens=1* delims= " %%a in ("!tmpstr!") do set badlist=!badlist!, KB%%a
        	)
        	set badlist=!badlist:~2!
        
            if !badlist! neq "" (
            	call:log "Can't hide some updates. You NEED to do this manually via Windows Update Center: !badlist!"
            	call:collect_result_error "Can't hide some updates. You NEED to do this manually via Windows Update Center: !badlist!"
            )
          )
        • Решил проблему, оказывается под 7-ку powershell не хайдит все обновления. Пришлось доточить vbscript для 100% хайдинга + дописал кусок с проверкой — а вдруг что не удалось спрятать, чтобы пользователь видел подробный результат и в крайнем случае мог поправить ручками.

          Поскольку решение очень тесно интегрировано в мой скрипт, выкладывать куски кода не буду, т.к. их будет проблематично осознать в виде кусков, когда допишу скрипт, выложу весь, если овнер блога не против.

  23. Ручками кинул в лог ссылку на эту страничку.
    Наверняка резонно это делать автоматом, ведь спустя месяц/два/три надо будет зайти за обновлением. :)
    Благодарю за отличную работу!!!!

    p.s. Хотя, если Ваш скрипт качает unzip.exe и PSWindowsUpdate.zip — может Вы сможете его обучить и самообновляться? :))

  24. [ 6:53:36,98] Uninstall update KB3065988..
    [Error] Cannot disable updates: Update your PowerShell or install PowerShell module 'PSWindowsUpdate'

    И так со всеми обновлениями.

    Архив PSWindowsUpdate.zip лежит рядом. И в %windir%\System32\WindowsPowerShell\v1.0\Modules все нужные модули уже есть.

    И после установки 0.2.11 в центре обновлений стало писать, что обновления я вообще не устанавливал, и очень долго висит «Поиск обновлений…». И в скрытых тоже стало пусто.
    После завершения поиска — нашло все старые обновления, но раньше скрипт их просто скрывал, а теперь даже из скрытых удаляет, и апдейтер их заново находит и предлагает установить.

    Среди найденных был KB3023266, но его в скрипте нет, хотя «дата публикации обновления — 13.01.2015, и весит оно 61кб, откуда оно взялось, ведь я все обновления до этого устанавливал.

    Сейчас для теста заново установил все обновления, даже скрытые, перезагрузил компьютер, накатил скрипт — все удалённые обновления (они удалились, не смотря на ошибку, которая написана вначале этого поста) появились в скрытых (ну почти все, несколько я сам туда добавил, после очередной проверки на обновления), потом я опять перезагрузил компьютер — и опять в центре обновлений написано, что обновления я вообще никогда не устанавливал, и так же долго он их ищет, и находит все удаленные. Из скрытых тоже снова всё пропало, но если нажать слева снизу на «Установленные обновления» — то там всё есть.

    Винда 8.1, 64бита, корпоративная.

    • Похоже что вы запускаете не крайнюю версию скрипта, так как в противном случае перед этим должна была появиться строка вида [*time*] Disable updates: **KB list... Пожалуйста, убедитесь что запускаете именно крайнюю версию. О том что что-то не скрывает — ничего подсказать не смогу, т.к. модуль для PS разрабатывался не мной

      • Именно крайнюю, по ссылке «СКАЧАТЬ V0.2.11», но уже в принципе не важно, я использовал все функции скрипта, кроме удаления и отключения обновлений, а все обновления — установил, мне так легче :)

  25. Почему то на стадии удаления обновлений не происходит установка модуля PSWindowsUpdate? А на стадии сокрытия происходит!?

  26. Спасибо, толковая подборка и сразу в скрипте.
    Я бы еще добавил отказ от участия в программе улучшения качества, многие забывают об этом. Например: C:\windows\system32\rundll32.exe werconcpl.dll,ShowCEIPDialog

  27. Спасибо большое!
    Нужное дело и на душе почему-то гораздо спокойнее …
    0.2.11 — отработал … минуты за 2, круто.
    Хотя меня не особо напрягало время работы старых скриптов, работали ведь — результат на лицо!!!
    Ещё раз, низкий поклон )))

  28. Есть предложение запилить в скрипт и офис.

    PS. все таки в шапке и при старте скрипта желательно написать большими красными буквами — ВКЛЮЧИ ИНТЕРНЕТ (т.к. не все будут изучать работу всего скрипта чтобы узнать что он там что-то докачивает).

  29. KB3065988 должно быть установлено и настроено, как в посту выше.
    KB3075853 и KB3083325 — НЕ устанавливать, если установлены — удалить.

  30. shadow_member c руборда:
    Установить KB3065988, оно позволяет блокировать обновление до Windows 10 через Центр обновления Windows. Добавляет новый объект локальной групповой политики. Компьютеры, на которых активирован этот объект групповой политики, НЕ будут определять, скачивать или устанавливать обновление до последней версии Windows.
    После его установки в Редакторе локальной групповой политики (gpedit.msc) выполнить такую настройку, тем самым заблокировав обновление до Windows 10:
    Конфигурация компьютера / Административные шаблоны / Компоненты Windows / Центр обновления Windows -> параметр: Turn off the upgrade to the latest version of Windows through Windows Update (Отключить обновление до последней версии Windows через Центр обновления Windows) поставить в положение «Включено«.

    • Извини, не обратил внимание что ранее был указан ник автора комментария, так как он был без ссылки на профиль автора. Укажи его ещё раз, пожалуйста

  31. С брандмауэром windows всё понятно. Но вот у меня, к примеру, он отрублен. И остановлена его служба. Как мне добавить правило «IP adresses blocked with firewall rule ‘Block MS Telemetry'» в мой брандмауэр, который у меня задействован ? Он называется Norton Internet Security.

  32. Приветствую.
    Как будет более правильно поступить после установки win8.1 — установить ВСЕ обновления, а потом скрипт накатить или наоборот.
    Если 2й вариант, то будут ли «видны» эти обновы в WU?

    Заранее спасибо.

    PS. может на будущее составить FAQ по популярным вопросам?

    • Доброго времени суток!

      Вообще — без разницы, это только вам решать. Я бы рекомендовал его поставить в планировщик, как писал уже ранее, с периодичностью пару раз в неделю, сугубо на «всякий случай». Хотя, подчеркну — в этом нет необходимости.

      В F.A.Q смысла не вижу, так как исходник перед вами, стоит только открыть спойлер. Если человек готов запускать на своей машине то, чего он не понимает — то это уже, увы, клиника. В противном случае — необходимость в нем просто отсутствует.

      • Понял. Так все-таки, если я запущу скрипт до первого старта WU, то заблокированных обнов я там не увижу?
        (если да, то как минимум одно преимущество уже есть — лишний раз не ставить а потом не блокировать их)

          • Докладываю.

            1. установил win8.1×64 отсюда
            2. после установки, systeminfo показывает, что в образе уже было 36 обнов — вот они
            3. Обрати внимание, что там УЖЕ ЕСТЬ KB2976978
            4. включаю wifi и ставлю скрипт v0.2.11. Вот лог. Скрипт KB2976978 грохнул

            5. Захожу в WU и вижу в списке «скрытых» всего 7 штук
            6. WU предлагает установить 146 обнов. Ставлю и перезагружаюсь
            7. systeminfo говорит что всего их 184, хотя должно быть 182 (36+146). Что мы там видим? Две бяки: KB2976978 — живее всех живых, KB3075853 — который каким то образом «просочился» тоже
            8. Опять заходим в WU. Кроме парочки обновлений появился и KB3068708

            Вывод — скрипт частично отрабатывает.. но есть вопросы

  33. Версия 0.2.11 от 19.09.2015: Из списка блокировки убраны хосты

    Подскажите, какое поведение новой версии скрипта по отношению к уже имеющимся изменениям в системе, внесенным старой версией? (исправляют или только дополняют)
    Допустим, нужно ли очищать правила фаервола и файл hosts (или выполнять процедуру «вернуть всё как было»), для уверенности что ранее блокированные хосты теперь там отсутствуют?

    Надеюсь, выразился более или менее ясно. :(

  34. Здравствуйте. Случайно — экспериментально выяснил, что отключение от сети очень сильно ускоряет выполнение скрипта. Вместо нескольких часов — двадцать или менее минут при отключённом сетевом кабеле. Пробовал на нескольких компьютерах с windows 7.
    Благодарю вас за скрипт.

  35. Уважаемый Tarampampam. Ваша утилита супер, но с такими тормозами при повторной проверке.
    Когда она проверяет больше часа и даже половины не проверила. Что-то нужно делать. А то это капец :(
    Может посоветуетесь с людьми которые тоже в этом шарят, чтобы помогли, направили на путь истинный. Может можно спросить у разраба который Destroy Windows Spying навоял? Вот его твитеер
    Может поможет Вам в Вашем правильном деле. Заранее спасибо. Сори за оффтоп. Ваша утилита классная но если бы не тормоза.

  36. А что Вы скажите насчет этой темы? Заблокировали вчера на аппаратном фаерволе все домены и айпи из Ваших списков — в итоге отвалились апдейты от мс.

  37. Will there be a updated september 2015 new script from your website?

    KB3065988 Windows Update Client for Windows 8.1 and Windows Server 2012 R2: July 2015 more info
    KB3083325 Windows Update Client for Windows 8.1 and Windows Server 2012 R2: September 2015 more info
    KB3083324 Windows Update Client for Windows 7 and Windows Server 2008 R2: September 2015 more info
    KB2976978 Compatibility update for Windows 8.1 and Windows 8 more info
    KB3075853 Windows Update Client for Windows 8.1 and Windows Server 2012 R2: August 2015 more info
    KB3065987 Windows Update Client for Windows 7 and Windows Server 2008 R2: July 2015 more info
    KB3050265 Windows Update Client for Windows 7: June 2015 more info
    KB3050267 Windows Update Client for Windows 8.1: June 2015 more info
    KB3075851 Windows Update Client for Windows 7 and Windows Server 2008 R2: August 2015 more info
    KB2902907 MS Security Essentials/Windows Defender related update [no description/information available]
    KB3068708 Update for customer experience and diagnostic telemetry more info
    KB3022345 Update for customer experience and diagnostic telemetry more info
    KB2952664 Compatibility update for upgrading Windows 7 more info
    KB2990214 Update that enables you to upgrade from Windows 7 to a later version of Windows more info
    KB3035583 Update installs Get Windows 10 app in Windows 8.1 and Windows 7 SP1 more info
    KB971033 Description of the update for Windows Activation Technologies more info
    KB3021917 Update to Windows 7 SP1 for performance improvements more info
    KB3044374 Update that enables you to upgrade from Windows 8.1 to a later version of Windows more info
    KB3046480 Update helps to determine whether to migrate the .NET Framework 1.1 when you upgrade Windows 8.1 or Windows 7 more info
    KB3075249 Update that adds telemetry points to consent.exe in Windows 8.1 and Windows 7 more info
    KB3080149 Update for customer experience and diagnostic telemetry more info

    Also — check this link

  38. Спасибо за работу! Скрупулезно, толково!!!
    Некоторые твики правят файл hosts и устанавливают атрибут только чтение. В этом случае будет — «отказано в доступе«. У меня так и было. В блоке обработки hosts можно добавить attrib -r %HOSTS%>nul

  39. Отличная работа, благодарю за скрипт.
    А то в конец охренели мелкомягкие, навязывая то, что мне не нужно,
    особенно свою недоделанную десятку…
    И ещё раз спасибо.

  40. Need administrative permissions
    add this near the top between @echo off and title. it will then ask you to click ok to grant permission for admin rights when the script is run..

    : BatchGotAdmin
    :-------------------------------------
    REM  --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' (
        echo Requesting administrative privileges...
        goto UACPrompt
    ) else ( goto gotAdmin )
    
    :UACPrompt
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
        set params = %*:"=""
        echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
    
        "%temp%\getadmin.vbs"
        del "%temp%\getadmin.vbs"
        exit /B
    
    :gotAdmin
        pushd "%CD%"
        CD /D "%~dp0"
    :--------------------------------------
  41. Не ставится скрипт . Запускаю от имени админа, а прав на запись нет все равно. Наверно в компе дело.

    [11:22:13,55] Download unzip tool..
    [11:22:17,66] Download PowerShell module 'PSWindowsUpdate'..
    [11:22:20,96] Unzip module archive..
    
    CreateFile() error 32 when trying set file time
    
    CreateFile() error 32 when trying set file time
    [11:22:21,02] Move module files to PowerShell modules directory..
    Отказано в доступе.
    [Installation failed] Installation module 'PSWindowsUpdate' failed - files in "C
    :\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate" not found
    [11:22:21,04] Uninstall update KB3035583..
    [11:22:21,20] Update KB3035583 not installed
    [Install update] Install PowerShell module 'PSWindowsUpdate'
    [11:22:21,22] Download unzip tool..
  42. Спасибо большое за Ваш труд!

    Пожалуйста, отдельным спойлером сделайте «сомнительные» обновления и их описания (обновления, которые не вошли в основную версию скрипта), чтобы при желании их тоже можно было удалить.
    Возможно даже отдельный флаг в скрипте, для их удаления.

    Зачем? Я знаю, читал ниже, что Вы против добавлять все подряд, но к Вам стекаются сведения о таких обновлениях + вы сами по тематике этой ищите информацию в процессе разработки. Почему бы эту информацию не систематизировать и не выложить в удобный доступ с описанием, чтобы другие самостоятельно не гуглили и не искали среди хлама одно и тоже?

    Спасибо.

    p.s. Bли флаг -del NUMBER, где NUMBER — номер обновления, чтобы скрипт дальше 1. Проверял установку 2. Удалял 3. Вносил в список «не устанавливать»

  43. Подскажите — установил свежую w7 применил скрипт 0.2.8, а далее включать стоит обновления или нет, подскажите дальнейшее действие плз..

    • Есть смысл проверить — скрылись ли «необходимые» обновления, и дальше можно смело включать. Если есть желание — можно поставить исполнение скрипта в планировщик, как это сделать — описано а теле поста.

      • Я правильно сделаю, если выбрать «Искать обновления, но решение о скачивании и установки принимается мной» пришли важные обновы установить, вышел новый скрипт-применить?

  44. Спасибо. Но у меня пара вопросов. Есть ли смысл в этом скрипет на Висте: по блокировке IP и по обновлениям?
    После применения с измененным hosts получил проблемы с доступом к некоторым ресурсам MS, в частности, перестала фетчиться почта с outlook.com на встроенном в висту почтовике. Папки получает, а сожеримое нет. Оставил hosts без правок — забегало.

    • На висте, увы, не тестировал. Если не сложно — методом пошагового отключения хостов определи какой именно доставляет описанные тобой неудобства.

        1. Спасибо за быстрый, и что более важно, адекватный ответ. По личному опыту сталкиваюсь с тем, что к сожалению, наши, русскоязычные разработчики руководствуются одним правилом — есть только одно правильное мнение и оно мое. Тем не менее, по существу.. Строк для проверки достаточно много и мне, если честно, просто лень. Оставим этот вопрос, по крайней мере если кто-то еще на висте не появится.
        2. Что Вы можете сказать про шпионинг МС в принципе применительно к ПО OneDrive, которым я пользуюсь? Я просто прочел, что оно также занимается не только прямой деятельностью, но и шпионит.
        • Проприетарный софт он такой — одним разработчикам (и людям дружащим с отладчиком + не ленивым анализировать сетевой трафик) известно, как он работает и какие функции выполняет. Мнений может быть сколько угодно, но верить стоит всё таки своим глазам и рукам. Если есть желание детально разобраться — можете провести своё исследование. Более того — такого рода посты на том же хабре очень любят :) OneDrive не использую и на данный момент большого любопытства — не имею, увы.

          Будет желание — разберитесь с хостами, исходя из вашей работы внесу коррективы в скрипт.

  45. Проблема с работой скрипта на Windows 7 — при копировании файлов в PSWindowsUpdate ошибка «отказано в доступе». Антивирус был отключен. Скрипт запускал от имени Администратора.

    • Первым делом есть смысл проверить наличие директории по пути %windir%\System32\WindowsPowerShell\v1.0\Modules. Если есть — то проверить права на неё. Если с правами всё хорошо, то выполнить в консоли:

      C:\> echo> %windir%\System32\WindowsPowerShell\v1.0\Modules\test.txt

      У убедиться в том что файл test.txt по указанному пути создался.

      Если все эти условия выполняются — то и скрипт должен работать.

      • Директория Modules есть, файл test.txt создаётся, но скрипт не отрабатывает.

        [15:30:39,51] Move module files to PowerShell modules directory..
        [Installation failed] Installation module 'PSWindowsUpdate' failed - files in "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate" not found

        Если создать каталог PSWindowsUpdate вручную, то скрипт его удаляет, но сам создать потом не может. В чём же дело?

        • Полный путь для установленного модуля %windir%\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate, и уже в этой директории должны размещаться все его файлы. Скрипт вообще никакие файлы не удаляет, кроме тех что сам скачивает/создает. Пожалуйста, убедись что у тебя стоит его крайняя версия (ссылка в теле поста), и ежели что — произведи установку модуля вручную.

          • Не удаляет? Хм, а тогда объяснить вот это:

            C:\Windows\System32\WindowsPowerShell\v1.0\Modules>dir /b
            PSDiagnostics
            TroubleshootingPack
            
            C:\Windows\System32\WindowsPowerShell\v1.0\Modules>mkdir PSWindowsUpdate
            
            C:\Windows\System32\WindowsPowerShell\v1.0\Modules>dir /b
            PSDiagnostics
            PSWindowsUpdate
            TroubleshootingPack
            
            C:\Windows\System32\WindowsPowerShell\v1.0\Modules>D:\Downloads\remove_MS_telemetry.cmd>nul
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            Отказано в доступе.
            
            C:\Windows\System32\WindowsPowerShell\v1.0\Modules>dir /b
            PSDiagnostics
            TroubleshootingPack
            • Все, что может и должно удаляться (~430 строка):

              if "!local_unzip_tool!" NEQ "1"  (del /f !unzip_tool!>nul)
              if "!local_pswu_module!" NEQ "1" (del /f !pswu_zip!>nul)
              rmdir !pswu_temp! /s /q>nul

              При всём этом:

              set unzip_tool="%temp%\unzip.exe"
              set pswu_zip="%temp%\PSWindowsUpdate.zip"
              set pswu_temp="%temp%\pswindowsupdate_content"

              Добавьте в исходник:

              echo !unzip_tool! & echo !pswu_zip! & echo !pswu_temp!

              После if exist !pswu_temp! ( и посмотрите что у вас в переменных.

  46. Доброго времени суток. Все таки восстанавливать скрытые обновления лучше вот так (в cmd с правами администратора и выполняем последовательно команды):
    1 команда: net stop wuauserv
    2 команда: del %systemroot%\SoftwareDistribution\DataStore\Logs\edb.log
    3 команда: net start wuauserv

    Перегружаем компьютер, запускаем центр обновления и выполняем поиск обновлений

    • Восстановил чистую систему Win 7 pro x64 из образа (левого софта нет, даже мс офиса), накатил все обновления из центра обновлений. Применил скрипт версии 0.2.8 от 01.09.2015, все отработало на ура, нежелательные обновления срыты все. Время работы точно не засекал, но примерно 15 минут. В общем вот все в логе лог файл.

  47. Заметил, что после выполнения скрипта восстанавливаются когда-то скрытые мной обновления. Например, восстановились 34 языковых пакета.

  48. Вы писали что при отключении wuauserv нормально работает отрабатывает утилита. Может прописать в скрипте, чтобы при начале работы останавливать/отключать службу Обновление Microsoft. А в конце когда утилита отработает всё возвращать на круг своя.

    P.s. Проверил при отключённом wuauserv, всё быстро отрабатывает. Не важно повторный запуск или первый. Проверял по несколько раз и на виртуальной машине и на обычной.

  49. Подумайте, что не так. При применении скрипта перестают работать, на вскидку, как минимум 3 сайта: goggle.com.ua, forum.ru-board.com, light-alloy.ru. После отключения брендмауэра в службах, все опять начинает работать

    • Отвечаю — работа скрипта тут совершенно не причем. Более того — только что проверил на 2 машинах — указанные сайты открываются без каких-либо проблем.

    • Вероятнее всего это никак не связано с работой скрипта, так как у нас все апдейты над которыми выполняется работа — захардкожены, а у вас черт ногу сломит :)

      • Произошло это после применения скрипта, только непонятно как он мог на это повлиять.
        После установки системы и настройки WU на «искать, но не устанавливать обновления» — WU нашел 145 обнов из них было 12 или 14 (точно не помню) в «необязательных», а остальные в важных — после применения скрипта апдейты разделились на 69 важных и 76 необязательных.
        Если появится свободное время попробую повторить это на виртуалке.

  50. Добавьте возможность автономной работы скрипта при наличии unzip.exe и PSWindowsUpdate.zip рядом со ним, на случай отсутствия интернета.

    • Вполне резонное замечание. Теперь если рядом со скриптом находятся файлы unzip.exe и PSWindowsUpdate.zip — скрипт их не скачивает, а использует именно их (не удаляя их по окончанию работы).

  51. Хотя версию v0.2.1 сейчас запустил та же ситуация. Всё очень долго отрабатывает.
    Там где сейчас запущена версия v0.2.5 прошло уже два часа, сейчас отрабатывает обновление KB3021917.
    Как писал Пончик, после повторного запуска утилита очень долго отрабатывает.

    • Так как ядро и так и там «одной ветки» — разницы в работе быть не должно. В любом случае буду признателен вашему фидбэку с результатами работы скрипта.

  52. Добрый день.
    Подскажите пожалуйста почему версия скрипта v0.2.5 очень долго отрабатывает. Когда первый раз запускал версию v0.2.1, то она отработала очень быстро. Пробовал её и на виртуальной машине и на своей. Всё было быстро и чётко. А версия 0.2.5 уже час что-то делает и я так понимаю ещё не скоро закончит.

    • Это действительно очень странно. Только что запустил на рабочей машине — время работы составило 10 минут на всё. Запустил на виртуальной машине:

      Лучше бы на запускал — память и процессор в минус. svchost.exe забрал всё под себя (за ним крутятся сервисы AeLookupSvc, BITS, EapHost, gpsvc, IKEEXT, iphlpsvc, LanmanServer, ProfSvc, Schedule, SENS, ShellHWDetection, Themes, Winmgmt, wuauserv). Остановив сервис wuauserv (Центр обновления Windows) — нагрузка на процессор и память возвращаются в норму. Остановив сервис обратно запускаем скрипт снова — wuauserv снова слишком много на себя начинает брать. Отключая сервис запускаем скрипт вновь — время его работы составило 3 минуты, но при этом обновления не скрылись (не отключились), разумеется.

      Есть ли соображения по этому поводу?

      • Доброго времени суток. Сдается мне что это именно косяк в службе wuauserv, то есть недопил от мелкомягких. Ранее не однократно встречал такой момент: чистая установка Windows 7 sp1, последующая активация и установка обновлений, служба wuauserv запускала процесс svchost, который в свою очередь грузил профессор на 100%. Мелкософт признала косяк и выпустила обновление службы wuauserv, проблема исчезала. Теперь же после установки чистой оси первым делом мелкософт загружает исправленную службу wuauserv и только потом все обновления. ИМХО, очередной недопил.

      • Ага, вот еще один человек, у которого такая же проблема, как и у меня была. Я отписывался раньше по этой проблеме. И да, когда скрипт долго отрабатывался (0.2.4) я заметил, что память и процессор отжирает svchost.exe.

  53. Почему скрипт долго выполняется при повторном использовании? Прошло два часа, а скрипт все еще на стадии удаления — скрытия обновлений, обработано было около 10 обновлений на тот момент, когда я выключил скрипт.

    • Возможно, дело в том, что машина была загружена под завязку какими-то другими задачами? И повторный запуск скрипта исправил ситуацию? И вы использовали именно его крайнюю версию?

      • Незнаю, может, проблема была в скрипте, может, компьютер был нагружен, в любом случае после перезагрузки компьютера и установки новой версии скрипта 0.2.5 проблема исчезла.

        • Отлично, спасибо за ваше тестирование! Проблема всё же повторяется в исключительных случаях, на данный момент думаю как можно минимизировать воспроизведение данной ситуации.

    • «Почему скрипт долго выполняется при повторном использовании?»
      У меня причиной таких тормозов был NANO Antivirus. Он элементарно тормозил весь процесс, проверяя каждый шаг процесса, после его отключения на время работы скрипта всё пришло в норму. По окончании работы скрипта немедленно перезагрузился и включил внеплановый поиск обновлений. Все найденные обновления перевёл в скрытые.

  54. Подскажите пожалуйста, после выпуска новой версии скрипта, можно запускать его еще раз, ничего дублироваться не будет?

    • Да, можно, ничего дублироваться не будет. Именно из этого расчета и стараюсь писать обновления. В крайнем случае, если какие-либо ошибки будут место быть — можете проделать операции описанные под спойлером «Как вернуть всё как было после запуска скрипта?» — это должно решить все возможные проблемы.

  55. Здравствуйте. А что будет, если после установки вашего скрипта, я установил новые обновления для windows 7? Нужно заново запускать его?

    • Вообще — желательно, но не обязательно. Всё зависит от того что у вас уже стояло, и что удалось «скрыть/отменить». Я бы рекомендовал поставить скрипт в планировщик с исполнением пару раз в неделю, и время от времени приходить сюда за свежей версией скрипта (реализовывать автообновление его на данный момент дико обламывает).

    • На руборде удалил учетку из-за нереального количества говна, приходящего на почту. Поэтому вряд ли смогу явиться, тем более что всегда и здесь могу ответить на какие-либо вопросы :)

  56. И всё таки было бы не плохо, если бы на каждой операционке только её обновления удалялись и скрывались. На некоторых компах это резко сократит время выполнения скрипта.

    • Просмотрев и подумав ещё раз, отвечу — всё таки нет большого смысла разделять «рабочие списки» под разные версии ОС — строго для W7 лишь 2 обновления в данный момент — особого прироста это не даст, а ошибок за собой повлечь — да в легкую. Поэтому, пока что оставим всё как есть

  57. Благодарю, что откликнулись. Зачем полез сам не знаю… Ну для тупого пользователя, мне почти ничего не понятно… Нажимаем Windows + R, вводим cmd. Вылетело окошко, а что дальше не бельме…( как в этом окошке хосты удалять, и какой блокнот заакрывать — я ведь его не открывал… короче влип.

    • 1. Пожалуйста, пользуйся кнопкой «ответить» в ветке комментариев. Порядочек всё таки :)
      2. Отставить панику, скачай этот скрипт, сохрани его с расширением .cmd, запусти, и после этого — перезагрузи машину, или же сделай выкл./вкл. сетевого подключения. После этого всё должно заработать обратно.

      ps. Когда откроется блокнот — удали все записи, которые относятся к работе скрипта. Или ещё проще — снеси вообще всё (не забыв сделать резервную копию), заменив содержимое на:

      127.0.0.1  localhost
      ::1  localhost
  58. Доброго времени суток. Тут вот на одном форуме, добрые люди выложили список обновлений нарушающих безопасность систем на вынь 7, 8, 8.1, 10, список с пояснениями прилагаю:

    KB2505438
    KB2670838 – только Windows 7 (нарушает работу Aero и смазывает шрифты на некоторых веб-сайтах)
    KB2952664
    KB2976978 – только Windows 8
    KB3021917
    KB3035583
    KB3075249
    KB3035583 – приглашение на Windows 10
    KB2952664 – подготавливает систему к обновлению на Windows 10 (отправляет массу данных телеметрии в Microsoft, может повредить системные файлы)
    KB2976978 – подготавливает систему к обновлению на Windows 10
    KB2977759 – подготавливает систему к обновлению на Windows 10, устанавливает средства сбора телеметрии
    KB2990214 – подготавливает систему к обновлению на Windows 10
    KB3021917 – подготавливает систему к обновлению на Windows 10
    KB3022345 – устанавливает сервис диагностического слежения, может повредить системные файлы
    KB3035583 – загружает бесплатное обновление на Windows 10
    KB3044374 – подготавливает систему к обновлению на Windows 10
    KB3050265 – должен исправлять ошибки с обновлением Windows, но также изменяет системные файлы для будущей установки Windows 10
    KB3050267 – подготавливает систему к обновлению на Windows 10
    KB3068708 – устанавливает службу телеметрии, подготавливает систему к обновлению на Windows 10
    KB2922324 – отозван, нужно удалить в любом случае
    KB3014460 – только Windows 8
    KB3015249 – добавляет еще больше телеметрии
    KB3065987 – производит «улучшения» клиента обновления Windows (на самом деле никаких улучшений не замечено)
    KB3075249 – добавляет еще телеметрии
    KB3075851 – производит «улучшения» клиента обновления Windows (на самом деле никаких улучшений не замечено)
    KB3080149 – добавляет еще телеметрии
    • Едрёна корень.. Довольно много лишнего, не относящегося к телеметрии. Да, есть смысл в ряде случаев их снести, но.. Пускай это просто останется тут :)

      • Ни чего страшного )))), я тоже посомневался в некоторых, но все же, опробовал на тестовой станции. Отправило многое в devnull, в том числе и IE11. Так что лучше, если есть возможность, убрать этот список, что бы не вводить людей в заблуждение. Поспешил я, моя вина, не проверил материал. Прошу прощения.
        Действительно, некоторые обновления не скрыло, то есть они не добавились в журнал обновлений как срытые. Но это не страшно, можно и ручками скрыть

        • Странно, попробуйте повторить операцию снова — скрипт был обновлен. Первоначально «отмените сокрытие» всех обновлений, запустите, и расскажите как теперь по итогу — все ли оказались «отключенными»?

          • Доброго времени суток. Извините, только вот сейчас смог провернуть тест, нехватка времени. Отработал последний релиз скрипта без ошибок, все обновления прописанные в скрипте скрылись, кроме одного: 3065987.

    • Блин, как вы меня напугали в отношении KB2670838!
      Этому обновлению уже как 3 года отроду, и у меня проблем с Aero на боевом компе не разу не возникало:) В данном случае лучше рогатого лишний раз не дёргать!

      • Согласен с вами, и видимо всё-же к СЧАСТЬЮ KB2670838 у меня ОТДЕЛЬНО не захотело удаляться (произошла ошибка. Не удалось удалить некоторые обновления), я было «закусил удила», но вовремя остановился!

  59. А почему не проверяете версию ОС при запуске?
    Например:

    reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 7" >nul
    if "%ERRORLEVEL%" == "0" goto :run
    
    reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 8" >nul
    if "%ERRORLEVEL%" == "0" goto :run
  60. Здравствуйте. Установил ваш скрипт и теперь не могу подключиться к интернету. Я обычный пользователь (чайник). Не подскажите как вернуть настройки обратно. Восстановление системы было откл. Win 8.1 x64

    • Самый резонный вопрос к вам — зачем вы запускаете на своей системе то, в чем не уверены?

      А теперь по порядку. Нажимаем Windows + R, вводим cmd. Далее уже в нем:

      rem Удаляем все хосты, что были добавлены с помощью скрипта. Ручками. После сохраняемся и закрываем блокнот
      > notepad %windir%\System32\drivers\etc\hosts
      rem Удаляем блокировку средствами файрвола
      > netsh advfirewall firewall delete rule name="Block MS Telemetry"
      rem Восстанавливаем маршруты
      > route -f
      rem Теперь отключаешь и включаешь заново сетевое подключение. Если не заработает - перезагрузи машину

      После этого мы вернули на свои места почти всё (кроме апдейтов)

  61. Доброго времени суток. Немного огорчило в описании вот это:
    > необходим PowerShell с модулем PSWindowsUpdate
    Зато VBScript есть всегда, набросал небольшую тулзу hideup.vbs (не знаю, влезет или нет в комментарий)

    Option Explicit
    
    Dim objUpdateSession, objUpdateSearcher, colSearchResult, objUpdate
    Dim strUpdate, strCommand, iAction, bFound, iMatches
    Dim i
    
    iAction=0 : strUpdate="" : strCommand="" : bFound=False : iMatches=0
    
    If WScript.Arguments.Count=0 Then
        WScript.Echo "Hideup by evgen_b Version 0.1" & vbCrLf & _
            "Hide/unhide not installed update:" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -hide | -unhide [KB]1234567" & vbCrLf & _
            "View hidden/normal not installed updates:" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -viewhidden | -viewnormal" & vbCrLf & _
            "Example, hide advertising (866 code page!):" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -hide ""Обновление до Windows 10 Pro""" & vbCrLf & _
            "Example, hide trojan:" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -hide KB3035583" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -hide 3035583" & vbCrLf & _
            "Example, view hidden items:" & vbCrLf & _
            "cscript.exe //nologo hideupdate.vbs -viewhidden"
        WScript.Quit -2
    End If
    
    On Error Resume Next
    strCommand=UCase(WScript.Arguments(0))
    strUpdate=UCase(WScript.Arguments(1))
    On Error Goto 0
    
    Select Case strCommand
        Case "-HIDE"       : iAction=1
        Case "-UNHIDE"     : iAction=2
        Case "-VIEWHIDDEN" : iAction=3
        Case "-VIEWNORMAL" : iAction=4
        Case Else
            WScript.Echo "Command? "
            WScript.Quit -2
    End Select
    
    If (iAction=1 Or iAction=2) And strUpdate="" Then
        WScript.Echo "KB expected."
        WScript.Quit -2
    End If
    
    WScript.Echo "Command: [" & strCommand & "] Update: [" & strUpdate & "]"
    
    Set objUpdateSession = createObject("Microsoft.Update.Session")
    Set objUpdateSearcher = objUpdateSession.CreateupdateSearcher()
    
    If iAction=2 Or iAction=3 Then
        Set colSearchResult = objUpdateSearcher.Search("IsHidden=1 and IsInstalled=0")
    Else
        Set colSearchResult = objUpdateSearcher.Search("IsHidden=0 and IsInstalled=0")
    End If
    
    For i=0 To colSearchResult.Updates.Count-1
    	Set objUpdate = colSearchResult.Updates.Item(i)
        Select Case iAction
            Case 1
                If InStr(1, objUpdate.Title, strUpdate, vbTextCompare) > 0 Then objUpdate.IsHidden = True  : WScript.Echo "Hiding: " & objUpdate.Title : bFound=True : iMatches=iMatches+1
            Case 2
                If InStr(1, objUpdate.Title, strUpdate, vbTextCompare) > 0 Then objUpdate.IsHidden = False : WScript.Echo "Unhiding: " & objUpdate.Title : bFound=True : iMatches=iMatches+1
            Case Else
                WScript.Echo objUpdate.Title
        End Select
    Next 'i
    
    Set objUpdateSession = Nothing
    Set objUpdateSearcher = Nothing
    Set colSearchResult = Nothing
    Set objUpdate = Nothing
    
    If (iAction=1 Or iAction=2) Then
        If bFound Then WScript.Echo "Found [" & strUpdate & "] " & iMatches & " times. Done." : i=0 Else WScript.Echo "Not found [" & strUpdate & "]. Exit." : i=1
        WScript.Quit i
    Else
        WScript.Echo "Count=" & i
        WScript.Quit 0
    End If

    Можно допилить под свои нужды, например, удаление прикрутить. Успехов.

    • Привет! Всё бы ничего, но как VBS в целом, так и в частности («Microsoft.Update.Session»).Search чертовски медлительны. Теста ради в одной из реализаций скрипта была генерация VBS скриптов, которые и должны были заниматься «отключением» апдейтов, именно описанным тобой методом. После их запуска в фоне они крутились в памяти около 50 минут, и большая их часть даже не отработала, вывалившись с ошибкой.
      Именно поэтому от VBS пришлось уйти.

  62. Можно ещё отключить Не проверять на наличие решений в Панель управления\Все элементы панели управления\Центр поддержки\Настройка центра поддержки\Параметры отчета о неполадках

  63. Установил PowerShell с модулем PSWindowsUpdate скрипт отработал всё кроме сокрытия обновлений, чего больше всего хотелось!

    • Скачать его можно здесь, содержимое архива положить по пути %windir%\System32\WindowsPowerShell\v1.0\Modules. На данный момент скрипт должен автоматически это успешно делать. PoserShell поставляется с Win 7/8/8.1/10

  64. Это точно, лишним ни чего не будет в нашем деле )))). У меня работает все так: Основная система Пингвин, под ним в виртуальной машине крутятся винды (7, 8.1, 10). В iptables создал правила дропать все пакеты от virtualbox по предложенному списку ip. Пока так. Точнее результаты будут когда разверну дома свой проксик со снифером, думаю в ближайшие две три недели соберусь с силами. А вот с вашим решением экспериментировал на тестовой станции (ноут) где основная ось вынь и напрямую к маршрутизатору.

  65. Доброго времени суток еще раз :) За комментировал старую команду, добавил предложенную постоянные маршруты добавились, спасибо. Думаю нет смысла выкладывать результат route print, так как все стало как надо, задумался почему старая команда не отработала.
    Вот что-то подумалось мне, если мелкософт игнорирует содержимое файла host, что мешает им так же игнорировать статические маршруты пользователя? При отработке сбора и отправки информации, на прямую добавляется временный статический маршрут по окончании операции маршрут грохается. Все таки сдается мне, что вернее и надежнее это блокировать в маршрутизаторе или как у меня на оптическом терминале (huawei).

    • Порой, терминал ведет себя довольно не предсказуемо. Не берусь судить о причинах такого поведения.
      Любое средство ограничения возможно обойти — тут спору нет. Вопрос лишь в том на сколько основательно подходят разработчики к возможным препятствиям, и именно по этой причине ограничения вводятся на трех доступных уровнях — хостах, маршрутах и встроенном файрволе.
      Имея на руках списки хостов и IP адреса не составит труда ввести ограничения и на уровне роутера/маршрутизатора, и лишней эту меру — явно не назовешь :)

  66. Вот более расширенный список блокировок hosts. Правда не только для Windows + еще Skype (реклама, обновления), uTorrent (реклама, статистика) и проверки регистрации продуктов Adobe.
    Вообще на pastebin’е встречал большие подборки для блокировки лишнего для M$ (Win/WMP/Xbox..)

    • Более того скажу — лучше всего данные ограничения вводить именно на маршрутизаторе, дабы не зависимо от платформы резалась и реклама, и «левые» запросы. Чуть ранее как раз писал о том как средствами микротика резать рекламу и убить рекламу в Skype. На счет uTorrent — в курсе не был, т.к. Transmission — наше всё :) Спасибо за интересный список!

      • Спасибо вам, за поддержку и развитие сего скрипта :)
        Еще немного расширил свой список (добавились записи из вашей ссылки про Skype) — http://pastebin.com/1ZqjiMNx
        Рецепт uTorrent если не ошибаюсь тоже был заимствован с Хабра.
        А вот пара больших списков для блокировки M$:
        http://pastebin.com/krsQTypn
        http://pastebin.com/pzpk5FaL

        И мои скромные предложения по функционалу скрипта:
        — Добавить отключение/удаление Silverlight (опционально, например)

        reg delete HKLM\Software\Microsoft\Silverlight /f 
        reg delete HKEY_CLASSES_ROOT\Installer\Products\D7314F9862C648A4DB8BE2A5B47BE100 /f 
        reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\D7314F9862C648A4DB8BE2A5B47BE100 /f 
        reg delete HKEY_CLASSES_ROOT\TypeLib\{283C8576-0726-4DBC-9609-3F855162009A} /f 
        reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\install.exe /f 
        reg delete HKEY_CLASSES_ROOT\AgControl.AgControl /f 
        reg delete HKEY_CLASSES_ROOT\AgControl.AgControl.5.1 /f 
        reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00} /f 
        rmdir /s /q "%ProgramFiles%\Microsoft Silverlight" 
        rmdir /s /q "%ProgramFiles(x86)%\Microsoft Silverlight" 

        — Добавить логирование/отчетность проделанной скриптом работы.

        • P.S. А не прокатит скрыть/отключить установку нежелательных обновлений твиком реестра? Как это делается для MRT:

          Windows Registry Editor Version 5.00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\MRT]
          "DontReportInfectionInformation"=dword:00000001
          "DontOfferThroughWUAU"=dword:00000001

          Хотя наверное вряд ли..
          + еще полезный твик (на всякий случай) по отключению перехода на новую версию ОС:

          Windows Registry Editor Version 5.00
          
          [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
          "DisableOSUpgrade"=dword:00000001
          [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\OSUpgrade]
          "ReservationsAllowed"=dword:00000000
          • Итак, логирование — добавил. По умолчанию лог имеет имя %имя_самого_скрипта%.log, и пишется в ту же директорию, откуда скрипт и запускаем.

            Списки тобой предоставленные как мне кажется — слишком избыточны. В случае приступа паранойи можно их забивать ручками, но в скрипт их добавлять я смысла особого не вижу.

            Простой правкой реестра хотфиксы «отключить» не получится, к сожалению.

            Для отключения «перехода на новую версию ОС» мы сносим соответствующие хотфиксы, дополнительные телодвижения мне кажутся излишними.

            И спасибо за участие в внесение предложений!

  67. Доброго времени суток. Почему-то маршруты не добавляются на постоянной основе, хотя вижу в скрипте параметр -p используется, в чем компот?

    • Попробуйте изменить строку:

      route -p ADD %ip_addr% MASK 255.255.255.255 %REDIRECT%>nul 2>&1

      на:

      route -p ADD %ip_addr% MASK 255.255.255.255 %REDIRECT%

      И посмотреть результат работы (будут ли вываливаться какие-либо ошибки). После работы скрипта выполнить route print и сохранить результат. Перезагрузиться, и вновь выполнить route print с проверкой соответствия с предыдущим результатом.

      После выполнения этих действий — возвращайтесь :)

  68. Здравствуйте. Ссылка «скачать» ведёт на старую (очень) версию скрипта — лучше напишите, чтобы качали/копировали с Гитхаба.
    Плюс, в некоторых источниках советуют также останавливать службу:

    echo Final Step: Stop remoteregistry-service (if it still exists)…
    sc config remoteregistry start= disabled
    sc stop remoteregistry

    P. s. Отличная работа, огромное спасибо!

    • Скажите пожалуйста, а каким боком служба удаленного реестра может влиять на телеметрию? Более того, она очень часто используется для удаленного администрирования. Отключать её не только нет смысла, но и чревато некоторыми проблемами.

      Ссылка на «Скачать» была поправлена ещё до того, как вы написали свой комментарий :)

  69. Вы принципиально не хотите разделять скрипт на несколько файлов и использовать циклы или на это есть какие-то другие причины?

    if %DisableTasks%==1 (
      call:title "Disable some windows tasks.."
      for /F "tokens=*" %%? in (tasks.txt) do call:disable_task "%%?"
    )
    • Да, именно принцип «Один файл» является руководящим. Разумеется было бы проще (и удобнее) реализовать циклом, но необходимость таскать ещё и дополнительные файлы-списки для этого — через чур на мой взгляд

      • Это не необходимость, а лишь возможность.

        for %%? in (
        "\Microsoft\Windows\Application Experience\AitAgent"
        "\Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser"
        "\Microsoft\Windows\Application Experience\ProgramDataUpdater"
        "\Microsoft\Windows\Autochk\Proxy"
        "\Microsoft\Windows\Customer Experience Improvement Program\Consolidator"
        "\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask"
        "\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip"
        "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector"
        "\Microsoft\Windows\PI\Sqm-Tasks"
        "\Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem"
        "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
        "\Microsoft\Windows\Maintenance\WinSAT"
        "\Microsoft\Windows\Media Center\ActivateWindowsSearch"
        "\Microsoft\Windows\Media Center\ConfigureInternetTimeService"
        "\Microsoft\Windows\Media Center\DispatchRecoveryTasks"
        "\Microsoft\Windows\Media Center\ehDRMInit"
        "\Microsoft\Windows\Media Center\InstallPlayReady"
        "\Microsoft\Windows\Media Center\mcupdate"
        "\Microsoft\Windows\Media Center\MediaCenterRecoveryTask"
        "\Microsoft\Windows\Media Center\ObjectStoreRecoveryTask"
        "\Microsoft\Windows\Media Center\OCURActivate"
        "\Microsoft\Windows\Media Center\OCURDiscovery"
        "\Microsoft\Windows\Media Center\PBDADiscovery"
        "\Microsoft\Windows\Media Center\PBDADiscoveryW1"
        "\Microsoft\Windows\Media Center\PBDADiscoveryW2"
        "\Microsoft\Windows\Media Center\PvrRecoveryTask"
        "\Microsoft\Windows\Media Center\PvrScheduleTask"
        "\Microsoft\Windows\Media Center\RegisterSearch"
        "\Microsoft\Windows\Media Center\ReindexSearchRoot"
        "\Microsoft\Windows\Media Center\SqlLiteRecoveryTask"
        "\Microsoft\Windows\Media Center\UpdateRecordPath"
        ) do call:disable_task %%?
        • Хорошо, я подумаю над вашим предложением, спасибо за идею что приложена выше. Сказывается полное отсутствия опыта в виндовом скриптинге

          • У самого такая проблема просто вспомнил что видел такую конструкцию в 1м из скриптов для win xp лет 5-7 назад.

          • Кстати предложение обновить powershell во время выполнения скрипта выглядит забавным учитывая то что после его работы в download center исчезают все кнопки загрузки, а от microsoft support остаётся только шапка. T_T

              • Имелось ввиду это сообщение:

                call:log "Cannot disable KB%kb_id%: Update your PowerShell or install PowerShell module 'PSWindowsUpdate'"

                А вот скриншот с сайта Microsoft:

                  • И ещё странице загрузки модуля PSWindowsUpdate тоже страдает конкретно в моём случае с неё исчезли пути куда его надо распаковать. У себя временно удалил правило брандмауэра, выполнил route -f, пере подключил интернет (он перестал работать после route -f), скачал всё что нужно, установил и снова использовал скрипт. Так что какие ip отвечают за корректную работу сайтов microsoft сказать не могу.

                    • Аналогичных проблем не наблюдаю ни на рабочей машине, ни на виртуалке (обе Win 7):

                      Можете ли дать больше информации для попытки воспроизвести данное поведение?

      • На последний комментарий отвечать нельзя поэтому отвечу тут. Заметил указанную проблему после выполнения скрипта версии 0.2.1.
        Система: Windows 7 sp1 x64 home basic (лицензионная OEM).
        Подключение к интернету через Wi-Fi роутер с ip адресом 192.168.0.1.
        После описанных в предыдущем комментарии сайты вернулись в норму до повторного запуска скрипта.
        На странице исчез блок после слов Module can be installed manualy by downloading Zip file and extract in two places: (вернее я думал что он исчез но это не так).
        Ну скриншот с download center был выложен ниже, а от support microsoft осталась только шапка с нерабочими ссылками.
        В Firefox 40.0 и Internet Explorer 11 страницы выглядят почти идентично.

        • Т.е. причиной данного поведения является именно блокирование определенных маршрутов? В таком случае я прошу вас ручками привести блок:

          if %BlockIPaddresses%==1 (
             call:title "Block M$ servers IP addresses.."
             :: ...
          )

          К следующему виду:

          if %BlockIPaddresses%==1 (
            call:title "Block M$ servers IP addresses.."
            call:block_route "23.218.212.69"
            call:block_route "65.55.108.23"
            call:block_route "65.39.117.230"
            call:block_route "134.170.30.202"
            call:block_route "137.116.81.24"
            call:block_route "204.79.197.200"
          )

          Запустить скрипт, и проверить вновь — всё ли функционирует как задумывалось. Возможно, преобразовывая имена доменов в IP адреса с последующей блокировкой — немного всё таки «нагрубил».

          • Да со старым списком блокируемых адресов проблем нет. Думаю проблема со страницей загрузки PSWindowsUpdate была вызвана тем что был заблокирован адрес соответствующий домену ajax.aspnetcdn.com с которого должен был грузится JQquery и его плагины, но насчёт остальных страниц не уверен.

          • После выполнения скрипта версии 0.2.1. тоже наблюдалась проблема, аналогичная описанной Pavel (на страницах обновлений MS загружалась только шапка, остальное поле было пустым), хотел написать Вам, однако сегодня, после загрузки, ее уже не наблюдаю. :)
            Система: Windows 7 sp1 x64 Pro (лицензионная OEM).
            Подключение к интернету через UTP, роутер с ip адресом 192.168.0.1

            • Если данная проблема появится снова — дайте пожалуйста знать. Если ошибка будет иметь место быть — «дропните» маршруты вручную, отключите и подключите обратно сетевое подключение, и запустите крайнюю версию скрипта снова. Буду крайне признателен за ваше тестирование!

    • Пожалуйста, приведите пример того какие были записи до запуска, и какой вид принял файл hosts после запуска выше описанного скрипта в вашем случае?

      Update. Да, ошибка при отсутствии пустой строки в конце файла хостов успешно воспроизводилась. Пожалуйста, проверьте теперь

  70. Win7 Pro x64, KIS16 (Касперский выкл), в любом случае любым способом, даже при включении UAC. Необходимо описание условий запуска (наличие PS3 или PS2 или еще чего.) Стоит PS4.
    Вот собственно все что показывает консоль после запуска от админа:

    [17:12:03,21] [Failure] Need administrative permissions
    [i] Exit after 60 seconds, or press any key for exit now
    • PowerScript в данный момент не используется вообще, если вы не успели обратить на это внимание. Пожалуйста, выполните в консоли следующую команду:

      C:\>net session && echo %errorlevel%
      В списке нет элементов.
      0
      C:\>

      Вывод должен быть аналогичен в случае если выполняется команда действительно от имени администратора. Если %errorlevel% отличается (а исходя из вашего описания он отличается) — то стоит разбираться почему выполнение происходит не от привилегированного пользователя.

        • От зараза.. Хорошо, я что нибудь придумаю. Как временное решение — удалить goto:checkPermissions. Ты получаешь уведомления об ответах на комментарий по email?

          • Уведомлений на мыле нет. Я заметил только одно, если службу «сервер» отключаешь через службы — она исчезает вообще. Помогает бубен «Удалить print&share» сервис из настроек сетевой карты и заново добавить его.

              • Все работает, но и так работало, проверил с отключенной службой «Сервер». Спасибо за рассмотрение данного вопроса. Возможно стоит размыслить об автоматическом добавлении правил фаервола для блокировки IP, как делает это Destroy-Windows-10-Spying…

              • Ошибка таки есть в синтаксисе… Или же это нормально?

                [i] Disable automatic windows update (make search, but you must manually select
                updates to install)
                
                Ошибка. Недопустимое имя раздела.
                Введите "REG ADD /?" для получения справки по использованию.
                Ошибка. Недопустимое имя раздела.
                Введите "REG ADD /?" для получения справки по использованию.
                
                
                [i] Exit after 60 seconds, or press any key for exit now
  71. А если MS игнорирует hosts — интересно, не поможет ли через route add.. Добавить на эти адреса постоянные маршруты, препятствующие маршрутизации туда трафика? Можно ли сделать под это универсальный скрипт?

  72. Добавить в скрытые обновления чтобы снова не прилетали через powershell 3:

    echo.
    echo * Hiding crapware hotfix KBs in Windows Update, this will take a moment
    echo   NOTE: Confirm with Y or A when asked
    echo.
    powershell -ExecutionPolicy RemoteSigned -NoLogo -Command "Import-Module %~dp0\PSWindowsUpdate ; Hide-WUUpdate -KBArticleID KB3035583,KB2952664,KB2976978,KB3021917"
    • К сожалению данный пример требует модуля PSWindowsUpdate, который в стоке как я понимаю — не поставляется. По этой причине данный метод будет работать на единицах машин. Ищу возможное решение данного вопроса, идея-то — отличная.