前言:公司做的一款客户端程序,没有加入看门狗监控程序,客户端被用户关闭后不会自动启动,因此用 C#写了一个看门程序。
环境:NETFramework
主要功能:(暂时仅需这些功能)
1、MonitorServer 监控程序名称;
2、StartServer 需要启动的程序名称;
3、TimeNum 多久检测一次;
4、Display 是否显示程序窗口;
环境:NETFramework
主要功能:(暂时仅需这些功能)
1、MonitorServer 监控程序名称;
2、StartServer 需要启动的程序名称;
3、TimeNum 多久检测一次;
4、Display 是否显示程序窗口;
程序源码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Diagnostics; using System.Threading; using System.Configuration; namespace watchdog { public partial class logs : Form { public logs() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string test_dis = ConfigurationManager.AppSettings["Display"];//是否显示窗口 if (test_dis == "0") { this.Hide();//隐藏窗口 this.ShowInTaskbar = false; this.WindowState = FormWindowState.Minimized; } string MonitorServer = ConfigurationManager.AppSettings["MonitorServer"]; this.softname.Text = MonitorServer; Thread th = new Thread(new ThreadStart(ThreadMethod)); //创建线程 th.Start(); //启动线程 } void ThreadMethod() { string MonitorServer = ConfigurationManager.AppSettings["MonitorServer"];//获取需要监控的进程名称 string StartServer = ConfigurationManager.AppSettings["StartServer"];//获取需要启动的程序名称 int TimeNum = int.Parse(ConfigurationManager.AppSettings["TimeNum"]);//休眠时间 while (true) { if (Process.GetProcessesByName(MonitorServer).ToList().Count == 0)//获取进程列表是否有监控的进程 { try { Process.Start(StartServer);//启动程序 } catch(Exception ex) { MessageBox.Show(ex.Message);//抛出异常信息 } } Thread.Sleep(TimeNum);//休眠 } } } }
config 配置文件:
点击跳转到百度云盘下载, 提取码: dtqi
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> <appSettings> <add key="MonitorServer" value="SmartSentry"></add> <add key="StartServer" value="SmartSentry.exe"></add> <add key="TimeNum" value="3000"></add> <add key="Display" value="0"></add> </appSettings> </configuration>