2011-07-04 174 views
0

我想运行通过在C#服务应用程序的GUI应用程序,所以我有System.Diagnostics.Process.Start()方法,如下尝试:如何运行通过在C#服务应用程序的GUI应用程序

 if (KillTask("notepad") == false) 
     { 
      //ProcessStartInfo _ProcessStartInfo = new ProcessStartInfo(@"C:\WINDOWS\system32\notepad.exe"); 
      //_ProcessStartInfo.UseShellExecute = false; 
      //_ProcessStartInfo.RedirectStandardError = true; 
      //_ProcessStartInfo.RedirectStandardInput = true; 
      //_ProcessStartInfo.RedirectStandardOutput = true; 
      //_ProcessStartInfo.CreateNoWindow = true; 

      //_ProcessStartInfo.ErrorDialog = false; 
      //_ProcessStartInfo.WindowStyle = ProcessWindowStyle.Maximized; 
      //System.Diagnostics.Process.Start(_ProcessStartInfo); 


      System.Diagnostics.Process.Start("notepad.exe"); 



     } 

问题是记事本运行但没有UI,你可以在任务管理器中看到它,但没有显示记事本的GUI实例。

我也尝试使用ProcessStartInfo()类,因为您可以看到标记为代码,但问题仍然存在。

+1

问题的根源在于服务不会在具有GUI /桌面的上下文中运行。 –

+0

相关; http://stackoverflow.com/questions/267838/how-can-a-windows-service-execute-a-gui-application –

+1

这是一个艰难的坚果要破解。您需要在当前交互式用户的桌面上启动该进程。远非平凡。并且可能没有交互式登录用户。我认为你应该重新考虑从服务开始一个互动过程。 –

回答

0

您是否尝试过将ProcessStartInfo的用户名和密码属性设置为当前登录的用户?问题是系统用户没有可用的gui。

+1

这还不够。您需要在特定的桌面上启动该过程。 –