2014-12-01 4 views
0

У меня есть служба, которая должна открывать приложение exe (приложение C#) на основе определенных условий. Когда служба запускается в режиме отладки (Visual studio), она открывает приложение. Но когда он установлен как услуга, он этого не делает. Он не может открыть приложение. Почему это происходит?Запуск приложения exe из службы windows

+0

Должен ли пользователь видеть приложение? Это невозможно. И работает ли ваш сервис в сеансе? Это может потребоваться. – TomTom

+0

Службы по умолчанию запускаются в изолированном сеансе, что не позволяет взаимодействовать с пользователем. Службы Windows не предназначены для интерактивного взаимодействия, поэтому то, что вы пытаетесь сделать здесь, - это не то, что предназначена для службы. Возможно, вы захотите рассмотреть возможность рефакторинга своего кода в качестве пользовательского режима. Уточните, что вам нужно для приложения exe, и что делает служба? –

+0

Да, пользователи должны видеть приложение. Нет. любая работа для этого? –

ответ

0

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

1.create dummy app (скопировать код вставки из приложения в форму) Скрыть его после запуска. 2. запустить приложение сразу после установки. 3.add ключ реестра, чтобы он запускался после перезагрузки системы.

простыми словами, поведение службы клонирования.

1

То, что вы пытаетесь сделать, прямо не возможно при обычных обстоятельствах - просто запуск приложения в новом процессе из вашего кода службы Windows не будет взаимодействовать с графическим интерфейсом пользователя, который в настоящий момент вошел в систему. Я боюсь.

Однако существуют способы связи между службой и графическим интерфейсом.

This discussion might point you in the right direction.

+0

Hi @olitee Спасибо за ответ. Я попытался использовать опцию «Взаимодействие с рабочим столом». Это успешно запускает приложение, но запрашивает у пользователя разрешение на чтение сообщения или сброс. Цель заявки - заполнить посещаемость принудительно и не откладывать ее. Есть ли возможность, когда он может переопределить права пользователя и запустить приложение напрямую? –

+0

Я ничего не знаю об этом - это поведение по умолчанию существует по какой-то причине. Предпочтительный подход заключается в том, чтобы ваш сервис связывался с настольным приложением через именованные каналы. Вы можете создать вспомогательное приложение, которое тихо запускается в сеансе пользователя и контролирует этот канал для сообщений. Это приложение может либо представить его графическому интерфейсу пользователю при получении сообщения, либо запустить другое приложение так, как вы уже описали. – olitee

0

Основываясь на ваших комментариях, я думаю, что вы действительно ищете здесь обычное приложение для пользователей и планировщик. Возможно, вы захотите использовать собственный планировщик Windows для запуска приложения каждый понедельник, если он всегда включен или помещает приложение в Startup. Когда приложение запускается, оно должно проверять текущий день недели, и если он находится в понедельник, и приложение ранее не запускалось в этот день, приложение должно запускаться. Если нет, вы можете полностью полностью закрыть приложение.

+0

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

Смежные вопросы