Сделать exe файл как системную службу. Как запустить приложение в виде службы Windows

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


В этой статье мы рассмотрим небольшую утилиту 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.

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

Прежде чем начать, необходимо уяснить несколько моментов:

  • При удалении службы она навсегда исчезнет из системы, и восстановить ее непросто, а в ряде случаем просто невозможно
  • Удаление определенных служб может вызвать неработоспособность тех или иных программ. Поэтому не стоит удалять службу, если вы на 100% не уверены за что она отвечает.
  • Не удаляйте системные службы Windows 7, т.к. это может привести к неработоспособности всей системы

Также попытаемся понять, в каких случаях возникает необходимость в удалении службы Windows.

  • Зачастую программы при удалении из системы оставляют свои службы нетронутыми, и каждый раз при загрузке компьютера система пытается запустить такую службу, однако из-за отсутствия исполняемых или библиотечных файлов сделать этого не может, генерируя ошибку.
  • Некоторые вирусы и трояны для маскировки своих деструктивных действий могут создать в системе новую службу. И даже если, ваш антивирус удалит тело вируса, служба может остаться, и ее придется удалять вручную.
  • Возможно также ситуация, когда производительность системы снижается вследствие наличия большого количества процессов, работающих в виде служб, и вы решили удалить (а не просто остановить) ряд ненужных более служб в Windows 7.

Чтобы удалить службу в Windows 7, нужно знать ее имя. Для чего откройте окно управления службами Start -> Settings -> Control Panel-> Systems and Maintenance->Administrative Tools->Services.
В появившемся окне служб найдите ту службу, которую вы планируете удалить (в моем примере это “Adobe Lm Service ”)

Дважды щелкните по выбранной службе и в появившемся окне свойств в поле «Service name» будет отображено ее имя (у меня имя службы — Adobe LM Service, т.е. оно совпадает с именем в списке служб, но обычно это не так), скопируйте его в буфер обмена.

Затем остановите службу, нажав кнопку «Stop»

Удаляем службу в Windows из командной строки

Откройте окно командной строки (cmd.exe) с правами администратора («Run as administrator»). Чтобы удалить службу в Windows 7 можно воспользоваться системной командой sc . Команда sc.exe – это утилита командной строки, которая используется в Windows 7/Vista/XP для создания, редактирования и удаления служб. Согласно документации TechNet, sc.exe:

sc . exe (Service Controller ) осуществляет взаимодействие с установленными службами, получая и задавая их параметры. Утилиту SC . exe можно использовать для тестирования и отладки программ, работающих как службы. Свойства служб хранятся в реестре, параметры команды SC . exe позволяют модифицировать значения этих свойств, а также управлять запуском и остановкой служб. Возможности SC . exe во многом сходны с mmc консолью Services , расположенной в «Панели Управления».

Синтаксис команды удаления службы выглядит так:

Sc delete ServiceName

Если имя службы содержит пробелы (как в нашем случае), его нужно взять в кавычки:

Sc delete “Adobe LM Service”

В случае успешного выполнения команды sc delete в командной строке должно появиться сообщение DeleteService SUCCESS

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

Удаляем службу с помощью редактора реестра

Альтернативный метод удаления служб в Windows 7 подразумевает использование редактора реестра.

Откройте редактор реестра (regedit.exe), и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services . В ней содержится список всех служб, установленных в системе.

Найдите имя ветки реестра, соответствующее имени удаляемой службы.

Удостоверьтесь, что в значениях DisplayName and ImagePath содержатся, соответственно имя и путь к исполняемому файлу службы, которую вы планируете удалить.

Щелкните правой конкой мыши по имени найденной ветки реестра с именем службы и выберите «Delete». После чего служба будет удалена из системы.

Ваш браузер может внезапно показать вам services.exe процесс в диспетчере задач. Это, безусловно, плохая идея, чтобы принять это как совпадение. нет, это была спланированная акция, чтобы проникнуть в ваш компьютер. Ваш компьютер может быть недавно загрязнено рискованными вредоносными программами. К сожалению, вам придется иметь дело с этой бедой прямо сейчас. И это в ваших интересах, чтобы найти его как можно быстрее и устранить services.exe рекламное.

Вы можете увидеть процесс services.exe в диспетчере задач, простой щелчок правой кнопкой мыши покажет вам С:\Windows Temp {RANDOM} инфицированное местоположение папки. Однако, это не значит, что проблема решена, и теперь вы можете удалить этот вопрос. Наоборот! Вы не сможете удалить угрозы вручную, поскольку источник постоянных объявлений скрывается под многими другими службами и процессы действуют на вашем компьютере. Рекламное что у вас в системе работает с навыком самозащиты, Сам по себе это маске и остается в системе в течение длительного времени.

Проникновение процесса services.exe может произойти из-за личные действия пользователя или проблемы с защитой. В первом случае определенных пользователей’ действия, связанные с бездумной и глупой установкой могут вызвать появление вредоносных программ. Они должны быть бдительными и внимательными все время они находятся в оперативном режиме, и особенно осторожны с загрузкой. Во втором случае люди полагаются на антивирусное программное обеспечение и не знаю, что иногда это может не поддерживать отслеживание всех угроз и предотвращения их установки. Это всегда хорошая идея для переключения для надежного программного обеспечения, которое может проводить свои основные функции.

Удаление процесса services.exe можно с помощью всего нескольких щелчков мыши. Руководство ниже может помочь вам с основными шагами, которые нужно сделать с нашими GridinSoft Anti-Malware инструмент. Автоматическое удаление не оставляет никаких шансов для всех вариантов вредоносных программ. Следуйте учебники ниже, чтобы сбросить зараженный браузер, что является обязательным.

Скачать надежный инструмент для удаления services.exe:

Подробная инструкция о том, как удалить services.exe инфекции.


Профилактические советы для вашего ПК от быть с services.exe повторного заражения в будущем:

GridinSoft Anti-Malware предлагает отличное решение, которое может помочь предотвратить вашу систему от загрязнения вредоносным раньше времени. Эта функция называется “О перспективе защиты”. По умолчанию, она отключена после установки программного обеспечения. Чтобы включить его, пожалуйста, нажмите на “Защищать ” и нажмите на кнопку “Начало

Эта полезная функция может позволить людям предотвратить установку вредоносного программного обеспечения. Это значит, когда вы будете пытаться установить некоторые подозрительные файлы, В перспективе Protection будет блокировать эту попытку установки раньше времени. ЗАМЕТКА! Если пользователи хотят, чтобы опасные программы для установки, они могут выбрать "Игнорировать всегда" кнопку. В случае, если вы хотите прекратить вредоносную программу, Вы должны выбрать "Блок всегда".

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

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

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

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


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

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

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



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


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



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

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


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

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

Можно ли запустить клиентское приложение в качестве службы? Не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager .

NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft , начиная с Windows 2000 и заканчивая . NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.

Для демонстрации возможностей NSSM попробуем запустить Блокнот в качестве службы на .

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

Для создания службы с именем 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, можно обойтись и без подтверждения.

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

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

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

А дальше начинаются чудеса Для службы, запущенной в интерактивном режиме, система открывает отдельный изолированный сеанс (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. Не самое красивое, но вполне соответствующее своему названию



 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!