Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        private string GetFlag(WinServiceStatus _ws)
        {
            switch (_ws.Flag)
            {
            case 1:
                return("1");

            case 3:
                return("3");

            default:
                return("0");
            }
        }
Esempio n. 6
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);
        }
Esempio n. 7
0
        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);
        }