2011-09-08 15 views
3

我打算使用Windows服務(用C#編寫)運行啓動/監視UI應用程序,並選中「允許服務與桌面交互」。此正常工作與Windows XP,但有窗7彈出如下所示使用Windows服務運行用戶界面

enter image description here

,當我上視圖單擊消息,則在整個屏幕空白出來,用唯一的用戶界面顯示出來,如圖所示下面。

enter image description here

有沒有什麼辦法讓它不被顯示的信息和屏幕一片空白工作。

意見/建議讚賞。

問候 DEE

回答

3

「允許服務與桌面交互」是一項遺留選項,現在非常沮喪,雖然它存在,但預計無法在Windows Vista及更高版本中使用。

你需要閱讀這是爲什麼在這個其他的情況了一點,所以回答:
Allow service to interact with desktop in Windows

然後尋找在回答這裏討論的備選方案:
Alternative to "Allow service to interact with desktop"?

之外的另一個討論SO:
http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/

7

在Vista和更高版本,服務無法與桌面交互。服務在所謂的會話0隔離下運行。你試圖做什麼是根本不可能的。

您將不得不重新編寫應用程序,以便UI部分駐留在運行在登錄用戶桌面上的標準Windows應用程序中。這個UI部分可以通過你喜歡的任何IPC機制與服務進行通信。

+0

帶有命名管道的WCF是這種情況的不錯選擇。只要注意安全含義。您將發佈的API不需要UAC提升權限......但該服務將具有(實際上取決於進程的身份)。如果被濫用,api可能成爲惡意代碼的網關 –

+0

@Steve當然,最好的做法是將服務作爲受限用戶運行,並且絕對避免使用「SYSTEM」帳戶。 –

相關問題