/// <summary> /// 取Win服务的状态,其中Flag: 0:未知 1:正常运行 3:停止或错误或其它或未安装此服务 /// </summary> /// <param name="_wss"></param> private void CheckWinServiceStatus(WinServiceStatus _wss) { ServiceController _sc = new ServiceController(_wss.ServiceName); try { ServiceControllerStatus st = _sc.Status; _wss.Status = st.ToString(); switch (st) { case ServiceControllerStatus.Running: _wss.Flag = 1; break; case ServiceControllerStatus.Stopped: _wss.Flag = 3; break; default: _wss.Flag = 3; break; } } catch (Exception ex) { _wss.Status = ex.Message; _wss.Flag = 3; } }
public static void StartDataPushService(WinServiceStatus status) { var processStartInfo = new ProcessStartInfo { FileName = @"cmd.exe", UseShellExecute = true, Verb = "runas", CreateNoWindow = false }; var serviceBinPath = Path.Combine(Directory.GetCurrentDirectory(), serviceExecName); switch (status) { case WinServiceStatus.NotInstalled: processStartInfo.ArgumentList.Add($"/C sc create {serviceName} binpath={serviceBinPath} start=auto " + $"& sc failure {serviceName} reset= 120 actions= restart/120000/restart/120000//" + $"& sc start {serviceName}"); break; case WinServiceStatus.Stopped: processStartInfo.ArgumentList.Add($"/C sc start {serviceName}"); break; case WinServiceStatus.Running: processStartInfo.ArgumentList.Add($"/C sc stop {serviceName} & sc start {serviceName}"); break; case WinServiceStatus.Error: throw new ArgumentException("Invalid Query Status Detected."); } Process.Start(processStartInfo); }
public static void StopDataPushService(WinServiceStatus status) { var processStartInfo = new ProcessStartInfo { FileName = @"cmd.exe", UseShellExecute = true, Verb = "runas", CreateNoWindow = false }; switch (status) { case WinServiceStatus.NotInstalled: case WinServiceStatus.Stopped: return; case WinServiceStatus.Running: processStartInfo.ArgumentList.Add($"/C sc stop {serviceName}"); break; case WinServiceStatus.Error: throw new ArgumentException("Invalid Query Status Detected."); } Process.Start(processStartInfo); }
public void DoCommand(string CommandName, SystemStateItem StateItem) { switch (CommandName) { case "WinService_Add": //添加服务 Dialog_AddWinServiceCheck _f = new Dialog_AddWinServiceCheck(); if (_f.ShowDialog() == DialogResult.OK) { WinServiceStatus _wss = new WinServiceStatus(); _wss.ServiceName = _f.WinSvcName; _wss.Description = _f.WinSvcDes; string _ret = SinoCommandExcute.Do(SessionCache.CurrentTokenString, "ExcuteNodeCommand.WatchSystemServerPlugin.WinService_Add", StateItem.SystemName, _wss); if (_ret == "TRUE") { //CurrentGridView.DeleteRow(CurrentGridView.FocusedRowHandle); MessageBox.Show(string.Format("添加服务[{0}]成功,但删除结果需要过几分钟后才能生效,请耐心等待一下。", _wss.ServiceName), "系统提示"); } } break; case "WinService_Del": //删除服务 if (CurrentGridView != null && CurrentGridView.FocusedRowHandle >= 0) { dynamic _ws = CurrentGridView.GetRow(CurrentGridView.FocusedRowHandle) as ExpandoObject; if (_ws != null) { if (MessageBox.Show(string.Format("是否要移除监控Windows服务[{0}]({1})?", _ws.Name, _ws.Description), "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { string _ret = SinoCommandExcute.Do(SessionCache.CurrentTokenString, "ExcuteNodeCommand.WatchSystemServerPlugin.WinService_Del", StateItem.SystemName, _ws.Name); if (_ret == "TRUE") { //CurrentGridView.DeleteRow(CurrentGridView.FocusedRowHandle); MessageBox.Show(string.Format("删除服务[{0}]成功,但删除结果需要过几分钟后才能生效,请耐心等待一下。", _ws.Name), "系统提示"); } } } } break; case "WinService_Status": SaveFileDialog _dialog = new SaveFileDialog(); _dialog.Filter = "XML格式(*.xml)|*.xml"; _dialog.InitialDirectory = Utils.ExeDir; _dialog.FileName = "ExportWinServiceStatus.xml"; if (_dialog.ShowDialog() == DialogResult.OK) { string _s = SinoSZJS.Base.Misc.DataConvert.Serializer(typeof(List <WinServiceStatus>), this._status); File.WriteAllText(_dialog.FileName, _s); } break; default: MessageBox.Show(CommandName, "提示"); break; } }
private string GetFlag(WinServiceStatus _ws) { switch (_ws.Flag) { case 1: return("1"); case 3: return("3"); default: return("0"); } }
private List <WinServiceStatus> CheckWinService() { List <WinServiceStatus> _list = new List <WinServiceStatus>(); CheckWinServiceConfigSection WinServiceList = (CheckWinServiceConfigSection)ConfigurationManager.GetSection("CheckWinServiceList"); foreach (CheckWinServiceConfigurationElement _el in WinServiceList.PluginCollection) { WinServiceStatus _wss = new WinServiceStatus(); _wss.ServiceName = _el.Name; _wss.Description = _el.Description; CheckWinServiceStatus(_wss); _list.Add(_wss); } return(_list); }
private byte[] DoWinService_Add(byte[] ParameterData) { WinServiceStatus _wss = CommandCommon.GetParamDataObj <WinServiceStatus>(ParameterData); Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); CheckWinServiceConfigSection CurrentSeviceList = (CheckWinServiceConfigSection)cfa.GetSection("CheckWinServiceList"); CheckWinServiceConfigurationElement _new = new CheckWinServiceConfigurationElement(); _new.Name = _wss.ServiceName; _new.Description = _wss.Description; CurrentSeviceList.PluginCollection.Add(_new); cfa.Save(); ConfigurationManager.RefreshSection("CheckWinServiceList"); string _ret = "TRUE"; TaskList.RunTaskImmediately("SystemSelfCheck"); byte[] _data = Encoding.Unicode.GetBytes(_ret); return(_data); }