Служба Zapret: автозапуск и сообщение «service is installed»
Красная строка [ERROR] Windows service 'zapret' is installed — это отказ скрипта тестов, а не сбой сборки. Уберите службу через Remove Services, прогоните тесты и верните её Install Service.
Вы запустили 12. Run Tests, а тесты не начались: в окне красная строка [ERROR] Windows service 'zapret' is installed, под ней жёлтые подсказки Remove the service before running tests и Open service.bat and choose 'Remove Services'. Это не сбой сборки и не ошибка установки: скрипт тестов отказался работать, потому что в системе стоит служба zapret. Обход при этом никуда не пропал — он работает прямо сейчас. На время тестов службу нужно убрать, а потом вернуть.
Откуда берётся эта строка
Строку выводит скрипт тестов utils\test zapret.ps1, а не сама программа обхода. Перед стартом он проверяет, нет ли в системе службы zapret, и если находит её, печатает на экране ровно это:
[ERROR] Windows service 'zapret' is installed
Remove the service before running tests
Open service.bat and choose 'Remove Services'Дальше идут Fix the errors above and rerun. и Press any key to exit..., и окно закрывается.
Скрипт устроен так: он сам запускает по очереди каждый файл general*.bat в папке сборки и измеряет, какая стратегия пробивает фильтры провайдера. Но если служба уже стоит, она уже держит обход своей стратегией. Два обходчика одновременно на одном драйвере мешают друг другу, и результаты тестов показывали бы службу, а не те файлы, которые скрипт перебирает. Поэтому тесты сначала требуют убрать её.
На старых версиях сборки тестов не было вовсе, поэтому в чужих инструкциях этой строки вы не найдёте; по обсуждениям на GitHub она появилась вместе с самим скриптом тестов.
Как убрать службу, прогнать тесты и вернуть её
Тесты за пять шагов
- 1
Откройте
service.batСкрипт запросит права администратора, подтвердите. Появится меню с номерами.
- 2
Выберите
2. Remove ServicesСлужба удаляется, обход выключается. Что именно удаляет этот пункт и что остаётся, разобрано на странице Remove Services.
- 3
Выберите
12. Run TestsСкрипт спросит тип тестов и набор файлов, дальше сам перебирает стратегии по очереди. На время тестов фильтр IPSet переводится в
any, при следующем запуске скрипта он вернётся как был. Дождитесь таблицы результатов; файлы с ними лежат в папкеutils\test results. - 4
Посмотрите, какая стратегия прошла
Если прошли несколько, берите первую из списка прошедших, а остальные запомните: если выбранная через неделю перестанет работать, начнёте со следующей.
- 5
Выберите
1. Install Serviceи укажите номер стратегии-победителяСлужба встанет с этой стратегией, и обход снова будет запускаться сам при загрузке Windows.
Во время тестов обход не пропадает, потому что стратегии запускает сам скрипт. А вот в промежутке между Remove Services и Install Service обхода нет, если не запустить какой-нибудь bat-файл вручную.
Зачем нужна служба и что делает Install Service
Служба запускает тот же bat-файл со стратегией, только не человек двойным кликом, а сама Windows при каждой загрузке. Окно консоли держать открытым не нужно: winws.exe работает в фоне, а окно не появляется.
Когда вы выбираете 1. Install Service, сборка показывает список всех *.bat файлов в папке, кроме service*, с номерами:
Pick one of the options:
...
0. Exit
Input option (0-N, default: 0):Выбранный файл сборка не запускает, а вычитывает из него строку с winws.exe и параметрами и создаёт службу zapret с этими параметрами: DisplayName= "zapret", start= auto, описание Zapret DPI bypass software. Имя bat-файла запоминается в реестре, поэтому Check Status потом показывает, из какого файла стоит стратегия.
Отсюда следствие: после обновления сборки или правки bat-файла службу нужно переставить. Старая служба держит старые параметры и про новые файлы не знает.
Служба или ручной запуск bat-файла? Если стратегия уже найдена и компьютером пользуется вся семья, ставьте службу. Пока перебираете варианты, запускайте bat вручную. Как перебирать стратегии и чем они отличаются, подробно разобрано на отдельной странице.
Как понять, стоит ли служба сейчас
Откройте service.bat и выберите 3. Check Status. Если служба стоит, вы увидите строки:
Service strategy installed from "general.bat"
"zapret" service is RUNNING.Вместо general.bat будет имя вашего bat-файла. Если службы нет, строка про установленную стратегию не появится вовсе. Остальные строки статуса service is NOT running и is not installed разобраны на странице Check Status.
Есть и другой признак: если вы запускаете bat-файл, а служба уже стоит, в окне появляется строка "zapret" is ALREADY RUNNING as service, про неё есть отдельная страница. Само окно ZAPRET SERVICE MANAGER и все пункты меню описаны отдельно.
Частые вопросы
Тесты показали другую стратегию, чем та, что стояла. Ставить новую?
Да, ставьте ту, что прошла тесты сейчас. Тесты измеряют, что пробивает фильтры провайдера в этот момент, а фильтры со временем меняются, поэтому прежний выбор мог устареть. Если новая стратегия через неделю отвалилась, повторите круг: убрать службу, прогнать тесты, поставить победителя.
Можно просто закрыть скрипт и пользоваться дальше?
Можно. Тесты не обязательны, служба работает, и строка [ERROR] Windows service 'zapret' is installed ничего не ломает. Тесты нужны только для перебора стратегий. Если обход работает и вас всё устраивает, ничего не трогайте.
Убрал службу ради тестов, и Дискорд перестал открываться
Это ожидаемо: обход исчез вместе со службой, потому что до Install Service ничего его не заменяет. Доведите круг до конца, прогоните тесты и поставьте службу со стратегией-победителем, и Дискорд откроется снова. Бросать на полпути не стоит, ведь без службы обход не восстановится сам.
Служба стоит, но нужно проверить новую сборку после обновления. В каком порядке?
Уберите службу (2. Remove Services), удалите старую папку сборки, распакуйте новую, прогоните тесты и поставьте службу с победителем (1. Install Service). Полная переустановка по шагам описана на странице установки сборки.
Дальше по теме