我正在C#中編寫一個應用程序,該應用程序需要作爲服務運行,但也有用戶交互。我知道服務沒有UI等,所以我將我的程序分成了一個windows窗體應用程序和一個可以相互通信的服務。C#從服務(和Vista中)運行Windows窗體應用程序
我遇到的問題是我需要該服務來確保窗體窗體應用程序始終運行並重新啓動它,如果它不是。我能檢測是否正在運行,並與在Windows 2000/XP下面的代碼重新啓動:
System.Diagnostics.Process.Start("ExePath");
,但在Vista上運行新的過程作爲一個本地/系統的過程,是不可見的用戶。有人解決這個問題嗎?有什麼方法可以檢測當前登錄哪個用戶並以該用戶身份運行新進程?此時我不需要考慮快速用戶切換。東西 - 任何東西 - 基本就足夠了。
如果您有任何關於此主題的幫助或建議,我將不勝感激。
我需要說明的是,我在安裝服務時設置了「允許服務與桌面交互」選項。這就是它允許它在2000/XP上工作的原因。但是,Vista仍然有上述問題。
我錯過了什麼嗎?如果你有一個始終在運行的服務......爲什麼你的Windows窗體應用程序正在運行會影響它? – bobwienholt 2009-01-06 21:02:26
因爲我需要一種服務直接與用戶溝通的方式。這有很多原因,但最基本的例子是升級通知。 – 2009-01-06 21:07:22
我與其他人在這裏...我懷疑你正在採取錯誤的方法解決你想解決的任何問題。如果你必須擁有一個UI,那麼你可能不應該使用服務模型。也許是系統托盤中的東西......? – 2009-01-06 21:08:23