Windows 7/8/8.1 — препятствуем сбору данных о пользователе (телеметрии)
Внимание! Данный пост был опубликован более года назад и, возможно, уже утратил свою былую актуальность. Но это не точно.

После крайних вестей о том, что 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 и запустить с правами администратора:

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

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

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

Как вернуть всё как было после запуска скрипта?

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

  • Чистим файл хостов:

    C:\> notepad %windir%\System32\drivers\etc\hosts
    
  • Удаляем правило файрвола:

    C:\> netsh advfirewall firewall delete rule name="Block MS Telemetry"
    
  • Восстанавливаем маршруты:

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

  • Панель управленияЦентр обновления 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 и самого модуля для PowerShell - PSWindowsUpdate.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