Чем служба Windows отличается от стандартного exe? - PullRequest
41 голосов
/ 24 января 2010

В чем разница между службой Windows и стандартным exe?

Ответы [ 5 ]

44 голосов
/ 24 января 2010

Служба Windows всегда запускается после запуска компьютера (если он настроен). Стандартный EXE-файл запускается только при входе пользователя в систему и останавливается, если пользователь выходит из системы.

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

Вы бы использовали стандартный EXE-файл для программ, которые пользователь будет запускать при входе в систему.

34 голосов
/ 24 января 2010

Служба Windows имеет специальную функцию ServiceMain и должна должным образом реагировать на команды Service Control Manager (SCM), чтобы функционировать как служба. С другой стороны, обычный исполняемый файл имеет функцию main или WinMain и не нуждается в ответе на какие-либо конкретные команды управления.

12 голосов
/ 24 января 2010

Если вы говорите о реализации фоновой операции, вот критерии, которые я бы порекомендовал выбрать для службы или безоконный .exe:

Выберите exe, если:

  • Вам нужно, чтобы он работал для каждого пользователя и только когда пользователь вошел в систему
  • Он необходим для взаимодействия с рабочим столом Windows (значки уведомлений и т. Д.)
  • Для этого нужны все привилегии вошедшего в систему пользователя (не более, не менее)

Выберите услугу, если:

  • Может потребоваться запустить, когда никто не вошел в систему
  • Обычно для этого не нужны данные или привилегии для каждого пользователя
  • исключительно связывается с сетью
  • Нужно выставлять новые "защищаемые" объекты. Объекты, которые имеют свои собственные декларативные списки контроля доступа (DACL), которые ограничивают доступ к определенным учетным записям / группам.
  • Требуются специальные разрешения, которые могут быть недоступны вошедшему в систему пользователю.

Сервисы легко могут быть дырами в безопасности, поэтому предпочитайте .exe-файлы сервисам. Иногда вам понадобятся оба. Средство проверки на вирусы должно иметь возможность доступа к каждому файлу в файловой системе (что не может сделать текущий пользователь), но оно также должно предоставлять информацию пользователю в форме диалоговых окон уведомлений / всплывающих окон и инструмента иконка панели задач. Сервисы не могут напрямую взаимодействовать с пользовательским интерфейсом. Они могут использовать стандартные службы Windows IPC (межпроцессное взаимодействие), такие как каналы и области общей памяти. Такие инструменты обычно имеют как службу, так и файл .exe без окон для каждого пользователя, который обменивается данными со службой с помощью каналов Windows или областей общей памяти.

Получите «Программирование безопасности Windows» Кейта Брауна, если вы хотите углубиться в эти темы.

2 голосов
/ 24 января 2010

Сервис (обычно) является стандартным exe без пользовательского интерфейса. Он может работать, даже если в систему не вошел пользователь, и его права доступа и вид файловой системы не зависят от того, в какой пользователь вошел.

1 голос
/ 28 сентября 2011

С точки зрения двоичного файла EXE и с точки зрения библиотеки C компилятора служба Windows выглядит точно так же, как стандартная программа Unix или консольная программа Windows. то есть с main() точкой входа. Отличительной особенностью службы является то, как она загружается / вызывается Microsoft Windows (из реестра, обычно при загрузке). Служба может (и должна) сообщать приложению SC.exe [Service Control Manager] через вызовы API Windows, что служба запущена, остановлена, приостановлена ​​и т. Д.

...