Если вы говорите о реализации фоновой операции, вот критерии, которые я бы порекомендовал выбрать для службы или безоконный .exe:
Выберите exe, если:
- Вам нужно, чтобы он работал для каждого пользователя и только когда пользователь вошел в систему
- Он необходим для взаимодействия с рабочим столом Windows (значки уведомлений и т. Д.)
- Для этого нужны все привилегии вошедшего в систему пользователя (не более, не менее)
Выберите услугу, если:
- Может потребоваться запустить, когда никто не вошел в систему
- Обычно для этого не нужны данные или привилегии для каждого пользователя
- исключительно связывается с сетью
- Нужно выставлять новые "защищаемые" объекты. Объекты, которые имеют свои собственные декларативные списки контроля доступа (DACL), которые ограничивают доступ к определенным учетным записям / группам.
- Требуются специальные разрешения, которые могут быть недоступны вошедшему в систему пользователю.
Сервисы легко могут быть дырами в безопасности, поэтому предпочитайте .exe-файлы сервисам. Иногда вам понадобятся оба. Средство проверки на вирусы должно иметь возможность доступа к каждому файлу в файловой системе (что не может сделать текущий пользователь), но оно также должно предоставлять информацию пользователю в форме диалоговых окон уведомлений / всплывающих окон и инструмента иконка панели задач. Сервисы не могут напрямую взаимодействовать с пользовательским интерфейсом. Они могут использовать стандартные службы Windows IPC (межпроцессное взаимодействие), такие как каналы и области общей памяти. Такие инструменты обычно имеют как службу, так и файл .exe без окон для каждого пользователя, который обменивается данными со службой с помощью каналов Windows или областей общей памяти.
Получите «Программирование безопасности Windows» Кейта Брауна, если вы хотите углубиться в эти темы.