2011-11-15 109 views
4

我需要某個進程在每個用戶的計算機上不斷運行。如果該.exe被殺,我必須能夠重新啓動併發送警報。
我馬上想到建立一個Windows服務作爲理想的解決方案,但我面臨的一個問題:用於啓動和重新啓動用戶進程的Windows服務(使用GUI)

  • 由該服務啓動的進程需要能夠與用戶,例如互動能夠向他展示一個GUI。
  • 我的應用程序還設置了一個鍵盤掛鉤,以便監視the user's typing rhythms,並且當我從服務啓動.exe時,該信息無法訪問。

從服務中,我能夠啓動「作爲用戶」的過程(使用LogonUser和CreateProcessAsUser函數),但仍然無法看到GUI。
這可能嗎?如果不是,我可以使用什麼來實現所需的功能?

TIA

+0

我相信在Windows 7中,服務不再可以與桌面交互。我可能是錯的。 –

回答

3

默認情況下,GUI的.exe將在服務會話,這是從用戶的交互會話分開運行。您需要研究構建interactive service的技術。

+0

謝謝。 「間接服務與用戶間的服務交互」一節中所述的解決方案很容易解決顯示對話框的問題,但不幸的是,我的應用程序還設置了一個鍵盤鉤子來監視[用戶輸入](http://en.wikipedia .org/wiki/Keystroke_dynamics),當我從服務啓動.exe時,該信息無法訪問。我用這個額外的問題更新了我的問題。 – baderous