Почему служба Windows не запускает внешнее приложение? - PullRequest
0 голосов
/ 08 июня 2011

Я пытаюсь получить службу 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();
        }
    }

Ответы [ 2 ]

5 голосов
/ 08 июня 2011

Если вы работаете в Vista, Windows 7 или Server 2008, и ваш исполняемый файл является приложением Windows (не из командной строки), то он не будет работать из-за изоляции сеанса 0, то есть графических дескрипторов, доступных для служб в новейшие ОС Windows.

Единственный найденный нами обходной путь - запустить сеанс RDP, а затем запустить приложение в этом сеансе, даже если это намного сложнее.

0 голосов
/ 08 июня 2011

Включите этот код в try-catch и добавьте небольшую уловку , которая позволяет подключить отладчик к сервису.Вероятно, это проблема с разрешениями, но вы получите ее в блоке catch

protected override void OnStart(string[] args)
{
    Debugger.Launch(); //displays a pop up window with debuggers selection

    try
    {
        App.StartInfo.FileName = @"C:\Program Files (x86)\SourceGear\DiffMerge\DiffMerge.exe";
        App.Start();
    }
    catch(Exception ex)
    {
        //see what's wrong here
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...