Как exe сделать службой windows

Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.

Запуск любого приложения в виде службы

Полезная информация
Недавно наша компания начала плавный переход части своих задач в облако. В частности мы активно начали использовать концепцию saas от Salesforce.com, в чем нам очень сильно помогли консультанты компания CT Consulting. Проект был признан успешным и активно продолжается.

Если говорить о приложениях очень общими словами они бывают либо непосредственно работающие с пользователем в графическим интерфейсом, либо работают в фоне в виде служб. Иногда возникает необходимость запустить определенное приложение в виде службы, однако в приложении такой возможности не предусмотрено. Как сделать это мы и рассмотрим в данной статье. В качестве примера возьмем программу uTorrent.

Дополнительно требуемое ПО

Для того чтобы приложение, которое не предусмотрено для запуска в виде службы, работало в таком режиме нам необходимо использовать специальную обертку, которая будет управлять приложением и имитировать его работу в виде службы.

Для этого есть различные методы, однако одним из моих любимых является использование instsrv.exe и srvany.exe. Данные утилиты являются частью Windows 2003 resource kit, который можно скачать с сайта MS.

  • Скачиваем и устанавливаем Resource Kit в директорию по умолчанию. c:\Program Files (x86)\Windows Resource Kits\Tools\
  • Подготавливаем аккаунт для службы

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

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

    Создайте и залогиньтесь в систему под служебным аккаунтом.

  • Запустите приложение и сделайте необходимые изменения – для uTorrent я включаю веб-интерфейс и устанавливаю корректные настройки портов подключения.
  • При выполнении необходимых действий мы выполняем 2 основных шага. В первом мы созадем запись в реестре для оболочки службы. Во втором мы настраиваем необходимые параметры оболочки.

    Откройте командную строку с правами администратора

  • Введите следующую команду:
  • C:\>»c:\Program Files (x86)\Windows Resource Kits\Tools\instsrv.exe» uTorrent » c:\Program Files (x86)\Windows Resource Kits\Tools\srvany.exe»

  • Вы должны получить сообщение «The service was successfully added!»
  • В данный момент вы уже создали службу, но ещё не указали что служба должна выполнять.

    Читайте также:  Activator windows 10 permanent activator ultimate

    Откройте редактор реестра

    Перейдите в HKLM\System\CurrentControlSet\Services\

    Найдите службу, которую вы создали(uTorrent)

    Создайте новую ветку с именем Parameters

    В ветке Parameters создайте ключ Application

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

    Далее нам необходимо выполнить настройку службы с помощью консоли управления службами или команды sc.exe

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

    Найдите службу uTorrent

    На вкладке General укажите режим запуска автоматический

  • На вкладке Log Ontab укажите ранее созданный служебный аккаунт
  • Если это локальный аккаунт используйте синтаксис .\account если доменный, то domain\account

    Для проверки что все работает перезагрузим компьютер. Залогинимся под другим пользователем и проверим следующее:

    Процесс работает под служебным аккаунтом

  • Приложение работает так, как нами задумано
  • Интересное

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

    Еще записи по теме

    Комментариев: 1

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

    Из exe в службу

    Запись скорее для себя. Дело в том, что любой практически exe файл можно переделать в службу windows!

    Бываем иногда необходимость в том, что бы программа работала в качестве службы. В качестве примера будет использоваться программа RedEyes Данная программа используется для мониторинга доступных ресурсов.

    И так, вкратце будет так…

    INSTSRV ( | REMOVE)
    [-a ] [-p ]

    Install service example:

    INSTSRV MyService C:\MyDir\DiskService.Exe
    -OR-
    INSTSRV MyService C:\mailsrv\mailsrv.exe -a MYDOMAIN\joebob -p foo

    Remove service example:

    INSTSRV MyService REMOVE

    INSTSRV RedEyes «C:\Program Files (x86)\RedEyes\res.exe» Srvany.exe

    И есть сама справка по этому делу у MS

    Для создания определяемой пользователем службы Windows NT выполните следующие действия.
    В командной строке MS-DOS (выполняется CMD.EXE) введите следующую команду:

    путь\INSTSRV.EXE Моя_служба путь\SRVANY.EXE,

    где путь указывает букву диска и каталог набора Windows NT Resource Kit (например, C:\RESKIT), а Моя_служба — имя создаваемой службы.

    Пример:
    C:\Program Files\Resource Kit\Instsrv.exe Notepad C:\Program Files\Resource Kit\Srvany.exe
    ПРИМЕЧАНИЕ. Для проверки правильности создания службы убедитесь, что параметр ImagePath в разделе
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\имя_службы
    указывает на SRVANY.EXE. Если этот параметр установлен неправильно, служба прекращает работу вскоре после запуска и возвращает код события 7000 — «Не удается запустить имя_службы».

    Читайте также:  Драйвер электропитания для ноутбука windows 10

    Предупреждение. Неправильное использование редактора реестра может привести к серьезным неполадкам, требующим переустановки операционной системы. Корпорация Майкрософт не гарантирует, что неполадки, являющиеся результатом неправильного использования редактора реестра, могут быть устранены. Ответственность за применение редактор реестра несет пользователь.

    Для получения сведений об изменении реестра см. раздел «Изменение разделов и параметров» справочной системы или разделы «Добавление и удаление сведений из реестра» и «Изменение данных в реестре» справочной системы редактора реестра.

    Примечание. Перед внесением изменений в системный реестр рекомендуется создать архивную копию реестра.
    Запустите редактор реестра (Regedt32.exe) и найдите следующий подраздел:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
    В меню «Правка» выберите «Добавить раздел». Введите следующие данные и нажмите кнопку «ОК»:

    Название раздела: Параметры
    Класс:
    Выберите раздел «Parameters» (Параметры).
    В меню «Правка» выберите «Добавить параметр». Введите следующие данные и нажмите кнопку «ОК».

    Имя параметра: Application
    Тип данных: REG_SZ
    Строка: \

    где \ — это буква диска и полный путь к исполняемому файлу приложения, включая расширение (например C:\WinNT\Notepad.exe)
    Закройте редактор реестра.
    По умолчанию вновь созданная служба настроена на автоматический запуск при перезагрузке системы. Для изменения этого режима на «Вручную» запустите приложение «Службы» из панели управления и измените значение параметра на «Вручную». Служба, настроенная на запуск вручную, запускается одним из следующих способов:
    — с помощью значка «Службы» панели управления

    — из командной строки MS-DOS следующей командой:

    — с помощью служебной программы Sc.exe из набора ресурсов Resource Kit. В командной строке MS-DOS введите следующую команду:

    где указывает букву диска и папку набора Windows NT Resource Kit (например, C:\Reskit)
    .

    Для получения дополнительных сведений об установке и удалении определяемой пользователем службы см. документ Srvany.wri, прилагаемый к служебным программам набора Windows NT Resource Kit (например, C:\Reskit\Srvany.wri). Кроме того, этот документ находится в каталоге Common\Config компакт-диска набора Windows NT Resource Kit.

    А теперь заметка, внимательно смотрим реестр на момент правильного пути к Srvany.exe, по умолчанию он может поставится не туда!!

    Скачать Windows NT Resource Kit для создания службы из exe здесь: Windows NT Resource Kit.

    Создание службы в Windows 10

    Бывает, что имеется некий исполняемый файл, который необходимо зарегистрировать в системе как службу Windows 10. Существует множество различных способов, которые позволяют это сделать. Сейчас мы рассмотрим два основных и проверенных метода создания службы Windows.

    Создание службы с помощью программы Sc.exe

    Первый способ позволяет создавать службы, используя утилиты, работающие через командную строку. В данном случае, используется инструмент sc.exe. Он позволяет взаимодействовать с функциями API и выполнять операции со службами Windows 10. Несмотря на то, что данная программа даже не обладает графическим интерфейсом, она является мощным инструментом и может контролировать состояние служб, создавать, редактировать и управлять ими.
    Если создавать службу, с помощью sc.exe, то не возникает необходимости в изменении параметров реестра и списка служб в диспетчере. Кроме того, утилита способна работать со службами на локальном компьютере, и выполнять те же действия на удаленных машинах.
    Чтобы создать новый сервис, откройте командную строку от имени администратора и запустите команду «Sc create». Она запишет новую службу к базе диспетчера служб. Синтаксис команды представлен следующим образом:

    • ServiceName — данным параметром определяется имя раздела службы в реестре;
      Данное имя не совпадает с тем именем, которое будет отображаться диспетчере (например, в Services).
    • BinPath — в этом параметре записываем путь, где хранится исполняемый файл.
    Читайте также:  Сколько людей пользуются mac os

    Чтобы было понятнее, в качестве примера, мы создадим службу «MySevice». При этом, отображаемое имя будет «My New Service». Указываем тип службы и включаем автозапуск:

    Sc create MyService binPath=C:\MyService\MyService.exe DisplayName=″My New Service″ type=own start=auto

    Теперь откройте оснастку «Services» и взгляните на то, что получилось:

    Параметры службы, которая уже была создана и запущена, можно изменить при помощи команды Sc config. К примеру, мы заменим имя службы, которое отображается как:

    Sc config MyService DisplayName=″My Service″

    А еще можно избавиться от службы полным ее удалением. Для этого используйте такую команду:

    С помощью утилиты PowerShell

    Ну а с помощью такого мощного инструмента, как PowerShell можно хоть горы двигать. Он обладает большими возможностями и способен работать с различными службами. Здесь, для добавления новой службы, существует специальная команда «New -Service». Давайте попробуем новую службу, как и в прошлом примере, будем использовать те же имена и значения, только добавим дополнительный параметр, в виде описания. И так, команда, для создания нового сервиса, выглядит следующим образом:

    New-Service -Name MyService -BinaryPathName C:\MyService\MyService.exe` -DisplayName ″My New Service″ -Description ″Very Important Service . ″

    Для изменения параметров служб, существует команда «Set -Service»:

    Set-Service -Name MyService -Description ″Not Very Important Service″ -StartupType Manual

    Если не считать дополнительную возможность добавления описаний к службам, PowerShell обладает таким же функционалом, как и утилита Sc.exe. Но есть один маленький минус — здесь нет простой команды для удаления службы. Поэтому приходиться использовать такой вот, немного мудреный, код:

    (Get-WmiObject win32_service -Filter ″name=′MyService′″).delete()

    Оцените статью