Как написать простейший сервис (Службу Windows) на VB .NET

Наша служба будет предельно простой. В ее задачу будет входить лишь ведение бесполезного лога в файл.

Вся задача сводится к двум моментам:

  1. Непосредственно написание программы
  2. Установка и удаление службы

Чтобы приступить к написанию программного кода, необходимо выбрать соответствующий шаблон в составе Visual Studio

1Предполагается, что у нашего сервиса не будет визуального интерфейса.
Нам понадобится таймер, но не тот, что мы привыкли использовать в WinForms
На рис. 2 показан этот таймер в момент его выбора и размещения на панели инструментов

2Добавляем его в проект привычным двойным щелчком

3Настраиваем его свойства, в частности, интервал, пусть это будет 1 секунда. Активность таймера выставлять не будем, пусть за нас это сделает сам сервис.

В редакторе кода код будет выглядеть следующим образом:

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

Компилируем сервис как обычно — Меню — Построение — Построить <Имя Вашего сервиса>
После этого в папке Release появится исполняемый файл. Здесь же отмечу, что такие файлы двойным щелчком не запускаются и так же по F5;
В этом случае VS пояснит, что служба не может быть запущена непосредственно из-под отладчика.

Как бы там ни было, файл готов. И мы хотим видеть его работу.
Чтобы это сделать, нам придется установить сервис в систему. Для этого воспользуемся одним из методов.
Создадим Bat-файл в той же директории, что и сам файл сервиса.
Содержание файла:

Второй строкой мы устанавливаем службу с параметром автозапуска «Автоматический»
Третьей строкой запускаем службу.
Результат показан на рис. 4

4

Достаточно простой установки, а настройку можно произвести в:
Панель управления — Администрирование — Службы

Сразу же замечу, что в такой службе не будет визуализации, даже MsgBox

Написанное ниже применимо к ОС Windows XP.
Чтобы сообщения были видны пользователю, нужно, чтобы служба работала в интерактивном режиме.
Для этого в настройках службы (Панель управления — Администрирование — Службы) нужно поставить флаг «Разрешить взаимодействие с рабочим столом»

Либо установить службу немного иначе:

 

После всех экспериментов не забывайте удалить службу:

 





Запись опубликована в рубрике Полезные коды на Visual Basic .NET, VB .NET FAQ. Добавьте в закладки постоянную ссылку.


Что еще можно почитать

Ляка 2016 (Май 4, 2016)
Генератор QR-кода на VB .NET (Март 13, 2016)
Узнать размер памяти, занимаемый процессом (Декабрь 4, 2015)
Скачать файл из интернета и отобразить прогресс (Декабрь 4, 2015)
Залочить (заблокировать) файл (Декабрь 4, 2015)


Добавить комментарий