Запустить exe как службу windows 10

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!»
  • В данный момент вы уже создали службу, но ещё не указали что служба должна выполнять.

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

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

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

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

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

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

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

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

    Читайте также:  Перестали определяться usb устройства windows 10

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

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

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

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

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

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

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

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

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

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

    Запуск приложения как службы Windows

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

    Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:

    Удаляется же служба еще проще:

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

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

    Скачать данную программу можно с её официального сайта — nssm.cc.
    На случай проблем с официальным сайтом, можно скачать программу с нашего сайта.

    В архиве для скачивания можно найти версию для 64-битной версии Windows (папка win64), для 32-битной (папка win32) и исходные коды приложения (папка src). Выбираем нужное приложение под разрядность своей системы, копируем его в удобное для вас место на жестком диске. Никакая установка приложения не требуется.

    1. Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
    2. Затем выполняем команду, начинающую установку службы:
    3. Откроется окно с настройками создаваемой службы.

      На самой первой вкладке «Application«, в строке «Path» задается путь к исполняемому файлу, «Startup Directory» — рабочая директория, а «Arguments» — параметры запуска. В самом низу расположена строка «Service Name«, где задается имя создаваемого сервиса.

      На вкладке «Details» можно задать имя, под которым будет отображаться создаваемая служба в списке служб, а так же описание службы, которое будет отображаться там же. В выпадающем списке «Startup Type» можно выбрать тип запуска службы.

      Вкладка «Log on» позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку «Install service«, для установки службы.
    4. После нажатия кнопки «Install service«, служба будет создана, но при этом запустить её нужно будет вручную (либо перезагрузить компьютер, чтобы служба с параметром запуска «Auto» запустилась при его запуске).
    Читайте также:  Синий экран windows 10 ошибка ntfs sys

    Так же удалить службу можно с помощью команды в командной строке:

    Как в Windows 10 создать собственную системную службу

    Открыв Диспетчер задач и переключившись на вкладку «Подробности», можно обнаружить ряд процессов, которые явно не имеют никакого отношения к запущенным пользователем прикладным программам. Многие из таких процессов принадлежат службам — особым программным модулям, стартующим вместе с Windows, работающим в скрытом режиме и выполняющим подчас очень важную работу. Но тут у многих может возникнуть вопрос.

    А разве прикладные программы не могут работать в скрытом режиме и точно так же запускаться вместе с Windows, будучи добавленными в автозагрузку?

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

    Это хороший вопрос, и на него можно ответить утвердительно, однако понятие «автозагрузка» часто употребляется в широком смысле слова без различия, что именно и как именно загружается. Если вы имеете общие представления о работе процессов Linux, то наверняка знакомы с такой сущностью как демон. Это процесс, но процесс несвязанный с каким-либо конкретным пользователем и работающий как-бы автономно. Службы в Windows очень похожи на этих самых демонов, они тоже независимы от пользователей. Когда вы добавляете в автозагрузку программу, пусть даже не имеющую графического интерфейса, она запускается в рабочем окружении пользователя при входе последнего в свою учетную запись, тогда как службы запускаются еще до ввода пользователем логина и пароля и напрямую с ним не взаимодействуют.

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

    А еще вам понадобиться бесплатный инструмент Non-Sucking Service Manager, который «превратит» обычный процесс в службу. Название программы не очень благозвучное даже для носителя английского языка, но это не так уже и важно. Главное, что она работает. Скачать ее можно с сайта разработчика nssm.cc/download.

    Читайте также:  Ворлд оф танк для линукс

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

    Вот так он выглядит «изнутри».

    Сначала проверим, работает ли сам скрипт. Кликаем по нему ПКМ и выбираем «Выполнить с помощью PowerShell».

    Если в консоли будет выведен запрос на разрешение выполнения скриптов, вводим Y и нажимаем ввод .

    Если скрипт заработал, вы увидите в консоли текст «Транскрибирование запущенно, выходной файл… и его адрес».

    В результате в каталоге со скриптом у вас появится каталог «Logs» с файлом отчета в простом текстовом формате.

    Создаем службу

    Теперь переходим к работе с Non-Sucking Service Manager. Открыв от имени администратора командную строку и перейдя в расположение исполняемого файла утилиты nssm.exe соответствующей разрядности, выполняем команду nssm install logCPUAvg , где logCPUAvg — имя новой службы.

    В открывшемся окошке установщика вы увидите три поля:

    • Path – в нем указываем путь к обработчику, то есть PowerShell, файл консоли находится в папке C:\Windows\System32\PowerShell .
    • Startup directory – папка с исполняемым файлом обработчика, поле заполнится автоматически.
    • Arguments – в этом поле прописываем команду -ExecutionPolicy Bypass -NoProfile -File «полный-путь-к-скрипту» .

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

    Всё готово, жмем «Install service», чтобы установить службу.

    Окно установщика содержит и другие вкладки, дополнительные. Например, на вкладке «Details» можно указать описание и отображаемое в оснастке управления службами имя службы, которое будет отличаться от указанного в команде nssm install, а на вкладке «Log on» выбрать учетную запись, от имени которой станет работать служба.

    По умолчанию создаваемая служба работает от имени самой системы, как и положено. Открыв оснастку управления службами, вы увидите в списке и свою службу. Она будет иметь тип запуска «Автоматически», но находиться в остановленном состоянии. Запустится она при следующей загрузке, либо вы сами можете ее запустить.

    То, что скрипт заработал, станет видно из того, что в месте его расположения появится папка «Logs» , при этом вывод самой консоли будет скрыт. И вот что интересно. Запустив службу, мы вышли из учетной записи в 12.46, а затем вошли в нее в 12.50, но служба продолжала работать даже в наше отсутствие в системе! Это еще раз говорит о том, что системная служба не связана с пользовательским окружением.

    Удаление службы

    Помимо того, что вы можете остановить службу в оснастке, переведя ее в статус «Отключена», вы властны ее полностью удалить с помощью той же NSSM. Для этого в командной строке выполняем команду nssm remove имя-службы .

    И подтверждаем действие нажатием кнопки «Да» в миниатюрном диалоговом окошке.

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

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