2010-07-18 165 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)。

希望有助於(而不是太令人沮喪)!