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


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

Создать виртуальный диск из папки (Декабрь 7, 2015)
Определить заряд батареи ноутбука (Декабрь 8, 2015)
Установить форму поверх только родительской (Декабрь 4, 2015)
Удаление пробелов в строке — слева, справа и по краям (Декабрь 4, 2015)
Генератор случайных чисел с использованием RNGCryptoServiceProvider (Декабрь 4, 2015)


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