2010-07-18 3 views
6

Я пытаюсь создать службу Windows с C# в .net, которая запускается до входа пользователя в систему ... тогда, когда пользователь вошел в систему под символом, должен появиться на панели задач (рядом с часами), чтобы показать пользователю, что служба запущена. путем двойного щелчка по этому символу пользователю должна быть показана утилита конфигурации (написанная в wpf), поэтому он может настроить службу, прочитать данные с нее и и так далее.Служба Windows с инструментом управления WPF

есть ли возможность сделать это в рамках одного заявления?

благодарит заранее за любую помощь !!!

ответ

4

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

Я бы не рекомендовал использовать именованные каналы напрямую (например, Kieren Johnstone suggested), но посмотреть на WCF, который был разработан для межпроцессного общения и прекрасно абстрагирует детали реализации технологии связи от вас. Вот ссылка, которая может помочь вам с WCF: http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication.

С наилучшими пожеланиями,
Оливер Hanappi

3

В одном приложении нет. Услуги выполняются в сессии 0, пожалуйста, смотрите здесь:

http://www.microsoft.com/whdc/system/sysinternals/session0changes.mspx

Ваш лучший выбор должен использоваться Named Pipes, смотрите здесь:

http://www.switchonthecode.com/tutorials/dotnet-35-adds-named-pipes-support

.. .. или файл с отображением памяти, см. здесь:

http://msdn.microsoft.com/en-us/library/dd997372.aspx

В рамках дополнительной-.NETty, вы можете также использовать Remoting. Вам нужно будет найти какой-то интерфейс или протокол, чтобы облегчить общение между сервисом и утилитой управления. Управление запуском/остановкой процесса было бы проще, и вы могли бы использовать класс ServiceController (MSDN ref).

Надеюсь, что это поможет (и его не слишком обескураживает)!

Смежные вопросы