Refresh() public method

public Refresh ( ) : void
return void
        private static void serviceStart()
        {
            ServiceController[] scServices;
            scServices = ServiceController.GetServices();

            foreach (ServiceController scTemp in scServices)
            {

                if (scTemp.ServiceName == "open-audit-check-service")
                {

                    ServiceController sc = new ServiceController("open-audit-check-service");
                    if (sc.Status == ServiceControllerStatus.Stopped)
                    {
                        int tries = 0;
                        sc.Start();
                        while (sc.Status == ServiceControllerStatus.Stopped && tries < 5)
                        {
                            Thread.Sleep(1000);
                            sc.Refresh();
                            tries++;
                        }
                    }

                }
            }
        }
示例#2
1
        /// <summary>
        /// Start the service with the given name and wait until the status of the service is running.
        /// If the service status is not running after the given timeout then the service is considered not started.
        /// You can call this method after stop or pause the service in order to re-start it.
        /// </summary>
        /// <param name="serviceName">The name of the service</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>True if the service has been started. Otherwise, false.</returns>
        public static bool StartService(string serviceName, TimeSpan timeout)
        {
            try
            {
                bool timeoutEnabled = (timeout.CompareTo(TimeSpan.Zero) > 0);
                using (ServiceController c = new ServiceController(serviceName))
                {
                    c.Refresh();
                    if (timeoutEnabled && c.Status == ServiceControllerStatus.Running)
                        return true;
                    if (!timeoutEnabled && (c.Status == ServiceControllerStatus.Running || c.Status == ServiceControllerStatus.StartPending || c.Status == ServiceControllerStatus.ContinuePending))
                        return true;

                    if (c.Status == ServiceControllerStatus.Paused || c.Status == ServiceControllerStatus.ContinuePending)
                        c.Continue();
                    else if (c.Status == ServiceControllerStatus.Stopped || c.Status == ServiceControllerStatus.StartPending)
                        c.Start();
                    if (timeoutEnabled)
                        c.WaitForStatus(ServiceControllerStatus.Running, timeout);
                    return true;
                }
            }
            catch (Exception e)
            {
                Utils.Trace(e, "Unexpected error starting service {0}.", serviceName);
                return false;
            }
        }
        private void StartOrRunOnce(bool IsRunOnce)
        {
            string ServiceName;

            System.ServiceProcess.ServiceController service;
            try
            {
                ChekForSaveConfigurations();
                ServiceName = ((DataRowView)(lstServices.SelectedItem)).Row["ServiceName"].ToString();
                service     = new System.ServiceProcess.ServiceController(ServiceName);
                service.Start(new string[] { Convert.ToString(IsRunOnce) });

                if (IsRunOnce)
                {
                    Cursor.Current = Cursors.WaitCursor;

                    while (service.Status == ServiceControllerStatus.StartPending)
                    {
                        service.Refresh();
                    }

                    txtLog.AppendText(GetCurrentDateTime() + service.ServiceName + " is executed once sucessfully." + Environment.NewLine);
                    Application.DoEvents();

                    service.Stop();

                    while ((service.Status == ServiceControllerStatus.Running || service.Status == ServiceControllerStatus.StopPending))
                    {
                        System.Threading.Thread.Sleep(10);
                        service.Refresh();
                    }

                    Cursor.Current = Cursors.Default;

                    CheckServiceStatus();
                }
                else
                {
                    CheckServiceStatus();
                    txtLog.AppendText(GetCurrentDateTime() + service.ServiceName + " is started sucessfully." + Environment.NewLine);
                }
            }
            catch (Exception ex)
            {
                txtLog.AppendText(ex.ToString());
            }
            finally
            {
                ServiceName = null;
                service     = null;
            }
        }
示例#4
0
        public void MonitorServiceStart()
        {
            ServiceController cs = new ServiceController();
            ServiceController cgw = new ServiceController();
            try
            {
                cs.ServiceName = "HUAWEI SMC 2.0 MonitorManage";
                cs.Refresh();

                cgw.ServiceName = "HUAWEI SMC 2.0 ConvergeGateway";
                cgw.Refresh();
                if (cgw.Status == ServiceControllerStatus.Running || cgw.Status == ServiceControllerStatus.StartPending)  //监控服务自启动的前提是CGW服务在线
                {
                    //if (cs.Status != ServiceControllerStatus.Running && cs.Status != ServiceControllerStatus.StartPending)
                    if (cs.Status == ServiceControllerStatus.Stopped)
                    {
                        //Thread.Sleep(1000);
                        TimeSpan timeout = TimeSpan.FromMilliseconds(CgwConst.WAIT_MONITOR_SERVICE_RUNNING_MILLI_SECONDS);
                        cs.Start();
                        cs.WaitForStatus(ServiceControllerStatus.Running, timeout);
                    }
                }
            }
            catch (System.Exception)
            {
                TimeSpan timeout = TimeSpan.FromMilliseconds(CgwConst.WAIT_MONITOR_SERVICE_RUNNING_MILLI_SECONDS);
                cs.Start();
                cs.WaitForStatus(ServiceControllerStatus.Running, timeout);
            }
        }
示例#5
0
 static bool StopService(string serviceName)
 {
     if (ServiceIsExisted(serviceName))
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
         {
             service.Stop();
             for (int i = 0; i < SERVICE_CONTROL_TIMEOUT; i++)
             {
                 service.Refresh();
                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                 {
                     Console.WriteLine("Service Stoped");
                     return(true);
                 }
                 System.Threading.Thread.Sleep(1000);
             }
             Console.WriteLine("Stop Service Timeout");
             return(false);
         }
         else
         {
             return(true);
         }
     }
     return(false);
 }
示例#6
0
 /// <summary>
 /// 启动服务
 /// </summary>
 /// <param name="serviceName"></param>
 public static void StartService(string serviceName)
 {
     if (IsServiceExisted(serviceName))
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running &&
             service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
         {
             service.Start();
             for (int i = 0; i < 60; i++)
             {
                 service.Refresh();
                 System.Threading.Thread.Sleep(1000);
                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                 {
                     break;
                 }
                 if (i == 59)
                 {
                     throw new Exception("Start Service Error:" + serviceName);
                 }
             }
         }
     }
 }
示例#7
0
文件: Form1.cs 项目: wqlxx/drqueue
        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            serviceControllerIpc.Refresh();

            if (serviceControllerIpc.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
            {
                this.menuItemDriver.Checked = false;
            }
            else
            {
                this.menuItemDriver.Checked = true;
            }

            if (!IsActive(SLAVE))
            {
                if (this.menuItemConnect.Checked)
                {
                    this.DrQueue.Icon            = Drqueue_off.Icon;
                    this.menuItemConnect.Checked = false;
                }
            }

            else
            {
                if (!this.menuItemConnect.Checked)
                {
                    this.DrQueue.Icon            = Drqueue_on.Icon;
                    this.menuItemConnect.Checked = true;
                }
            }
        }
示例#8
0
        private void UpdateOptions()
        {
            try{
                m_Utils.WriteDownloadDirectory(m_strDownloadDirectory);
                m_Utils.WriteDownloadURL(m_strDownloadURL);
                m_Utils.WritePollDelay(Convert.ToInt32(m_strPollMinutes), Convert.ToInt32(m_strPollHours));
                m_Utils.WriteCustomerCode(m_strCustomerCode);
                m_Utils.WriteSiteCode(m_strSiteCode);
            }
            catch (Exception e)
            {
                niconNotifyBalloon.ShowBalloon("Meticulus FAS", e.Message + "\n\nClick here to view the errors.", clsNotifyBalloon.NotifyInfoFlags.Error);
            }

            try
            {
                serviceControllerDwnld.ServiceName = m_Utils.GetServiceName();
                serviceControllerDwnld.Refresh();
                if (!serviceControllerDwnld.Status.Equals(ServiceControllerStatus.Stopped))
                {
                    serviceControllerDwnld.Stop();
                    serviceControllerDwnld.WaitForStatus(ServiceControllerStatus.Stopped);
                }
                serviceControllerDwnld.Start();
            }
            catch (Exception e)
            {
                //Just log exceptions here as warnings. The service may not be installed.
                string message = e.Message + "\n" + "Please ignore this warning if the service is not installed.";
                m_Utils.WriteEventLogEntry(message, EventLogEntryType.Warning, EVENT_LOG_SOURCE);
            }
        }
示例#9
0
        public static void InstallService(string serviceName, string serviceInstallPath)
        {
            //var strServiceName = "KugarDataSyncClient";
            //var strServiceInstallPath = System.Environment.CommandLine;

            IDictionary mySavedState = new Hashtable();

            try
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);

                //服务已经存在则卸载
                if (ServiceIsExisted(serviceName))
                {
                    //StopService(strServiceName);
                    UnInstallService(serviceName, serviceInstallPath);
                }
                service.Refresh();
                //注册服务
                AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();

                mySavedState.Clear();
                myAssemblyInstaller.Path          = serviceInstallPath;
                myAssemblyInstaller.UseNewContext = true;
                myAssemblyInstaller.Install(mySavedState);
                myAssemblyInstaller.Commit(mySavedState);
                myAssemblyInstaller.Dispose();

                service.Start();
            }
            catch (Exception ex)
            {
                throw new Exception("注册服务时出错:" + ex.Message);
            }
        }
        /// <summary>
        /// </summary>
        /// <param name="objz"></param>
        /// <param name="cmdTag"></param>
        /// <returns></returns>
        public static bool ChangeServiceStartMode(WmiServiceObj objz, string cmdTag)
        {
            bool bRel;
            var sc = new ServiceController(objz.Name);
            string startupType = "";

            var myPath = new ManagementPath
            {
                Server = Environment.MachineName,
                NamespacePath = @"root\CIMV2",
                RelativePath = string.Format("Win32_Service.Name='{0}'", sc.ServiceName)
            };
            switch (cmdTag)
            {
                case "41":
                    startupType = "Manual";
                    break;
                case "42":
                    startupType = "Auto";
                    break;
                case "43":
                    startupType = "Disabled";
                    break;
            }
            using (var service = new ManagementObject(myPath))
            {
                ManagementBaseObject inputArgs = service.GetMethodParameters("ChangeStartMode");
                inputArgs["startmode"] = startupType;
                service.InvokeMethod("ChangeStartMode", inputArgs, null);
                bRel = true;
            }

            sc.Refresh();
            return bRel;
        }
示例#11
0
        static internal bool StartService(System.ServiceProcess.ServiceController service)
        {
            bool flag = true;

            try
            {
                service.Start();
                for (int i = 0; i < 60; i++)
                {
                    service.Refresh();
                    System.Threading.Thread.Sleep(1000);
                    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        break;
                    }
                    if (i == 59)
                    {
                        flag = false;
                    }
                }
                return(flag);
            }
            catch
            {
                return(false);
            }
        }
示例#12
0
        public static bool StartService(string serviceName)
        {
            bool flag = true;

            if (ServiceIsExisted(serviceName))
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                {
                    service.Start();
                    for (int i = 0; i < 60; i++)
                    {
                        service.Refresh();
                        System.Threading.Thread.Sleep(1000);
                        if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                        {
                            break;
                        }
                        if (i == 59)
                        {
                            flag = false;
                        }
                    }
                }
            }
            return(flag);
        }
示例#13
0
        public static bool StartService(string serviceName)
        {
            bool flag = true;

            if (IsServiceIsExisted(serviceName))
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running && service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
                {
                    try
                    {
                        service.Start();
                        for (int i = 0; i < 60; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(1000);
                            if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                            {
                                break;
                            }
                            if (i == 59)
                            {
                                flag = false;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        TimerUtils.writeLog("启动服务时出现异常:" + e.ToString());
                    }
                }
            }
            return(flag);
        }
示例#14
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string svcPath = Path.Combine(Environment.CurrentDirectory, "DS4ToolService.exe");

            ServiceController sc = new ServiceController(Constants.SERVICE_NAME, Environment.MachineName);
            ServiceControllerPermission scp = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, Environment.MachineName, Constants.SERVICE_NAME);
            scp.Assert();
            sc.Refresh();
            ServiceInstaller si = new ServiceInstaller();

            if (si.DoesServiceExist(Constants.SERVICE_NAME))
            {
                if (sc.Status == ServiceControllerStatus.Running)
                    sc.Stop();

                sc.WaitForStatus(ServiceControllerStatus.Stopped);
                si.UnInstallService(Constants.SERVICE_NAME);
                MessageBox.Show("Service removed");
            }

            EventLog eventLog = new EventLog();
            eventLog.Source = Constants.SERVICE_NAME;
            eventLog.Log = "Application";
            if (!EventLog.SourceExists(eventLog.Source))
            {
                EventLog.DeleteEventSource(eventLog.Source, Environment.MachineName);
                MessageBox.Show("EventLog removed");
            }
        }
        private bool StopService(string serviceName)
        {
            bool flag = true;

            if (IsServiceIsExisted(serviceName))
            {
                System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    service.Stop();
                    for (int i = 0; i < 60; i++)
                    {
                        service.Refresh();
                        System.Threading.Thread.Sleep(1000);
                        if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                        {
                            break;
                        }
                        if (i == 59)
                        {
                            flag = false;
                        }
                    }
                }
            }
            return(flag);
        }
示例#16
0
 private static void Run()
 {
     try {
         var sw = new Stopwatch();
         using (var service = new ServiceController(AppService.Instance.ServiceName)) {
             bool? lastIsRunning = null;
             Tray.SetStatusToUnknown();
             while (!ServiceStatusThread.CancelEvent.WaitOne(0, false)) {
                 if ((sw.IsRunning == false) || (sw.ElapsedMilliseconds > 1000)) {
                     bool? currIsRunning;
                     try {
                         service.Refresh();
                         currIsRunning = (service.Status == ServiceControllerStatus.Running);
                     } catch (InvalidOperationException) {
                         currIsRunning = null;
                     }
                     if (lastIsRunning != currIsRunning) {
                         if (currIsRunning == null) {
                             Tray.SetStatusToUnknown();
                         } else if (currIsRunning == true) {
                             Tray.SetStatusToRunning();
                         } else {
                             Tray.SetStatusToStopped();
                         }
                     }
                     lastIsRunning = currIsRunning;
                     sw.Reset();
                     sw.Start();
                 }
                 Thread.Sleep(100);
             }
         }
     } catch (ThreadAbortException) { }
 }
 public bool HandleError(Exception error)
 {
     OperationContext.Current.Channel.Close();
     ServiceController sc = new ServiceController();
     sc.Refresh();
     Logger.Instance.Exception(error.Message, error.StackTrace);
     return true;
 }
示例#18
0
        public static bool IsServiceRunning(string serviceName)
        {
            ServiceController service = new ServiceController(serviceName);

            service.Refresh();

            return service.Status == ServiceControllerStatus.Running;
        }
示例#19
0
        public static bool IsServiceRunningRemotely(string serviceName, string host)
        {
            ServiceController service = new ServiceController(serviceName, host);

            service.Refresh();

            return service.Status == ServiceControllerStatus.Running;
        }
示例#20
0
        // Service start, if the service isn't active, we run it. Otherwise, nothing is done.
        /// <summary>
        /// Starting Service
        /// </summary>
        private static void StartService(){
            ImpersonateUser iu = new ImpersonateUser();
            
            iu.Impersonate(@".", "Axel", Settings.Default.Password);

            using (var controller = new ServiceController("RedXService")){
                ServiceControllerPermission scp = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, ".", "RedXService");
                scp.Assert();

                controller.Refresh();
                if (controller.Status != ServiceControllerStatus.Running){
                    controller.Start();
                }
                controller.WaitForStatus(ServiceControllerStatus.StartPending);
                controller.WaitForStatus(ServiceControllerStatus.Running);

                controller.Refresh();
            }
  
            iu.Undo();
        }
示例#21
0
 // 停止服务
 public static void StopService(string serviceName)
 {
     if (ServiceIsExisted(serviceName))
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status == ServiceControllerStatus.Running)
         {
             service.Stop();
             service.Refresh();
         }
     }
 }
示例#22
0
        public bool MonitorServiceRun()
        {
            ServiceController cs = new ServiceController();
            cs.ServiceName = "HUAWEI SMC 2.0 MonitorManage";
            cs.Refresh();

            if (cs.Status == ServiceControllerStatus.Running || cs.Status == ServiceControllerStatus.StartPending)
            {
                return true;
            }
            return false;
        }
示例#23
0
 private void RefreshService()
 {
     if (_service != null)
     {
         try
         {
             _service.Refresh();
         }
         catch (Exception)
         {
         }
     }
 }
示例#24
0
 /// <summary>
 /// Verifies if the Window service with the given name is installed.
 /// </summary>
 /// <param name="serviceName"></param>
 /// <returns>true if the service is installed properly. false otherwise</returns>
 public static bool checkServiceInstallation(string serviceName)
 {
     bool exists = false;
     try
     {
         ServiceController sc = new ServiceController(serviceName);
         sc.Refresh(); //just a dummy call to make sure the service exists.
         sc.Close();
         sc = null;
         exists = true;
     }
     catch
     {}
     return exists;
 }
 /// <summary>
 /// Handles the AfterInstall event of the serviceInstaller control.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">The <see cref="System.Configuration.Install.InstallEventArgs"/> instance containing the event data.</param>
 private void ServiceInstallerAfterInstall(object sender, InstallEventArgs e)
 {
     try
     {
         ServiceController serviceController = new ServiceController(this.serviceInstaller.ServiceName);
         serviceController.Refresh();
         serviceController.Stop();
         serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
         serviceController.Start();
     }
     catch (Exception ex)
     {
         Log.Error(ex);
     }
 }
        private static void serviceExecuteCommand(int number, bool silent)
        {
            ServiceController mainService;

            if (isInTerminalServerSession())
            {
                return;
            }
            if (!isHicapsConnectServiceInstalled())
            {
                return;
            }
            try
            {
                mainService = new System.ServiceProcess.ServiceController(Services.MainService);
            }
            catch (Exception)
            {
                return;
            }
            try
            {
                mainService.Refresh();

                if (mainService.Status != System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    // if (IsAnAdministrator())
                    //{
                    StopStartService(true);
                    // }
                }

                if (mainService.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                {
                    mainService.ExecuteCommand(number);
                    //waitConfigurationScreen();
                }
                else
                {
                    //ShowServiceNotRunningBox(silent);
                }
            }
            catch (Exception)
            {
                return;
            }
        }
示例#27
0
 public void Install()
 {
     ServiceController controler;
     string file = typeof(Shon.Host).Assembly.Location;
     if (file.Contains(" "))
     {
         file = '"' + file + '"';
     }
     ProcessStartInfo start = new ProcessStartInfo(file, "/install");
     start.UseShellExecute = true;
     start.Verb = "runas";
     using (Process process = Process.Start(start))
     {
         // run install
     }
     // sleep to ensure status is propagated
     Stopwatch watch = new Stopwatch();
     watch.Start();
     while (watch.ElapsedMilliseconds < 1000)
     {
         controler = new ServiceController("toto");
         Thread.Sleep(50);
         controler.Refresh();
         try
         {
             if (ServiceControllerStatus.Stopped == controler.Status)
             {
                 break;
             }
             if (ServiceControllerStatus.Running == controler.Status)
             {
                 controler.Stop();
             }
         }
         catch
         {
             // exception is raised if service not ready
         }
         finally
         {
             controler.Dispose();
         }
     }
     controler = new ServiceController("toto");
     Assert.AreEqual(ServiceControllerStatus.Stopped, controler.Status);
 }
示例#28
0
 /// <summary>
 /// Verifies if the Window service with the given name is installed.
 /// </summary>
 /// <param name="serviceName">Name of the service.</param>
 /// <returns>
 /// true if the service is installed properly. false otherwise
 /// </returns>
 public static bool CheckServiceInstallation(string serviceName)
 {
     bool exists = false;
     ServiceController sc = null;
     try
     {
         sc = new ServiceController(serviceName);
         sc.Refresh(); //just a dummy call to make sure the service exists.
         exists = true;
     }
     finally
     {
         if (sc != null)
             sc.Close();
         sc = null;
     }
     return exists;
 }
示例#29
0
 /// <summary>
 /// 重启服务
 /// </summary>
 /// <param name="serviceName"></param>
 public void RestartService(string serviceName)
 {
     try
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status == ServiceControllerStatus.Running)
         {
             service.Stop();
             service.WaitForStatus(ServiceControllerStatus.Stopped);
         }
         service.Refresh();
         System.Threading.Thread.Sleep(1000);
         service.Start();
         service.WaitForStatus(ServiceControllerStatus.Running);
     }
     catch (Exception)
     {
     }
 }
示例#30
0
        /// <summary>
        /// Ctor
        /// </summary>
        public MainViewModel()
        {
            svcPath = Path.Combine(Environment.CurrentDirectory, "DS4ToolService.exe");

            el = new EventLog("Application", Environment.MachineName, Constants.SERVICE_NAME);
            el.EntryWritten += new EntryWrittenEventHandler(LogWritten);
            el.EnableRaisingEvents = true;

            si = new ServiceInstaller();
            si.InstallService(svcPath, Constants.SERVICE_NAME);

            DuplexChannelFactory<ISendService> pipeFactory = new DuplexChannelFactory<ISendService>(new PushService(),
                new NetNamedPipeBinding(), new EndpointAddress(Constants.PIPE_ADDRESS + "tester"));
            sp = pipeFactory.CreateChannel();

            sc = new ServiceController(Constants.SERVICE_NAME, Environment.MachineName);
            new ServiceControllerPermission(ServiceControllerPermissionAccess.Browse, Environment.MachineName, Constants.SERVICE_NAME).Assert();
            sc.Refresh();
            sc.WaitForStatus(ServiceControllerStatus.Running);
        }
示例#31
0
 public void StartTest()
 {
     var controler = new ServiceController("toto");
     if (controler.Status == ServiceControllerStatus.Running)
     {
         controler.Stop();
         Thread.Sleep(2000);
     }
     controler.Start();
     var watch = new Stopwatch();
     watch.Start();
     while (watch.ElapsedMilliseconds < 1000)
     {
         controler.Refresh();
         if (controler.Status == ServiceControllerStatus.Running)
             break;
         Thread.Sleep(50);
     }
     Assert.AreEqual(ServiceControllerStatus.Running, controler.Status, "Service should be running");
 }
示例#32
0
        /// <summary>
        /// 启动服务
        /// </summary>
        /// <param name="name">服务名称</param>
        public static bool Start(string name)
        {
            try
            {
                ServiceController sc = new ServiceController(name);
                sc.Refresh();
                int count = 0;
                while (count++ < 60
                    && (sc.Status == ServiceControllerStatus.StopPending
                    || sc.Status == ServiceControllerStatus.ContinuePending
                    || sc.Status == ServiceControllerStatus.PausePending))
                {
                    System.Threading.Thread.Sleep(1000);
                    sc.Refresh();
                }

                if (sc.Status == ServiceControllerStatus.Stopped
                    || sc.Status == ServiceControllerStatus.Paused)
                {
                    sc.Start();
                    for (int i = 0; i < 10; i++)//等待10个30秒(5分钟)
                    {
                        sc.WaitForStatus(ServiceControllerStatus.Running, defaultWait);
                        sc.Refresh();
                        if (sc.Status == ServiceControllerStatus.Running)
                        {
                            return true;
                        }
                        else
                        {
                            Log.LogInfo(name + "正在启动...:" + i);
                        }
                    }
                }
                return sc.Status == ServiceControllerStatus.Running;
            }
            catch
            {
                return false;
            }
        }
示例#33
0
 /// <summary>
 /// 停止服务
 /// </summary>
 /// <param name="serviceName"></param>
 static public bool StopService(string serviceName)
 {
     if (ServiceIsExisted(serviceName))
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
         {
             service.Stop();
             for (int i = 0; i < 60; i++)
             {
                 service.Refresh();
                 System.Threading.Thread.Sleep(1000);
                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
示例#34
0
        public static void ServiceControlRestart()
        {
            System.ServiceProcess.ServiceController Service = GetServiceController();

            System.Diagnostics.EventLog.WriteEntry(UniqueServiceName, " - Service Restart attempt.");
            Console.WriteLine("Service Restart attempt...");
            if (Service == null)
            {
                Console.WriteLine(" - Service Restart failed. Service is not installed.");
            }
            else if (Service.Status == ServiceControllerStatus.Running)
            {
                Service.Stop();
                Console.WriteLine(" - Stop Signal Sent.");

                DateTime Timeout = DateTime.Now.AddSeconds(30);
                while (Timeout > DateTime.Now && Service.Status != ServiceControllerStatus.Stopped)
                {
                    System.Diagnostics.Trace.WriteLine("Sleeping Service Restart Thread.");
                    Thread.Sleep(500);
                    Service.Refresh();
                }

                if (Service.Status == ServiceControllerStatus.Stopped)
                {
                    Service.Start();
                    Console.WriteLine(" - Start Signal Sent.");
                }
                else
                {
                    Console.WriteLine(" - Service Restart failed. Service did not stop. Status:" + Service.Status.ToString());
                    System.Diagnostics.EventLog.WriteEntry(UniqueServiceName, " - Service Restart failed. Service did not stop.");
                }
            }
            else
            {
                Console.WriteLine(" - Service Restart failed. Service not running.");
                System.Diagnostics.EventLog.WriteEntry(UniqueServiceName, " - Service Restart failed. Service not running.");
            }
        }
示例#35
0
        public static string CheckServiceCondition(string servicename)
        {
            ServiceController sc = new ServiceController(servicename);

            sc.Refresh();

            switch (sc.Status)
            {
                case ServiceControllerStatus.Running:
                    return "Running";
                case ServiceControllerStatus.Stopped:
                    return "Stopped";
                case ServiceControllerStatus.Paused:
                    return "Paused";
                case ServiceControllerStatus.StopPending:
                    return "Stopping";
                case ServiceControllerStatus.StartPending:
                    return "Starting";
                default:
                    return "Status Changing";
            }
        }
示例#36
0
		public ActionResult RestartWia()
		{
			var sc = new ServiceController("stisvc");
			switch (sc.Status)
			{
				case ServiceControllerStatus.Running:
					if (sc.CanStop)
					{
						sc.Stop();
						sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(20));
						sc.Refresh();
					}
					break;
				case ServiceControllerStatus.Stopped:
					break;
			}
			Thread.Sleep(1000);
			sc.Start();
			sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(20));

			return new ActionResult { Content = Encoding.UTF8.GetBytes("{\"status\":\"Ok\"}"), ContentType = "text/json" };
		}
		/// <summary>
		/// Stops this instance.
		/// </summary>
		public static void Stop()
		{
			if (ServiceIsInstalled() == false)
			{
				System.Console.WriteLine("Service is not installed");
			}
			else
			{
                var stopController = new ServiceController(ProjectInstaller.ServiceName);

				if (stopController.Status == ServiceControllerStatus.Running)
				{
					stopController.Stop();

					while (stopController.Status != ServiceControllerStatus.Stopped)
					{
						System.Threading.Thread.Sleep(500);
						stopController.Refresh();
					}
				}
			}
		}
        /// <summary>
        /// </summary>
        /// <param name="objz"></param>
        /// <param name="sMessage"></param>
        /// <returns></returns>
        public static bool DeleteService(WmiServiceObj objz, out string sMessage)
        {
            bool bRel;
            var sc = new ServiceController(objz.Name);

            var myPath = new ManagementPath
            {
                Server = Environment.MachineName,
                NamespacePath = @"root\CIMV2",
                RelativePath = string.Format("Win32_Service.Name='{0}'", sc.ServiceName)
            };

            using (var service = new ManagementObject(myPath))
            {
                ManagementBaseObject outParams = service.InvokeMethod("delete", null, null);
                sMessage = outParams["ReturnValue"].ToString();
                bRel = true;
            }

            sc.Refresh();
            return bRel;
        }
示例#39
0
        private static string GetWindowsServiceStatus(string serviceName)
        {
            ServiceController service = null;
            string result;
            try
            {
                service = new ServiceController(serviceName);
                service.Refresh();
                result = service.Status.ToString();
            }
            catch
            {
                result = "Not installed.";
            }
            finally
            {
                if (service != null)
                    ((IDisposable)service).Dispose();
            }

            return result;
        }
        public void Execute_StartCommand_ServiceIsRunning()
        {
            //Ensure the service is stopped
            var service = new ServiceController(SERVICE_NAME);
            var timeout = TimeSpan.FromMilliseconds(5000);
            if (service.Status!=ServiceControllerStatus.Stopped)
                service.Stop();
            service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

            //Mock the commandXml
            var info = Mock.Of<IWindowsServiceStartCommand>(
                start => start.ServiceName==SERVICE_NAME
                    && start.TimeOut==5000
                );

            //Apply the test
            var cmd = WindowsServiceCommand.Start(info);
            cmd.Execute();

            //Assert
            service.Refresh();
            Assert.That(service.Status, Is.EqualTo(ServiceControllerStatus.Running));
        }
示例#41
0
 public static void StopService(string serviceName)
 {
     if (ServiceIsExisted(serviceName))
     {
         System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
         if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
         {
             service.Stop();
             for (int i = 0; i < 60; i++)
             {
                 service.Refresh();
                 System.Threading.Thread.Sleep(1000);
                 if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                 {
                     break;
                 }
                 if (i == 59)
                 {
                     throw new Exception(serviceName);
                 }
             }
         }
     }
 }
示例#42
0
        /// <summary>
        /// 开始服务
        /// </summary>
        /// <param name="serviceName">服务名</param>
        /// <returns></returns>
        public bool StartService(string serviceName)
        {
            bool isOK             = false;
            SmServiceEventArgs es = new SmServiceEventArgs();

            es.ServiceName   = serviceName;
            es.ServiceOption = ServiceOptions.Start;
            if (IsExisted(serviceName))
            {
                //服务存在
                es.CompleteState = ServiceCompleteStateType.Trying;
                onServiceStateChange(es);

                if (GetRunType(serviceName) != ServiceStartType.Disabled)
                {
                    //服务不是禁用的
                    System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                    if (service.Status != ServiceControllerStatus.Running && service.Status != ServiceControllerStatus.StartPending)
                    {
                        //服务不是运行中的
                        try { service.Start(); }
                        catch (Exception ex)
                        {
                            es.Error         = ex;
                            es.CompleteState = ServiceCompleteStateType.Error;
                            onServiceStateChange(es);
                            return(false);
                        }

                        for (int i = 0; i < 30; i++)
                        {
                            service.Refresh();
                            System.Threading.Thread.Sleep(1000);
                            if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                            {
                                es.CompleteState = ServiceCompleteStateType.Successfully;
                                es.Error         = null;
                                onServiceStateChange(es);
                                isOK = true;
                                break;
                            }
                            if (i == 30)
                            {
                                es.Error         = new Exception("服务在控制时间内操作超时");
                                es.CompleteState = ServiceCompleteStateType.Timeout;
                                isOK             = true;
                            }
                        }
                    }
                    else
                    {
                        es.CompleteState = ServiceCompleteStateType.Successfully;
                        es.Error         = new Exception("服务已经运行");
                        onServiceStateChange(es);
                    }
                    service.Close();
                }
                else
                {
                    //服是禁用的
                    es.Error         = new Exception("服务在禁用状态不能操作");
                    es.CompleteState = ServiceCompleteStateType.Disabled;
                    onServiceStateChange(es);
                }
            }
            else
            {
                //服务不存在
                es.Error         = new Exception("指定的服务不存在");
                es.CompleteState = ServiceCompleteStateType.NoExist;
                onServiceStateChange(es);
            }
            return(isOK);
        }
示例#43
0
        public void RestartService(string serviceName, int timeoutMilliseconds)
        {
            var sEvent =
                "Restarting Service, Service Name: " + serviceName + " Time: " + DateTime.Now.ToString();
            var sType = EventLogEntryType.Information;

            var service = new ServiceController(serviceName);
            try
            {
                int millisec1 = Environment.TickCount;
                TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

                if (service.Status == ServiceControllerStatus.Running && service.CanStop)
                {
                    service.Stop();
                    service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

                    sEvent += "\nSuccessfully stop Service, Service Name: " + serviceName + " Time: " +
                              DateTime.Now.ToString();
                }

                int millisec2 = Environment.TickCount;
                timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));

                service.Refresh();
                if (service.Status == ServiceControllerStatus.Stopped)
                {
                    service.Start();
                    service.WaitForStatus(ServiceControllerStatus.Running, timeout);

                    sEvent += "\nSuccessfully start Service, Service Name: " + serviceName + " Time: " +
                              DateTime.Now.ToString();
                }
                if (service.Status == ServiceControllerStatus.Paused)
                {
                    service.Continue();
                    service.WaitForStatus(ServiceControllerStatus.Running, timeout);

                    sEvent += "\nSuccessfully resume Service, Service Name: " + serviceName + " Time: " +
                              DateTime.Now.ToString();
                }
            }
            catch (Exception e)
            {
                sEvent += "\nFailed to restart Service, Service Name: " + serviceName + " Time: " +
                          DateTime.Now.ToString();
                sEvent += "\nFailed to restart Service, due to: " + e.Message +
                          ", from: " + e.Source +
                          ", for more: " + e.HelpLink;

                sType = EventLogEntryType.Error;

            }
            finally
            {
                if (!EventLog.SourceExists(SSource))
                    EventLog.CreateEventSource(SSource, SLog);

                EventLog.WriteEntry(SSource, sEvent, sType);
            }
        }
示例#44
0
        private static void ShutdownWindowsService()
        {
            _logger.Info("Stopping background service");
            var service = new ServiceController(BackgroundService.Name);

            service.Refresh();

            if (service.Status == ServiceControllerStatus.Running)
            {
                service.Stop();
            }
        }
示例#45
0
        /// <summary>
        /// 停止服务
        /// </summary>
        /// <param name="serviceName">服务名</param>
        /// <returns></returns>
        public bool StopService(string serviceName)
        {
            bool isOK             = false;
            SmServiceEventArgs es = new SmServiceEventArgs();

            es.ServiceName   = serviceName;
            es.ServiceOption = ServiceOptions.Stop;

            if (IsExisted(serviceName))
            {
                es.CompleteState = ServiceCompleteStateType.Trying;
                onServiceStateChange(es);

                if (CanStop(serviceName))
                {
                    System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
                    if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
                    {
                        try
                        {
                            service.Stop();

                            for (int i = 0; i < 30; i++)
                            {
                                service.Refresh();
                                System.Threading.Thread.Sleep(1000);
                                if (service.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
                                {
                                    es.CompleteState = ServiceCompleteStateType.Successfully;
                                    es.Error         = null;
                                    isOK             = true;
                                    break;
                                }
                                if (i == 30)
                                {
                                    es.Error         = new Exception("服务在控制时间内操作超时");
                                    es.CompleteState = ServiceCompleteStateType.Timeout;
                                }
                            }
                        }
                        catch
                        {
                            es.Error         = new Exception("服务停止失败");
                            es.CompleteState = ServiceCompleteStateType.UncanStop;
                        }
                    }
                    service.Close();
                }
                else
                {
                    es.Error         = new Exception("服务不能控制为停止");
                    es.CompleteState = ServiceCompleteStateType.UncanStop;
                }
            }
            else
            {
                es.Error         = new Exception("指定的服务不存在");
                es.CompleteState = ServiceCompleteStateType.NoExist;
            }
            onServiceStateChange(es);
            return(isOK);
        }
示例#46
0
        /// <summary>
        /// Executes the task.
        /// </summary>
        /// <returns><see langword="true"/> if the task ran successfully;
        /// otherwise <see langword="false"/>.</returns>
        public override bool Execute()
        {
            bool    result     = true;
            Service controller = null;

            try
            {
                controller = GetServiceController();
                if (controller == null)
                {
                    throw new Exception(string.Format(Properties.Resources.ServiceNotFound,
                                                      ServiceName, MachineName));
                }


                ServiceControllerStatus desiredStatus = DetermineDesiredStatus();
                ServiceControllerStatus currentStatus = controller.Status;

                if (currentStatus == desiredStatus && _action != ServiceActions.Restart)
                {
                    Log.LogMessage(Properties.Resources.ServiceStatus,
                                   DisplayName, MachineName, currentStatus);

                    return(true);
                }

                switch (_action)
                {
                case ServiceActions.Start:
                    result = StartService(controller);
                    break;

                case ServiceActions.Pause:
                    result = PauseService(controller);
                    break;

                case ServiceActions.Continue:
                    result = ContinueService(controller);
                    break;

                case ServiceActions.Stop:
                    result = StopService(controller);
                    break;

                case ServiceActions.Restart:
                    result = RestartService(controller);
                    break;
                }

                // refresh current service status
                controller.Refresh();
                base.Status = controller.Status.ToString();

                Log.LogMessage(Properties.Resources.ServiceStatus,
                               DisplayName, MachineName, Status);
            }
            catch (Exception ex)
            {
                Log.LogErrorFromException(ex);
                return(false);
            }
            finally
            {
                if (controller != null)
                {
                    controller.Dispose();
                }
            }

            return(result);
        }
        private void RemoveService()
        {
            this.Context.LogMessage(System.ServiceProcess.Res.GetString("ServiceRemoving", new object[1]
            {
                (object)this.ServiceName
            }));
            IntPtr num1 = SafeNativeMethods.OpenSCManager((string)null, (string)null, 983103);

            if (num1 == IntPtr.Zero)
            {
                throw new Win32Exception();
            }
            IntPtr num2 = IntPtr.Zero;

            try
            {
                num2 = System.ServiceProcess.NativeMethods.OpenService(num1, this.ServiceName, 65536);
                if (num2 == IntPtr.Zero)
                {
                    throw new Win32Exception();
                }
                System.ServiceProcess.NativeMethods.DeleteService(num2);
            }
            finally
            {
                if (num2 != IntPtr.Zero)
                {
                    SafeNativeMethods.CloseServiceHandle(num2);
                }
                SafeNativeMethods.CloseServiceHandle(num1);
            }
            this.Context.LogMessage(System.ServiceProcess.Res.GetString("ServiceRemoved", new object[1]
            {
                (object)this.ServiceName
            }));
            try
            {
                using (ServiceController serviceController = new ServiceController(this.ServiceName))
                {
                    if (serviceController.Status != ServiceControllerStatus.Stopped)
                    {
                        this.Context.LogMessage(System.ServiceProcess.Res.GetString("TryToStop", new object[1]
                        {
                            (object)this.ServiceName
                        }));
                        serviceController.Stop();
                        int num3 = 10;
                        serviceController.Refresh();
                        while (serviceController.Status != ServiceControllerStatus.Stopped)
                        {
                            if (num3 > 0)
                            {
                                Thread.Sleep(1000);
                                serviceController.Refresh();
                                --num3;
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            Thread.Sleep(5000);
        }
示例#48
0
        public void StopService(string serviceName)
        {
            using (var sc = new ServiceController(serviceName))
            {
                if (sc.Status == ServiceControllerStatus.Stopped)
                {
                    _log.InfoFormat("The {0} service is not running.", serviceName);
                    return;
                }

                if (sc.Status == ServiceControllerStatus.StopPending)
                {
                    _log.InfoFormat("The {0} service is already stopping.", serviceName);
                    return;
                }

                sc.Stop();
                while (sc.Status == ServiceControllerStatus.Running || sc.Status == ServiceControllerStatus.StopPending)
                {
                    Thread.Sleep(500);
                    sc.Refresh();
                }
            }
        }
示例#49
0
 private void mnuStop_Click(object sender, System.EventArgs e)
 {
     ServiceController sc = new ServiceController("CardReaderService");
     try
     {
         if (sc.CanStop)
         {
             if (sc.Status.ToString() != "Stopped")
             {
                 sc.Stop();
                 sc.Refresh();
                 mnuStart.Enabled = true;
                 mnuStop.Enabled = false;
             }
         }
     }
     catch(Exception ex)
     {
         Console.WriteLine(ex);
         MessageBox.Show("Service đọc thẻ không tồn tại", "Thông báo");
     }
 }
示例#50
0
        private static void StopService(string serviceName)
        {
            Logger.Debug("StopService ...");

            ServiceController sc = new ServiceController(serviceName);
            if (sc.CanStop)
            {
                sc.Stop();

                int cnt = 0;
                while (cnt < 30 && sc.Status != ServiceControllerStatus.Stopped)
                {
                    cnt++;
                    Thread.Sleep(1000);
                    sc.Refresh();
                }

                if (sc.Status != ServiceControllerStatus.Stopped)
                    throw new Exception("can't stop service! serviceName=" + serviceName);
            }

            Thread.Sleep(20000);

            Logger.Debug("StopService end");
        }
示例#51
0
        private void do_Job1(object source, ElapsedEventArgs e)
        {
            if (ExistServ(_ServName))
            {
                ServInfoState SerInfoState = new ServInfoState();//服务器状态信息
                if (APPTYPE == "1")
                {
                    ServiceController myController = new System.ServiceProcess.ServiceController(_ServName);
                    myController.Start();
                    //myController.Pause();
                    //myController.Continue();
                    //myController.Stop();
                    myController.Refresh();
                    IsMsgShow = true;
                    ConsoleManage.Write(ErrorLevel.Serious,
                                        "RobotByServMonitor>>do_Job1>>" + _ServName,
                                        _ServName + " start Sourcess!");
                    SerInfoState.ID    = _ID;
                    SerInfoState.TYPE  = _TYPE;
                    SerInfoState.STATE = "1";
                    SerInfoState.NAME  = ServName + "[" + SerInfoState.ID + "]";
                    AlarmEvent(SerInfoState);

                    Common.RemoveServStartList(_ServName);
                }
                else if (APPTYPE == "0")
                {
                    ProcessStartInfo info = new ProcessStartInfo();
                    info.FileName = _ServPath;    // 要启动的程序
                    ConsoleManage.Write(ErrorLevel.Serious,
                                        "RobotByServMonitor>>do_Job1>>" + _ServPath,
                                        " Test Show!");
                    if (CommClass.OStype != 0)
                    {
                        info.Arguments = CommClass.OStype.ToString();//传递给程序的参数
                    }
                    else
                    {
                        //info.UserName = "******";
                        //info.Arguments = "&";//传递给程序的参数
                    }
                    info.WindowStyle = ProcessWindowStyle.Hidden;   //隐藏窗口
                    //info.UseShellExecute = false;


                    try
                    {
                        Process pro = Process.Start(info); //启动程序
                        IsMsgShow = true;
                        ConsoleManage.Write(ErrorLevel.Serious,
                                            "RobotByServMonitor>>do_Job1>>" + _ServName,
                                            _ServName + " start Sourcess!");
                        /*ServInfoState*/
                        SerInfoState.ID    = _ID;
                        SerInfoState.TYPE  = _TYPE;
                        SerInfoState.STATE = "1";
                        SerInfoState.NAME  = ServName + "[" + SerInfoState.ID + "]";
                        AlarmEvent(SerInfoState);
                        Common.RemoveServStartList(_ServName);
                    }
                    catch (Exception ex)
                    {
                        if (IsMsgShow)
                        {
                            ConsoleManage.Write(ErrorLevel.Serious,
                                                "RobotByServMonitor>>do_Job1>>" + _ServName,
                                                _ServName + "  start faile!" + ex.ToString());
                            //Console.WriteLine(ex.ToString());
                        }
                        IsMsgShow = false;

                        //Stop();
                        return;
                    }
                }
            }
        }
        public static bool ServiceControl(string svcName)
        {
            ServiceController sc = new ServiceController(svcName);

            if ((sc.Status.Equals(ServiceControllerStatus.Stopped)) ||
                 (sc.Status.Equals(ServiceControllerStatus.StopPending)))
            {
                // Start the service if the current status is stopped.
                sc.Start();

                while (sc.Status == ServiceControllerStatus.Stopped)
                {
                    Thread.Sleep(1000);
                    sc.Refresh();
                }

            }
            else
            {
                // Stop the service if its status is not set to "Stopped".
                sc.Stop();
                while (sc.Status != ServiceControllerStatus.Stopped)
                {
                    Thread.Sleep(1000);
                    sc.Refresh();
                }

            }

            // Refresh and display the current service status.

            sc.Refresh();

            return true;
        }
        /// <include file='doc\ServiceInstaller.uex' path='docs/doc[@for="ServiceInstaller.RemoveService"]/*' />
        /// <devdoc>
        /// Called by Rollback and Uninstall to remove the service.
        /// </devdoc>
        private void RemoveService()
        {
            //
            // SCUM deletes a service when the Service is stopped and there is no open handle to the Service.
            // Service will be deleted asynchrously, so it takes a while for the deletion to be complete.
            // The recoommended way to delete a Service is:
            // (a)  DeleteService/closehandle,
            // (b) Stop service & wait until it is stopped & close handle
            // (c)  Wait for 5-10 secs for the async deletion to go through.
            //
            Context.LogMessage(Res.GetString(Res.ServiceRemoving, ServiceName));
            IntPtr serviceManagerHandle = SafeNativeMethods.OpenSCManager(null, null, NativeMethods.SC_MANAGER_ALL);

            if (serviceManagerHandle == IntPtr.Zero)
            {
                throw new Win32Exception();
            }

            IntPtr serviceHandle = IntPtr.Zero;

            try
            {
                serviceHandle = NativeMethods.OpenService(serviceManagerHandle,
                                                          ServiceName, NativeMethods.STANDARD_RIGHTS_DELETE);

                if (serviceHandle == IntPtr.Zero)
                {
                    throw new Win32Exception();
                }

                NativeMethods.DeleteService(serviceHandle);
            }
            finally
            {
                if (serviceHandle != IntPtr.Zero)
                {
                    SafeNativeMethods.CloseServiceHandle(serviceHandle);
                }

                SafeNativeMethods.CloseServiceHandle(serviceManagerHandle);
            }
            Context.LogMessage(Res.GetString(Res.ServiceRemoved, ServiceName));

            // Stop the service
            try
            {
                using (ServiceController svc = new ServiceController(ServiceName))
                {
                    if (svc.Status != ServiceControllerStatus.Stopped)
                    {
                        Context.LogMessage(Res.GetString(Res.TryToStop, ServiceName));
                        svc.Stop();
                        int timeout = 10;
                        svc.Refresh();
                        while (svc.Status != ServiceControllerStatus.Stopped && timeout > 0)
                        {
                            Thread.Sleep(1000);
                            svc.Refresh();
                            timeout--;
                        }
                    }
                }
            }
            catch
            {
            }

            Thread.Sleep(5000);
        }