2014-04-16 3 views
0

Мне нужно управлять службой Windows (ведомой) с другой (основной) на том же компьютере (Windows 7 или Server 2008). Он не может ни запускать, ни останавливать службу. Что мне нужно сделать, чтобы управлять сервисом? Основная услуга написана на C#Запуск и остановка службы Windows с другой службы Windows

ОБНОВЛЕНИЕ: Мастер-сервис должен быть своего рода сторожевым таймером - он контролирует HTTP-соединение с ведомым и перезапускает ведомое устройство, если подчиненный не реагирует (не возвращая HTTP данные).

+0

Вызвать метод останова на ведомой службе. или подключить метод события OnStop и запустить его, когда вам нужно остановить службу. См. Также http://stackoverflow.com/q/16317378/102937 –

+1

Почему бы вам не просто сделать одну услугу зависимой от другой? –

+0

добавил обновление к вопросу – naveed

ответ

0

У вас может быть главная служба, создающая новый процесс, который создает скрытое командное окно с аргументом, который заставляет его вызывать команду Windows и запускать или останавливать службу. Мы все время используем эту модель на моей работе,/C приведет к выходу командного окна, как только служба завершит изменение состояния.

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo ("cmd.exe", "/C net [start or stop] [service name]"); 
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
p.StartInfo = psi; 
P.Start(); 

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

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