Служба Windows с инструментом управления WPF - PullRequest
6 голосов
/ 18 июля 2010

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

есть ли возможность сделать это в одном приложении?

Заранее спасибо за любую помощь !!!

Ответы [ 2 ]

4 голосов
/ 18 июля 2010

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

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

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

3 голосов
/ 18 июля 2010

В пределах одной заявки, нет.Службы работают в сеансе 0, см. Здесь:

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

Лучше всего использовать использованные именованные каналы, см. Здесь:

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 ).

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

...