Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как запустить GUI процесс из службы?


Автор: maxxim010485 20.8.2010, 17:37
Привет всем! Помогите пожалуйста в следующем вопросе: нужно в службе запустить процесс на выполнение :

Делаю следующим образом:

Код

                        ProcessStartInfo nfoLVA = new ProcessStartInfo();
                        nfoLVA.CreateNoWindow = true;
                        nfoLVA.UseShellExecute = true;
                        nfoLVA.FileName = settings.LVAFile;
                        nfoLVA.Arguments = " " + "'" + batchFileName + "'";
                        Process pLVA = new Process();
                        pLVA.StartInfo = nfoLVA;
                        pLVA.Start();
                        pLVA.WaitForExit();


Но ничего не выходит: в месте pLVA.Start служба зависает и все...

Заранее всем спасибо)

Автор: Fortnox 20.8.2010, 18:34
maxxim010485, нужно разрешить сервису взаимодействие с рабочим столом.
Так как сервисы работают вне контекста рабочего стола, то есть, если идет запуск процесса в сервисе, процесс будет выполняться "в фоне".

Добавлено через 4 минуты и 21 секунду
Ах да, забыл. В Vista и выше, такая фишка не прокатит - другой уровень выполнения.

Автор: maxxim010485 20.8.2010, 18:46
А как же решить проблему для Vista???

Автор: Fortnox 20.8.2010, 18:56
maxxim010485, никак. Сервисы они на то и сервисы, чтобы работать "в фоне", не завися от пользователя.

Автор: jonie 20.8.2010, 19:09
http://social.msdn.microsoft.com/forums/en-US/windowssecurity/thread/31bfa13d-982b-4b1a-bff3-2761ade5214f/
тут обсуждалось. Там, конечно С++, но суть таже.

и тут почитайте http://stackoverflow.com/questions/33594/createprocessasuser-vs-shellexecute

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)