服务未运行应用程序

时间:2013-11-15 12:22:39

标签: c# .net windows service process

我正在创建一个在Windows 7上运行.exe文件的服务。由于需求复杂,它必须作为服务完成,因此无法使用控制台应用程序。

我编写了以下代码,它在控制台应用程序中运行良好,但是当放置在服务中时,永远不会运行可执行文件。

    ProcessStartInfo startInfo = new ProcessStartInfo();

    try
    {
        startInfo.WorkingDirectory = "C:\\Folder";
        startInfo.FileName = "MyApp.exe";
        Process myProcess = Process.Start(startInfo);             
    }
    catch (Exception ex)
    {
        using (StreamWriter writer = File.AppendText(path))
        {
            writer.WriteLine(ex.Message);
        }
    }
}

没有抛出任何错误,但应用程序根本就没有启动。

我已经读过服务无法以简单的方式运行可执行文件,并且已根据建议修改了上述代码,但它无效。

编辑:我已手动配置服务,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

这个问题一直是令人非常沮丧的原因,我终于解决了我的问题。是的,我已经设法使服务加载GUI应用程序,即使每个人都说这是不可能的。虽然有一个警告 - “修复”可以被视为利用Windows中的漏洞,因为我使用的代码基本上通过了Vista和Windows 7 UAC。从本质上讲,应用程序始终以完全权限执行并绕过UAC。

如果有人遇到同样的问题,您需要做的是在PC上迭代登录用户列表,并选择在此会话(具有用户桌面)中打开UI应用程序,而不是在会话中0应该运行服务(并且没有桌面)。

对于某些人来说,这可能不是一个解决方案,因为它不安全。但就我而言,安全性不是主要问题,我只需要它来工作(必须是强制服务)。

希望这可以帮助那些遇到同样问题的人。