C # Windows Service - PullRequest
       0

C # Windows Service

0 голосов
/ 08 апреля 2011

У меня запущена служба Windows. Я бы хотел отслеживать консольное приложение ac # из службы Windows .Моё консольное приложение c # читает и записывает в консоль сумму, умножение. Я хотел бы открыть и работать с консольным приложением, используя службу Windows .Что я должен написать в методе OnStart () , чтобы правильно выполнить мой код на c #.

Я поместил в службу Windows файл exe (Process.start ()) из кода моего консольного приложения, но у меня ошибка: консольное приложение перестало работать .ЗАЧЕМ?Помогите мне, пожалуйста:). Я знаю, что службы Windows не работают с приложениями с графическим интерфейсом .Но я просто хочу открыть из моей службы Windows другое приложение (мой exe, который содержит мое консольное приложение).THX

Может кто-нибудь дать мне небольшой эквалайзер, который работает? :).Thx

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

Это не только приложения с графическим интерфейсом, которые не работают со службами Windows.Консольные приложения имеют ту же проблему.Они по-прежнему выполняются как процесс пользовательского режима, к которому служба Windows не имеет доступа.Службы работают в полностью изолированном пространстве процессов, называемом Сеанс 0. Они не имеют доступа к рабочему столу какой-либо учетной записи пользователя и не могут взаимодействовать с приложениями, запущенными на этих рабочих столах.

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

Это функция безопасности Windows Vista и более поздних версий.Флажок «Включить службу для взаимодействия с рабочим столом» больше не работает и не работает с Windows XP.Вы не должны были использовать его там тоже.Изоляция защищает службы Windows от атак, которые происходят в коде приложения.

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

Связанное чтение:

0 голосов
/ 08 апреля 2011

У вашего вопроса есть некоторые проблемы, как вы упомянули, большинство серверов Windows блокируют службы, непосредственно обращающиеся к графическому интерфейсу, а также службы запускаются как собственный экземпляр пользователя, а не как любой вошедший в систему. В результате, доступ к Пользовательское приложение сложно, если не невозможно (так же, как оно не может видеть ваши пользовательские каталоги)

Что более возможно, так это обратное.

Если у вас есть служба, с которой ваше консольное приложение желает взаимодействовать, она может объявить о своем прибытии, а затем при подключении служба может ответить с инструкциями для выполнения вашего консольного приложения. Но вам необходимо разработать структурный метод для этого.

0 голосов
/ 08 апреля 2011

В вашем консольном приложении регистрируются ошибки? Возможно, попробуйте проверить журналы ошибок, чтобы увидеть, что может быть причиной проблемы консольного приложения. Этот вопрос может привести вас к ответу / исправить:

Избегать остановки программы в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...