Как контролировать мой сервис Win32, означающий изменение его пользовательских параметров, расписания и т. Д.? - PullRequest
3 голосов
/ 21 февраля 2012

Мне нужно разработать службу Win32 в Delphi XE, и мне нужно найти способ управления ею с той же машины (или, возможно, других машин в локальной сети, если это возможно). Под этим я подразумеваю изменение реализованных мной внутренних параметров, а не параметров службы Windows. Сам сервис не должен взаимодействовать с рабочим столом. Не могли бы вы посоветовать лучший способ, как это сделать?

Ответы [ 3 ]

6 голосов
/ 21 февраля 2012

Вы можете использовать метод IPC, такой как именованные каналы, для связи со службой или для связи со службой с помощью сокета TCP.

Я сделал это с Именованными каналами, и он работает как чудо.

3 голосов
/ 21 февраля 2012

Я понимаю, что это довольно скудный метод, но вы могли бы просто сохранить все настройки в реестре, а затем интерфейсный интерфейс мог бы записать их, а затем служба могла бы периодически проверять один ключ с именем * 1001.* и если это значение отличается, перечитайте конфигурацию и примените ее (возможно, перезапустите, если необходимо).

Если вам действительно нужно сделать что-то другое, кроме конфигурации, то, возможно, сокет TCP намного лучше, нотакже много работы, чтобы написать собственный компонент обработчика протокола на основе TCP и отладить его.

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

1 голос
/ 21 февраля 2012

Сервер внутри сети? Хороший, быстрый, (почти тривиальный) способ создания веб-интерфейса для управления сервисом. Очевидно, что «другие машины в локальной сети» (или даже в сети) становятся вопросом маршрутизации / безопасности, а не осуществимости.

...