C# 如何在c中通过服务应用程序运行GUI应用程序#

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

我想通过C#中的服务应用程序运行GUI应用程序,因此我尝试了System.Diagnostics.Process.Start()方法,如下所示:

        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的上下文中运行;这是一个棘手的问题。您需要在当前交互用户的桌面上启动该进程。这绝非小事。并且可能没有交互式登录用户。我认为你应该重新考虑从一个服务开始一个交互过程。这是不够的。您需要在特定的桌面上启动该进程。