2010-05-07 3 views
7

Я пытаюсь запустить консольное приложение из службы .NET Windows. Служба работает на сервере Windows 2008., начиная процесс из службы Windows .NET

Я использую Process.Start для запуска консольного приложения, и он запускается (я вижу его в команде mgr), но я никогда не возвращаю идентификатор процесса и вызов Process.Start просто зависает. Если я запускаю ту же службу с моей машины Windows 7, процесс запускается, и я возвращаю идентификатор процесса без проблем.

Я смущен ..

+4

Вы установили UseShellExecute в false? Вы перенаправляете свой вывод? –

ответ

1

Возможно ли, что процесс вы нерест пытается подсказывать окно станции для ввода данных пользователя? В этом случае он может повесить ...

Какой процесс вы начинаете? Является ли он частью платформы/ОС (например, cmd.exe) или чем-то обычным?

+0

Это настраиваемый процесс, который начинает прослушиваться на определенном порту tcp. Он прослушивает, но я не могу вернуть идентификатор процесса в службу Windows, которая его запускала. –

5

У меня была именно эта проблема. Для меня ключ должен был установить StartInfo.UseShellExecute = false;

0

После долгого поиска решения для этого, я нашел мудрые камни для своей проблемы.

Я создал новую программу на основе WindowsForm с той же самой командой Process.Start, а затем появится стандартное диалоговое окно «Предупреждение Windows», и именно поэтому он работает доцент.

После отключения «Контроль доступа пользователя» служба Windows работает правильно.

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