为什么Windows服务无法启动外部应用程序?

cho*_*obo 0 c# windows-services

我正在尝试使用Windows服务来启动外部应用程序.当我启动我的服务时,它不会加载应用程序.

事件视图中也没有报告错误.它只是表示服务已成功启动和停止.

以下是OnStart和OnStop代码:

public partial class TestService : ServiceBase
    {
        public Process App { get; set; }

        public TestService()
        {
            InitializeComponent();

            App = new Process();

        }

        protected override void OnStart(string[] args)
        {
            App.StartInfo.FileName = @"C:\Program Files (x86)\SourceGear\DiffMerge\DiffMerge.exe";
            App.Start();
        }

        protected override void OnStop()
        {
            App.Close();
        }
    }
Run Code Online (Sandbox Code Playgroud)

小智 5

如果您在Vista,Windows 7或Server 2008上运行,并且您的可执行文件是Windows应用程序(非命令行),则由于会话0隔离而无法运行,这意味着在最新的Windows中没有可用于服务的图形句柄OS的.

我们发现的唯一解决方法是启动RDP会话,然后在该会话中启动您的应用程序,即使这样做要复杂得多.