Как установить программу в качестве службы. Запустить приложение службой


Запуск приложения в виде службы 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.

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

Для создания службы с именем 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.

 

А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.

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

Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm, можно обойтись и без подтверждения.

Запуск службы в интерактивном режиме

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

Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».

 

А дальше начинаются чудеса 🙂 Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7\Server 2008 эта служба активна по умолчанию, а в Windows 8\Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того,  если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.

А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLM\System\CurrentControlSet\Control\Windows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.

 

После чего открываем консоль PowerShell и стартуем службу обнаружения командой:

Start-Service -Name ui0detect

 

Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»

 

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

 

Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию 🙂

windowsnotes.ru

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

Полезная информация Недавно наша компания начала плавный переход части своих задач в облако. В частности мы активно начали использовать концепцию 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

  • Откройте консоль управления службами
  • Найдите службу uTorrent
  • На вкладке General укажите режим запуска автоматический 
  • На вкладке Log On tab укажите ранее созданный служебный аккаунт

Если это локальный аккаунт используйте синтаксис .\account если доменный, то domain\account

Тестирование

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

  • Служба запущена
  • Процесс работает под служебным аккаунтом
  • Приложение работает так, как нами задумано

 

 

Интересное

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

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

guruadmin.ru

Как установить программу в качестве службы

Наверняка, многие сталкивались с ситуацией, когда есть необходимость запускать программу до входа пользователя в систему, но в установщике программы нет опции «Установить в качестве службы». 

Установка программы в качестве службы

Первые 4 пункта понадобятся лишь в windows 8.1

1 Вызовите боковую панель Windows 8.1. Для этого можно использовать комбинацию клавиш WIN+C.

2 Выберите Поиск:

3 В поле поиска введите командная строка. В списке появится позиция Командная строка с системной иконкой.

Нажмите по ней правой кнопкой мыши:

4 Выберите Запуск от имени администратора:

5 Нажмите Да:

6 В командной строке введите путь к программе, которую вы хотите установить в качестве службы, с ключом /installservice и нажать ENTER. Путь необходимо взять в кавычки.

Пример:

"C:\Program Files (x86)\HostMonitor\hostmon.exe" /installservice

После нажатия на ENTER ответьте «Да»  на запрос службы контроля учётных записей:

7 Если программа запросит учётные данные для запуска, как в нашем примере, введите реквизиты учётной записи администратора и нажмите ОК:

Далее, программа, которую вы установили в качестве службы, сообщит вам об успешной установке службы.

У каждой программы это окно будет разным

Зайдите в службы (Выполнить — services.mcs — ENTER) и проверьте, что в списке присутствует только что установленная служба:

 

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

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

Пример:

"C:\Program Files (x86)\HostMonitor\hostmon.exe" /uninstallservice

+ ENTER:

compfixer.info

Запускаем приложение как системную службу

У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?

В этой статье мы рассмотрим небольшую утилиту Any Service, которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора.

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

Главное окно программы позволяет произвести первичные настройки вашей будущей службы:

В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе "Имя службы" указываем, как будет называться наша служба. В "Описание службы" - любое понятное вам описание нового сервиса.

Далее можно проставить нужные галочки:

  • Взаимодействие с рабочим столом - отметьте, если приложение имеет иконку в системном лотке;
  • Автозапуск службы - отметьте, если хотите, чтобы сервис запускался автоматически;
  • Запустить сразу после создания - отметьте, если хотите, чтобы служба запустилась сразу после ее создания;

Как пример работы утилиты, попробуем запустить в виде системной службы популярный файловый менеджер Total Commander.

После заполнения всех необходимых полей, нажимаем кнопку "Создать".

Все, новая служба создана и готова к работе. Можно посмотреть на результат своих действий, воспользовавшись кнопкой "Службы", которая открывает групповую оснастку.

Как видите, наша новая служба Total Commander запущена. Теперь вы можете изменять ее настройки также, как и у любой другой системной службы.

В случае, если вы захотите удалить службу, воспользуйтесь кнопкой "Удаление..." в главном окне программы. Перед вами откроется такое окно:

Находим нужную службу и жмем "Удалить". Больше сервиса Total Commander не существует.

Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты (srvinstw и instsrv) в папке %WINDIR%\System32\ и если не находит, копирует их из собственного ресурса.

winlined.ru

Запуск программы как службы Windows

Для выполнения этой операции нам понадобятся две утилиты: srvany.exe и instsrv.exe, входящие в состав Windows Server 2003 Resource Kit Tools.

Скачиваем и устанавливаем Windows Server 2003 Resource Kit Tools.При установке под Windows 7 может появиться предупреждение о несовместимости — игнорируем его.

Предположим, что в качестве службы нам нужно запустить некий исполняемый файл — program.exe, расположенный в C:\Program Files\Program.

Из директории установки Resource Kit Tools (обычно C:\Program Files\Windows Resource Kits\Tools) копируем srvany.exe и instsrv.exe в папку где расположен наш program.exe (C:\Program Files\Program).В этой же папке создаем текстовый файл program.reg со следующим содержанием:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ProgramService\Parameters] "Application"="c:\\Program Files\\Program\\program.exe" "AppDirectory"="c:\\Program Files\\Program\\"

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

Теперь открываем командную строку. В Vista и Windows 7 командная строка должна быть обязательно запущена от имени администратора (правый клик на ярлыке командной строки, выбрать пункт «Запуск от имени администратора»). В командной строке выполняем:

c: cd \ cd "program files\program" instsrv ProgramService "c:\program files\program\srvany.exe"

В результате вы должны получить ответ: The service was successfuly added (служба успешно добавлена). Если же вы получили сообщение: You are not authorized to do this — please contact your system administrator — скорее всего, командная строка запущена как обычно, а не от имени администратора.

Далее двойной щелчок по ранее созданному файлу program.reg, запрос на внесение изменений в реестр подтверждаем.

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

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

Вариант 1. Остановить службу, затем вручную удалить ключи реестра и файлы.

Вариант 2. Остановить службу, в командной строке выполнить:

c: cd \ cd "program files\program" instsrv ProgramService remove

Это не универсальный вариант, он работает только со службами установленными с помощью instsrv.

www.q2w3.ru

Запускаем приложение как системную службу

У вас когда-нибудь возникало желание запустить приложение как системную службу? Думаю, что да, учитывая, что в некоторые программы такая возможность встроена по-умолчанию. А знаете ли вы, что приложение запущенное как служба, работает гораздо быстрее и занимает меньше места в памяти?

В этой статье мы рассмотрим небольшую утилиту Any Service, которая в два щелчка мышки, поможет запустить любое приложение как системную службу. Any Service является оболочкой двух стандартных утилит srvinstw и instsrv из комплекта Windows 2000 Server и для ее нормальной работы вам будут необходимы права Администратора.

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

Главное окно программы позволяет произвести первичные настройки вашей будущей службы:

В первом поле вводим полный путь к исполнительному файлу приложения, которое будет запускаться как служба. В графе "Имя службы" указываем, как будет называться наша служба. В "Описание службы" - любое понятное вам описание нового сервиса.

Далее можно проставить нужные галочки:

Взаимодействие с рабочим столом - отметьте, если приложение имеет иконку в системном лотке;

Автозапуск службы - отметьте, если хотите, чтобы сервис запускался автоматически;

Запустить сразу после создания - отметьте, если хотите, чтобы служба запустилась сразу после ее создания; Как пример работы утилиты, попробуем запустить в виде системной службы популярный файловый менеджер Total Commander.

После заполнения всех необходимых полей, нажимаем кнопку "Создать".

Все, новая служба создана и готова к работе. Можно посмотреть на результат своих действий, воспользовавшись кнопкой "Службы", которая открывает групповую оснастку.

Как видите, наша новая служба Total Commander запущена. Теперь вы можете изменять ее настройки также, как и у любой другой системной службы.

В случае, если вы захотите удалить службу, воспользуйтесь кнопкой "Удаление..." в главном окне программы. Перед вами откроется такое окно:

Находим нужную службу и жмем "Удалить". Больше сервиса Total Commander не существует.

Известные проблемы: перед первым запуском, желательно отключить антивирусную программу иначе дальнейшая работа программы будет невозможна, т.к. при первом запуске, она ищет обе утилиты (srvinstw и instsrv) в папке %WINDIR%\System32\ и если не находит, копирует их из собственного ресурса.

 

Еще 1 способ:

 

1. Лучше всего это делать под аккаyнтом админа, тогда пpи любом дpyгом аккаунте созданный сервис будет продолжать работать. 

 

2. Копиpyете файлы instsrv.exe и srvany.exe в какyю-нибyдь системнyю диpектоpию, напpимеp, в winnt\system32\ (Берутся из Resouce Kit \compmgmt.cab\srvany.exe, instsrv.exe. Ещё есть srvinstw - это GUI пошаговая оболочка делающая то же, что и instsrv, но ещё может ставить/сносить службы удаленно). 

 

3. Запyскаете из командной стpоки: instsrv MyService c:\полный_пyть\srvany.exe где MyService -- пpидyманное вами имя вновь созданного сеpвиса. Если в имени имеются пpобелы, то имя сеpвиса необходимо заключить в кавычки. 

 

4. Тепеpь надо сконфигypиpовать этот сеpвис. Идёте в: Start -> Settings -> Control Panel -> Services, находите свой новосозданный сеpвис и щёлкаете на нём 2 pаза левой кнопочкой мышки. В откpывшемся окошке отмечаете, каким способом ваш сеpвис бyдет запyскаться: Automatic - бyдет запyскаться автоматически пpи загpyзки компьютеpа, Manual - бyдет запyскаться только, когда вpyчнyю запyстите, Disabled - совсем не бyдет запyскаться. Если хотите видеть заппущенный сеpвис в виде окна на десктопе, то отметьте чек-бокс "Allow Service to Interact with Desktop". 

 

5. Запyскаете regedt32 и создаёте key "Parameters" (без кавычек) в: HKLM \ SYSTEM \ CurrentControlSet \ Service \ Имя_Вашего_сеpвиса \ 

 

6. Создаёте под созданным вами ключом "Parameters" (без кавычек) value "Application" (без кавычек) тип -- REG_SZ: и пpописываете там полный пyть к исполняемомy файлy.

Hапpимеp, Application: REG_SZ: c:\полный_пyть\t-mail.cmd 

 

7. Пеpезагpyжаете компьютеp или стартуете сервис вручную. 

 

Выходить из таких сеpвисов лyчше по флагy.

sysadmin78.jimdo.com

Как запустить приложение как службу — Werther Blog's

Как запустить приложение как службу. Запуск любого приложения Windows XP как сервиса.

Один из самых часто встречающихся вопросов, связанных с Windows XP — это вопрос о возможности запуска программ как сервиса, что дает определенные преимущества.Сделать это не так трудно, как считается, для этого необходимо скачать определенный пакет утилит, называемый srvany. пакет состоит из двух утилит INSTSRV.EXE и SRVANY.EXE.Взять их можно здесь: img.nnow.ru/data/myupload/0/841/841675/srvany.zip

Для начала необходимо скопировать эти файлы в системную директорию %windir%/system32. Затем необходимо запустить файл SRVANY.EXE из командной строки, используя следующий синтаксис: «INSTSRV ServiceName %windir%/srvany.exe«, Где ServiceName — придуманное имя сервиса. Если всё сделано правильно, то появится сообщение, подтверждающее успешное создание сервиса (The service was successfuly added).

Теперь зайдите в Администрирование — Службы (Services). Находите только что созданную службу, двойной клик вызывает свойства сервиса. На первой вкладке можно выбрать параметры запуска — Automatic (автоматически при загрузке компьютера), Manual (Вручную) и Disabled (отключено). Для работы созданного сервиса в отдельном окне необходимо отметить на второй вкладке (Вход в систему) пункт Allow Service to Interact with Desktop (Разрешить взаимодействие с рабочим столом). Пока всё.

Следующим шагом является редактирование реестра. Запускаем редактор реестра Regedit. Шагаем к ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services и находим имя сервиса здесь. Создаем раздел Paremeters и в этом разделе прописываем путь к программе, которую мы хотим запустить, следующим образом: Строковой параметр: Application значение — путь к программе, которую мы будем запускать как сервис.

Запустить сервис, если он не отключен, можно несколькими способами, во-первых через командную строку: Net Start ServiceName — где SеrviceName — имя Вашего сервиса. И другим способом — непосредственно через апплет административной панели — службы.

Чтобы удалить сервис, его сначала необходимо остановить: net stop ServiceName, затем опять же в коммандной строке выполнить команду INSTSRV ServiceName remove.

Автор: www.winall.ru/xp/tweaks/service.shtml

werther.wwgroup.in.ua