簡體   English   中英

從Windows Service在C#中以編程方式啟動進程,UI未顯示,但我在任務管理器中看到了該進程

[英]Starting process programatically in C# from windows service, UI does not show up i see the process in task manager

我正在嘗試以C#編寫的Windows服務以編程方式啟動進程。 我看到我的進程已在任務管理器中啟動,但沒有看到其UI。

知道發生了什么嗎? 我在Windows XP上運行

clientProcess = new System.Diagnostics.Process();
clientProcess.StartInfo.FileName = system_drive_path + @"\sd\ud\ud.exe";
clientProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
clientProcess.Start();

服務沒有與之關聯的桌面,因此,當您啟動GUI應用程序時,它將不會對用戶顯示。

您需要配置服務以使其與桌面交互,然后它才能工作。 您可以在服務安裝程序類中以圖形方式執行此操作

或在“ 登錄”選項卡下的服務屬性窗口中手動進行。

您不應該通過服務與用戶互動,包括啟動流程。 實際上,出於各種原因(主要是安全性),在Vista和更高版本中( 包括標記為“交互”的服務 )實際上是積極禁止的:

從Windows Vista開始, 重要服務無法直接與用戶交互。

如果要與用戶會話進行交互,則用戶會話中必須具有一個進程(例如,托盤圖標應用程序),該進程通過IPC協議(網絡管道,共享內存,消息等)與服務進行交互。

創建一個單獨的UI應用程序,該應用程序在會話啟動時運行,並且在服務要求時,該應用程序可以啟動“ sd.exe”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM