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++; } } } } }
/// <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; } }
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); } }
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); }
/// <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); } } } } }
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; } } }
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); } }
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; }
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); } }
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); }
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); }
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); }
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; }
public static bool IsServiceRunning(string serviceName) { ServiceController service = new ServiceController(serviceName); service.Refresh(); return service.Status == ServiceControllerStatus.Running; }
public static bool IsServiceRunningRemotely(string serviceName, string host) { ServiceController service = new ServiceController(serviceName, host); service.Refresh(); return service.Status == ServiceControllerStatus.Running; }
// 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(); }
// 停止服务 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(); } } }
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; }
private void RefreshService() { if (_service != null) { try { _service.Refresh(); } catch (Exception) { } } }
/// <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; } }
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); }
/// <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; }
/// <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) { } }
/// <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); }
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"); }
/// <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; } }
/// <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); }
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."); } }
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"; } }
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; }
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)); }
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); } } } } }
/// <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); }
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); } }
private static void ShutdownWindowsService() { _logger.Info("Stopping background service"); var service = new ServiceController(BackgroundService.Name); service.Refresh(); if (service.Status == ServiceControllerStatus.Running) { service.Stop(); } }
/// <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); }
/// <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); }
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(); } } }
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"); } }
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"); }
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); }