Запустить приложение с сервисом - PullRequest
2 голосов
/ 25 июня 2011

Я хочу запустить приложение, созданное в c # winform, через service.i, выполнив код, но приложение не запускается, даже если служба успешно запущена и исключение не выдается.

protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("starting Kb");
            try
            {
                Process myProcess = new Process();
                myProcess.StartInfo.FileName = @"C:\Program Files (x86)\Invisual E. Inc\KeyboardSetup\keyboard.exe";//Exe Path 
                myProcess.StartInfo.CreateNoWindow = false;
                myProcess.EnableRaisingEvents = true;

                myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;


                myProcess.Start();
                ProcessWindowStyle ws = myProcess.StartInfo.WindowStyle;
                if (ws == ProcessWindowStyle.Hidden)
                    myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;

                eventLog1.WriteEntry("started");

            }
            catch (Exception c)
            {
                eventLog1.WriteEntry(c.Message);
            }
        }

Файл журналане показывает никаких исключений.

Цель - запустить приложение на экране приветствия в окне, чтобы пользователь мог использовать клавиатуру, изготовленную на заказ.

Ответы [ 2 ]

2 голосов
/ 25 июня 2011

Какая операционная система? В Vista и более поздних версиях вы не можете создавать GUI из сервисов (это уязвимость в безопасности и уродливость ...). Сеанс пользователя 0 показывает, как GUI запускается сервисами из Vista.

Почему бы не создать запись реестра и / или запись запуска для вашего приложения, чтобы оно запускалось, когда пользователь, установивший ваше приложение, входит в систему? Или следуйте информации здесь о внедрении интерактивного сервиса.

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

Служба обычно запускается под пользователем, отличным от вошедшего в систему пользователя, поэтому у службы нет рабочего стола, доступного для отображения любой формы окон, поэтому причина t не отображается.

Я думаю, вам нужно будет найти другой способ, поскольку приложение winforms может запустить службу, но я не верю, что это можно сделать наоборот.

С уважением

AJ

...