2016-04-29 6 views
6

Я пробовал System.ServiceProcess.ServiceController System.Diagnostics.Process;Как остановить или запустить Windows Service в C# mvc?

для управления услугами Windows в моей веб-форме. С System.ServiceProcess.ServiceController Я получаю отказ от доступа.

С System.Diagnostics.Process Я ничего не получаю. Как я могу запускать/останавливать службы Windows с помощью своей веб-формы, любую идею?

+4

Для управления услугами, вы должны работать с повышенными правами. Веб-приложение не делает этого по умолчанию. – Knelis

+0

как я могу получить это разрешение? –

+1

Если я напомню, что это было, установив идентификатор пула приложений в систему (или более плановый уровень пользователя). I – Matthew

ответ

2

Knelis правильно, я думаю, вам просто нужен еще один процесс для этого. Возможно, ваш собственный сервис Windows, который работает под локальной системой, и предоставляет wcf-сервис для управления услугами Windows, а ваше веб-приложение может вызвать службу wcf.

+0

Да, развязка двух является лучшим решением. Это лучший вариант безопасности. –

+1

И в зависимости от целевой аудитории, убедитесь, что белые списки служб можно запускать или останавливать. – CodeCaster

+1

@AlicanUzun Это хорошее решение. В этом примере демонстрируется учебник службы WCF https://msdn.microsoft.com/en-us/library/ms733069%28v=vs.110%29.aspx И конвертируйте это учебное пособие в службы окон управления и затем получите доступ к этой услуге с помощью своего веб-приложения – Elshan

4

Вот важные моменты для достижения:

1 Вы должны добавить ссылку System.ServiceProcess в приложении. Это пространство имен содержит класс ServiceController для доступа к службе окна.

2 Вам необходимо проверить статус оконных служб, прежде чем явно начнет или остановит его.

3 По умолчанию приложение IIS выполняется под учетной записью ASP.NET, у которой не имеет прав доступа к службе окна. Итак, Very Важной частью решения является: Олицетворение. Необходимо, чтобы выдал себя за приложение/часть кода с помощью учетных данных пользователя , который имеет надлежащие права и разрешение на доступ к окну .

См эту запись в блоге от asp.net А также посмотреть на эту https://stackoverflow.com/a/17497084/1641556

+2

Это решение потребует проверки подлинности Windows на вашем сайте. Если все в порядке, это достойное и безопасное решение. –

+0

Как реализовать проверку подлинности Windows на сайте? можете ли вы это объяснить? –

+0

@AlicanUzun проверить этот учебник http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print – Elshan