从windows服务以C#编程方式启动进程,UI不会显示我在任务管理器中看到进程

从windows服务以C#编程方式启动进程,UI不会显示我在任务管理器中看到进程,c#,windows,C#,Windows,我正在尝试从用C#编写的windows服务以编程方式启动一个进程。我在任务管理器中看到我的流程已经启动,但没有看到它的UI 知道怎么回事吗?我在WindowsXP上运行这个 clientProcess = new System.Diagnostics.Process(); clientProcess.StartInfo.FileName = system_drive_path + @"\sd\ud\ud.exe"; clientProcess.StartInfo.WindowStyle = Pr

我正在尝试从用C#编写的windows服务以编程方式启动一个进程。我在任务管理器中看到我的流程已经启动,但没有看到它的UI

知道怎么回事吗?我在WindowsXP上运行这个

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开始与用户交互 维斯塔

如果要与用户会话交互,则必须在用户会话中有一个进程(例如托盘图标应用程序),该进程通过IPC协议(网络管道、共享内存、消息等)与服务交互

创建一个单独的UI应用程序,在会话启动时运行,该应用程序可以在服务请求时启动“sd.exe”