2010-07-18 163 views
6

我想在用户登录之前运行.net中的C#创建一个Windows服务... 然后当用户登录符号应出现在系统托盘(靠近时钟)向用户显示服务正在运行.. 通过双击该符号应该向用户显示配置实用程序(用wpf编写),以便他可以配置服务,从中读取数据以及等等..Windows服务与WPF管理工具

有没有可能在一个应用程序内做到这一点?

在此先感谢您的帮助!

回答

4

不,您不能在一个应用程序中执行此操作,因为服务在不同的会话中与不同的用户一起运行。您需要创建两个应用程序并在两者之间实现一些通信。

我不会直接推荐使用命名管道(比如Kieren Johnstone suggested),而是看看为进程间通信设计的WCF,并很好地将通信技术的实现细节从您身边抽象出来。这里有一个链接,可以帮助你与WCF:http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

最好的问候,
Oliver Hanappi

3

在一个应用程序中,没有。在会话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的范围,你也可以使用远程处理。您需要提供一些界面或协议以促进服务与管理实用程序之间的通信。管理流程开始/停止会更容易,您可以使用ServiceController类(MSDN ref)。

希望有助于(而不是太令人沮丧)!