C# 如何在c中通过服务应用程序运行GUI应用程序#
我想通过C#中的服务应用程序运行GUI应用程序,因此我尝试了System.Diagnostics.Process.Start()方法,如下所示:C# 如何在c中通过服务应用程序运行GUI应用程序#,c#,.net,user-interface,windows-services,C#,.net,User Interface,Windows Services,我想通过C#中的服务应用程序运行GUI应用程序,因此我尝试了System.Diagnostics.Process.Start()方法,如下所示: if (KillTask("notepad") == false) { //ProcessStartInfo _ProcessStartInfo = new ProcessStartInfo(@"C:\WINDOWS\system32\notepad.exe"); //_P
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()类,正如您看到的注释代码一样,但问题仍然存在。您是否尝试过将ProcessStartInfo的用户名和密码属性设置为当前登录的用户?问题在于系统用户没有可用的gui。问题的根源在于服务没有在有gui/desktop.Related的上下文中运行;这是一个棘手的问题。您需要在当前交互用户的桌面上启动该进程。这绝非小事。并且可能没有交互式登录用户。我认为你应该重新考虑从一个服务开始一个交互过程。这是不够的。您需要在特定的桌面上启动该进程。