Начать остановку службы из формы приложения c #

Как я могу запустить и остановить службу Windows из приложения C # Form?

Ответы на вопрос(5)


просто выполните команду оболочки

NET STOP "MYSERVICENAME"
NET START "MYSERVICENAME"
// Check whether the U-TEST RTC service is started.
        ServiceController sc = new ServiceController();
        sc.ServiceName = "U-TEST RTC";
        m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgStatusService"), sc.Status.ToString()), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);

        if (sc.Status == ServiceControllerStatus.Stopped)
        {
            m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgStartService")), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
            try
            {
                // Start the service, and wait until its status is "Running".
                sc.Start();
                var timeout = new TimeSpan(0, 0, 5); // 5seconds
                sc.WaitForStatus(ServiceControllerStatus.Running, timeout);
                m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgNowService"), sc.Status.ToString()), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
            }
            catch (InvalidOperationException)
            {
                m_objMainChainRTC.m_objUC.ValidationLogMessages(String.Format(LocalizeDictionary.Instance.GetLocalizedValue("MsgExceptionStartService")), Alstom.Automation.Forms.ViewModels.RTCAutomationViewModel.ColorLog.Log);
            }
        }

Подробная информация о контроллере службы

ServiceController sc = new ServiceController("your service name");
if (sc.Status == ServiceControllerStatus.Stopped)
{
  sc.Start();

}

Точно так же вы можете прекратить использовать метод остановки

  sc.Stop();
 AlexandruC16 июн. 2012 г., 13:11
он не распознает это с помощью System.ServiceProcess; - Я использую .net 4
 21 нояб. 2012 г., 22:53
Добавьте пространство имен, возможно, вам его не хватает.

Начать:

ServiceController service = new ServiceController("YourServiceName");
service.Start();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Running, timeout);

Прекратить:

ServiceController service = new ServiceController("YourServiceName");
service.Stop();
 var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

Оба примера показывают, как ждать, пока служба не достигнет нового состояния (запущен, остановлен и т. Д.). Параметр timeout в WaitForStatus является необязательным.

 19 июн. 2018 г., 07:20
Это бросает мне исключение недействительной операции
 AlexandruC16 июн. 2012 г., 13:14
Правильно! дурак я. Благодарю. отмечен!
 AlexandruC16 июн. 2012 г., 13:12
он не распознает это с помощью System.ServiceProcess; - Я использую .net 4
 16 июн. 2012 г., 13:13
Должно работать нормально, но вы должны добавить ссылку на System.ServiceProcess.
Решение Вопроса

System.ServiceProcess.dll, Тогда вы можете использоватьServiceController учебный класс.

// Check whether the Alerter service is started.
ServiceController sc  = new ServiceController();
sc.ServiceName = "Alerter";
Console.WriteLine("The Alerter service status is currently set to {0}", 
                   sc.Status.ToString());

if (sc.Status == ServiceControllerStatus.Stopped)
{
   // Start the service if the current status is stopped.
   Console.WriteLine("Starting the Alerter service...");
   try 
   {
      // Start the service, and wait until its status is "Running".
      sc.Start();
      sc.WaitForStatus(ServiceControllerStatus.Running);

      // Display the current service status.
      Console.WriteLine("The Alerter service status is now set to {0}.", 
                         sc.Status.ToString());
   }
   catch (InvalidOperationException)
   {
      Console.WriteLine("Could not start the Alerter service.");
   }
}
 AlexandruC16 июн. 2012 г., 13:10
он не распознает это с помощью System.ServiceProcess; - Я использую .net 4
 16 июн. 2012 г., 14:01
Я обновил ответ со ссылкой, которую нужно добавить.
 16 июн. 2012 г., 13:12
@lxClan добавить ссылку в свой проект
 19 июн. 2018 г., 06:50
это только запускает службу

Ваш ответ на вопрос