как установить приложение как службу windows xp
Пилим свою службу Windows – руководство для «не настоящих программистов»
Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум потребуется специальный интерфейс для получения команд от системы. А раз есть требования и ограничения, то есть и скрипты, и милые сердцу костылики для преодоления.
Статья будет полезна тем, кто, как и я — «программист не настоящий».
Зачем нужна служба, если есть назначенные задания
В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.
Лично мне за последние пять лет приходилось создавать службу три с половиной раза:
Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.
Способ первый. От Microsoft
Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:
Работа так называемого «сервера».
Теперь попробуем превратить скрипт в службу. Для этого скачаем Windows Resource Kit Tools, где будут наши утилиты. Начнем с того, что установим пустой сервис командой:
Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.
Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services\WebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:
Настроенная служба.
Можно запустить и радоваться.
Работающая служба.
Однако у этого способа есть недостатки:
Поэтому перейдем к методу, частично лишенному этих проблем.
Способ второй, почти взрослый
Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.
Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.
Установка через PowerShell.
Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.
И вправду работает.
В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.
GUI запускается командой:
Настроить можно даже приоритет и использование ядер процессора.
Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.
Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.
Способ третий. AutoIT
Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.
Итак, попробуем «завернуть» в нее наш веб-сервис:
Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.
Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.
Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.
Оно работает!
Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.
Расскажите, а вам приходилось превращать скрипты и приложения в службы?
Устанавливаем свою службу в windows xp, 7, 8, 10
В этой маленькой статье я попытаюсь рассказать как добавить свою службу в операционной системе Windows.
И так для начала нам понадобится программа nssm (ссылка для скачивания) именно эта программа умеет добавлять службы, однако у неё есть недостатки: запуск службы происходит непосредственно через неё то есть мы должны будем постоянно держать ее включенной (хотя она потребляет небольшое количество оперативной памяти). В то же время именно эта особенность позволяет ей запускать практически любые программы в качестве службы (у большинства программ отсутствует поддержка их запуска в качестве службы).
Для начала скачаем саму программу с официального сайта.
Распаковываем архив и перемещаем программу nssm.exe (просто копируем бинарник в зависимости от того какой у вас Windows 32 или 64 бит, 32 битную можно использовать в обоих случаях) какую-нибудь постоянную директорию откуда мы ещё и будем запускать, например я помещу в директорию C:\Program Files (x86)\nssm\nssm.exe
От этой директории будут зависеть все последующие команды.
Теперь нам нужно запустить командную строку, быстро это можно сделать так: Win + R и набрать cmd после чего нажать клавишу Enter.
Теперь в командной строке вводим:
Программа попросит у нас права администратора для установки службы и появится окошко для указания название службы (Service name) и пути к программе (Path) и другие настройки если они вам нужны. После указания название службы и пути к программе нажимаем кнопку Install service, и у нас должно быть появится окошко подтверждающие что служба установлена в противном случае будет написано ошибка и причина которой она вызвана.
Создание службы в Windows
Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов, я обычно пользуюсь двумя из них.
Sc.exe
Для создания и службы из командной строки можно использовать программу SC (Sc.exe). SC представляет из себя утилиту командной строки, которая реализует вызовы ко всем функциям интерфейса прикладного программирования (API) управления службами Windows. С ее помощью можно производить любые действия со службами — просматривать состояние, управлять (запускать, останавливать и т.п.), изменять параметры, а также создавать новые службы.
При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.
sc create [ServiceName] [binPath= ]
ServiceName — указывает имя, которое будет присвоено разделу службы в реестре. Имейте в виду, что это имя отличается от отображаемого имени службы (имени, которое отображается в оснастке «Services»);
binPath — указывает путь к исполняемому файлу службы.
Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:
Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto
Затем откроем оснастку «Services» и посмотрим результат.
Sc config MyService DisplayName=″My Service″
Ну и полностью удалить службу можно вот так:
Sc delete MyService
PowerShell
Изменить параметры службы можно командлетом Set-Service :
В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:
Как запустить приложение в виде службы Windows
Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.
NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.
Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.
Создание службы
Также на этапе создания новой службы можно указать некоторые дополнительные параметры.
На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.
Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:
• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.
Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.
По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.
На вкладке «Input/Output (I/O)» можно задать перенаправление ввода\вывода приложения в указанный файл.
На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.
Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:
nssm install notepad ″C:\Windows\system32\notepad.exe″
Управление службой
После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.
Удаление службы
Запуск службы в интерактивном режиме
Основное отличие пользовательского приложения от службы заключается в том, что после запуска приложение может требовать для продолжения работы дополнительных действий со стороны пользователя — например нажать кнопку или ввести команду. Для этого необходимо получить к нему доступ, что как оказывается, не так-то просто сделать.
Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».
А дальше начинаются чудеса 🙂 Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7\Server 2008 эта служба активна по умолчанию, а в Windows 8\Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того, если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.
А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLM\System\CurrentControlSet\Control\Windows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.
После чего открываем консоль PowerShell и стартуем службу обнаружения командой:
Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»
и попадаем в нулевой сеанс, в котором работает наше приложение. Дальше производим с ним необходимые действия и возвращаемся обратно.
Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию 🙂
Установка службы. Запускаем приложение как системную службу
Как запустить приложение в виде службы Windows
NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.
Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.
Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду
Nssm install notepad
которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.
Также на этапе создания новой службы можно указать некоторые дополнительные параметры.
На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.
Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:
На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.
Возможно отключить некоторые или даже все методы, однако для разных приложений срабатывают разные методы и для корректного завершения работы приложения рекомендуется оставить все как есть.
По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.
На вкладке «Input/Output (I/O)» можно задать перенаправление ввода\вывода приложения в указанный файл.
На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.
Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:
Nssm install notepad «C:\Windows\system32\notepad.exe»
После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.
Последнее обновление: 31.10.2015
По умолчанию для файла установщика генерируется название Installer1.cs. Оставим это название.
После добавления узел установщика в окне обозревателя решения (Solution Explorer) будет содержать два файла: сам файл класса Installer1 и файл дизайнера Installer1.Designer.cs. Откроем файл кода. Сейчас он выглядит так:
Using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.Linq; using System.Threading.Tasks; namespace FileWatcherService < public partial class Installer1: System.Configuration.Install.Installer < public Installer1() < InitializeComponent(); >> >
Теперь изменим его следующим образом:
Он определяет ряд методов: Install() (установка), Commit() (завершает транзакцию установки), Rollback() (восстанавливает состояние компьютера до установки) и Uninstall() (удаление). При необходимости мы можем их переопределить. Но в нашем случае мы будем использовать только конструктор.
Private System.ComponentModel.IContainer components = null; private void InitializeComponent()
Через свойства оба класса позволяют задать настройки службы. Основные свойства ServiceProcessInstaller:
Username : определяет, под какой именно учетной записью будет запускаться служба
Password : определяет пароль для запуска службы
Account : определяет тип учетной записи. Может принимать одно из значений перечисления ServiceAccount :
LocalSystem : учетная запись предоставляет широкие привилегии на локальном компьютере и соответствует компьютеру в сети
LocalService : учетная запись соответствует пользователю без привилегий на локальном компьютере и предоставляет любому удаленному серверу учетные данные анонимного доступа
NetworkService : учетная запись предоставляет широкие локальные привилегии и также представляет любому удаленному серверу учетные данные компьютера
User : учетная запись определяется конкретным пользователем в сети
HelpText : возвращает справку, содержащую информацию об установке службы
Некоторые важнейшие свойства ServiceInstaller:
DelayedAutoStart : определяет, должна ли служба запускаться не сразу после загрузки операционной системы, а немного позже
DisplayName : устанавливает имя службы, которое будет отображаться в различных утилитах управления службами
ServiceName : имя службы, должно совпадать со значением свойства ServiceName у класса службы
То есть в нашем случае для службы установлен запуск вручную, и ей будут предоставляться широкие привилегии.
В конце оба объекта установщиков надо добавить в коллекцию Installers: Installers.Add()
Итак, у нас готов код службы и код инсталяторов. Теперь скомпилируем проект, и в проекте в папке bin/Debug у нас будет лежать исполняемый файл службы, который будет называться по имени проекта и иметь расширение exe. Например, в моем случае он называется FileWatcherService.exe.
И теперь нам надо установить службу. Для этого нам надо запустить специальную утилиту InstallUtil.exe и передать ей имя файла службы.
Утилиту InstallUtil.exe можно найти по пути C:\Windows\Microsoft.NET\Framework64\v4.0.30319 для 64-битных платформ и в C:\Windows\Microsoft.NET\Framework\v4.0.30319 для 32-битных.
И если мы зайдем после успешной установки в консоль служб, то сможем найти только что установленную службу.
Мы ее можем запустить, и она будет выполнять все те действия, которые мы в ней определили.
Если нам служба больше не нужна, и мы хотим ее удалить, то мы можем воспользоваться той же утилитой, передав ему флаг u:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe /u D://servces/FileSystemWatcher.exe
И после запуска созданная служба будет мониторить все действия с файлами в папке D://Temp и записывать информацию о действиях в текстовый файл.
Данный материал является зеркалом статьи сайта Заметки о WINDOWS с некоторыми примечаниями из личного опыта.
Иногда может потребоваться взять исполняемый файл и зарегистрировать его в качестве службы Windows. Для этого есть несколько способов. Два из них приведены ниже.
При создании службы с помощью SC нет необходимости вручную создавать записи в реестре и затем перезагружать компьютер, чтобы обеспечить обновление базы данных диспетчером служб. Также SC позволяет указать имя удаленного компьютера, что дает возможность управлять службами как на локальном, так и на удаленном компьютере.
Для примера создадим службу MyService, укажем отображаемое имя My New Service, зададим тип службы и поставим ее на авто-запуск:
Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto
Затем откроем оснастку «Services» и посмотрим результат.
Sc config MyService DisplayName=″My Service″
Ну и полностью удалить службу можно вот так:
Sc delete MyService
Примечание. Есть некоторые особенности использования утилиты sc. Например при создании сервиса в Windows XP необходимо ставить пробел перед аргументом, передаваемым параметру!
Если мы подадим команду:
C:\sc create Weblogic binPath=C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName=»WebLogic» type=share start=auto error=ignore
В ответ получим help по использованию sc без какого либо сообщения об ошибке:
Подаем ту же команду вставив пробелы после символа «=»:
C:\>sc create Weblogic binPath= C:\Oracle\MiddleWare\user_projects\base_domain\startWeblogic.cmd DisplayName= «WebLogic» type= share start= auto error= ignore
Вот такая недокументированная особенность.
Так же необходимо внимательно относится к прочим параметрам. В случае приведенном ниже изменены значения параметров start и type:
CreateService FAILED 87:
и после двоеточия никаких пояснений.
Для изменения параметров системной службы нужно ввести новые параметры командой:
# sc config имя_службы start= параметр_запуска
Для того, чтобы запустить службу в ОС Windows нужно в консоли набрать:
# net start имя_службы
Для остановки службы:
# net stop имя_службы
Для перезагрузки службы:
# net restart имя_службы
Если требуется определить, какие службы будут зависеть от данной службы, можно набратьsc enumpend
Теперь, чтобы увидеть, какие службы находятся в зависимости от службы сервера под названием lanmanserver, надо подать команду
sc enumdepend Lanmanserver
Запуск такой команды на моем тестовом сервере Windows 2003, например, показывает, что службы Netlogon, Dfs, а также службы браузера компьютера находятся в зависимости от службы сервера.
Для завершения и определения зависимостей сервера можно воспользоваться подкомандой qc, как показано ниже
sc qc Lanmanserver
Эта команда выдает девять строчек информации о службе, одна из которых DEPENDENCIES. При запуске этой команды выясняется, что сервер не зависит ни от каких служб. Чтобы узнать, какие службы имеют более одной зависимости, можно протестировать диспетчер на службе Netlogon. Мы увидим, что служба Netlogon для начала работы требует запуска служб и сервера, и Workstation.
Иногда зависимости бывают более сложными. Например, некоторые службы могут начать работу, только если запущена одна из трех других служб. Запуск всех трех необязателен, вполне достаточно одной. Можно проинструктировать Windows по поводу такой динамики, информируя систему о том, что данная служба находится в зависимости от группы служб. В системе Windows имеется целый ряд таких служб, как, например, SCSI CDROM Class, SCSI miniport, Parallel arbitrator, NetBIOSGroup, NDIS, а также службы первичного диска и многие другие. Все эти службы и драйверы можно увидеть в списке групп, набрав
sc query type= service?driver?all group=
Например, чтобы посмотреть все службы и драйверы в группе служб первичного диска, нужно набрать
sc query type= all group=
Названия групп значения не имеют. Можно добавлять службы в имеющиеся группы или создавать новые группы служб, добавив команду group= groupname в команду SC Create или используя SC Config для сохранения службы в какую-либо группу. Например, чтобы добавить службу Webimagemailer в новую группу под названием unimportant, надо набрать
sc config webimagemailer group= unimportant
Однако нельзя поместить службу или драйвер в более чем одну группу служб.
sc config webimagemailer depends= +webstartup
Таким образом, мы выяснили, как использовать зависимости и группы для более детального управления порядком загрузки службы. И теперь никто не удивится, почему я был так доволен, когда несколько лет назад обнаружил диспетчер SC.
Изменить параметры службы можно командлетом Set-Service :
В принципе PowerShell имеет примерно такой же функционал как и Sc.exe, разве что позволяет добавить описание. А вот для удаления служб в PS простого способа нет, придется воспользоваться вот такой конструкцией:
Нажмите ОК для сохранения настроек и закрытия окна.
JDownloader ротирует соединения. Поэтому если вы скачиваете с заблокированного сайта, то снимите галочку с соединения Без прокси :
Теперь вы снова можете не только просматривать, но и скачивать с заблокированных сайтов!
Настройка скрытого сервиса в Windows
Суть работы скрытого сервиса заключается в том, что на вашем компьютере (это может быть арендованный или ваш домашний компьютер) работает веб-сервер. Ваш компьютер должен иметь доступ к сети Tor. Через эту сеть любой имеющий адрес вашего скрытого сервиса (домен вида *.onion), может зайти на ваш сайт, который обслуживает ваш веб-сервер. Вам не нужно беспокоится о приобретении доменного имени (даётся бесплатно), о DNS, белых IP и т.д. – сеть Tor сама об этом позаботиться. Для запуска скрытого сервиса требуется только две вещи:
Если у вас Linux, то вам может подойти материал « ». Если же вы хотите запустить скрытый сервис из Windows, то далее написано, как это сделать.
Нам нужно, чтобы у нас был рабочий веб-сервер.Нужно установить веб-сервера (Apache 2.4, MySQL 5.7, PHP 7, phpMyAdmin) на Windows 10.
Теперь, когда веб-сервер установлен и его работоспособность проверена, приступим к настройке скрытого сервиса в Windows.
Скрытый сервис работает!
Следовательно, этот файл доступен с локального сервера по адресу http://localhost/hidden/:
Теперь открываем конфигурационный файл Apache C:\Server\bin\Apache24\conf\httpd.conf и дописываем туда:
Listen 127.0.0.1:9475 DocumentRoot «C:/Server/data/htdocs/hidden/» ServerName localhost ServerAdmin Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order deny,allow Allow from all Require all granted
В принципе, вам достаточно отредактировать в нём только строчку DocumentRoot «C:/Server/data/htdocs/hidden/» – она показывает путь до вашего веб-сайта, который будет скрытым сервисом Tor.
Перезапускаем веб-сервер Apache, чтобы изменения вступили в силу:
Теперь ваш сайт для скрытого сервиса должен быть доступен с локального компьютера по адресу http://localhost:9475
Переходим к настройке Tor.
Откройте любым текстовым редактором файл C:\Tor\torrc и скопируйте в него:
HiddenServiceDir «C:/Tor/hidden_service/» HiddenServicePort 80 127.0.0.1:9475
Перезапустите службу Tor:
Автоматически будет сгенерирована папка hidden_service и два файла в ней. В файле C:\Tor\hidden_service\hostname вы увидите доменное имя для вашего скрытого сервиса:
В моём случае это 77pam5zhvzu5jhst.onion, пробуем открыть в браузере Tor:
Может понадобиться несколько минут, прежде чем скрытый сервис будет открываться в браузере.
Использование Tor браузерами в Windows
Если вы хотите анонимно сёрфить в интернете, то рекомендуется использовать браузер Tor. Он не только перенаправляет трафик через сеть Tor, но и имеет ряд патчей и настроек, способствующих приватности.
Тем не менее, если вы хотите заходить в Интернет через сеть Tor используя браузеры Google Chrome, Firefox, Opera или Internet Explorer, то это также возможно.
У вас должна быть установлена (или запущена как показано в начале статьи) служба Tor.
Браузеры Google Chrome, Opera и Internet Explorer используют одни и те же настройки. Т.е. внесённые изменения будут действовать сразу для всех трёх браузеров. В любом из них перейдите к настройкам Прокси, откроется такое окно:
В окне нажмите «Настройка сети ». В открывшемся новом окне поставьте галочку «Использовать прокси сервер для локальных подключений… »:
Нажмите во всех окнах ОК для сохранения сделанных настроек. Текущий IP можно, например, проверить на странице
Общесистемные настройки прокси в Windows
В Windows имеется программа WinHTTP прокси. Она позволяет устанавливать настройки прокси для системы в целом. По логике ожидается, что все приложения должны использовать общесистемные настройки, но этого не происходит. Windows использует WinHTTP для определённых служб, например, для загрузки обновлений Windows и выполнения проверок на аннулированные сертификаты. Тем не менее, возможно, вы найдёте применение этому.
netsh winhttp import proxy source=ie
вы можете импортировать настройки из Internet Explorer.
А следующими командами вы можете просмотреть/сбросить использование общесистемных настроек:
netsh winhttp show proxy netsh winhttp reset proxy
Доступ в Tor из PHP программы
Если вы установили службу Tor и для настройки скрытого сервиса вы установили веб-сервер, то вы также можете получать данные из сети Tor в вашей PHP программе (используя cURL). Пример рабочего кода:
У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?
В этой статье мы рассмотрим небольшую утилиту Any Service, которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора.
Программа полностью бесплатна, занимает всего 49Кб и не требует установки. Интерфейс интуитивно понятен и снабжен детальными пояснениями в виде всплывающих подсказок.
Главное окно программы позволяет произвести первичные настройки вашей будущей службы:
После заполнения всех необходимых полей, нажимаем кнопку «Создать».
Все, новая служба создана и готова к работе. Можно посмотреть на результат своих действий, воспользовавшись кнопкой «Службы», которая открывает групповую оснастку.
Как видите, наша новая служба Total Commander запущена. Теперь вы можете изменять ее настройки также, как и у любой другой системной службы.
В случае, если вы захотите удалить службу, воспользуйтесь кнопкой «Удаление. » в главном окне программы. Перед вами откроется такое окно:
Находим нужную службу и жмем «Удалить». Больше сервиса Total Commander не существует.
Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты (srvinstw и instsrv ) в папке %WINDIR%\System32\ и если не находит, копирует их из собственного ресурса.