C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行

这篇具有很好参考价值的文章主要介绍了C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、打开Visual Studio,创建项目->Windows 服务(.NET Framework)

二、点击Service.cs 点击切换到代码视图

static Timer Timer;
private Thread monitorThread;
private static string logFilePath;
private static Process winFormsProcess; 
public Service1()
        {
            InitializeComponent();
            logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log.txt");
        }
        protected override void OnStart(string[] args)
        {
            // 启动监控线程
            monitorThread = new Thread(MonitorApplication);
            monitorThread.Start();
            // 设置定时器,每隔10秒检查一次目标应用程序是否退出
            Timer = new Timer(p => MonitorAndRestart(), null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
            //启动目标程序
            StartTargetApplication();
        }
        static void MonitorAndRestart()
        {
            var targetProcessName = "FR"; // 替换为你的目标应用程序的进程名称
            var processes = Process.GetProcessesByName(targetProcessName);

            if (processes.Length == 0)
            {
                Log("目标应用程序已退出,正在重新启动...");
                StartTargetApplication(); // 重新目标应用程序
            }
        }
        static void StartTargetApplication()
        {
            var targetProcessPath = @"D:\Debug\FR.exe"; // 替换为你的目标应用程序的路径
            var targetProcessStartInfo = new ProcessStartInfo(targetProcessPath)
            {
                CreateNoWindow = false,
                UseShellExecute = true
            };
            winFormsProcess = Process.Start(targetProcessStartInfo);
            if (winFormsProcess != null)
            {
                Log("目标程序已启动");
            }
            else
            {
                Log("目标程序启动失败");
            }
        }
        static void MonitorApplication()
        {
            var targetProcessName = "Service1"; // 替换为你的服务名称

            while (true)
            {
                var processes = Process.GetProcessesByName(targetProcessName);
                if (processes.Length == 0)
                {
                    break;
                }
                Thread.Sleep(10000); // 每隔10秒检查一次
            }
        }
        //日志输入 文本文档
       static void Log(string message) {
            Directory.CreateDirectory(Path.GetDirectoryName(logFilePath));
            if (!File.Exists(logFilePath)) {
                File.Create(logFilePath).Close();
            }
            using (var writer = new StreamWriter(logFilePath, true)) {
                writer.WriteLine($"{DateTime.Now.ToString()}{message}");
            }
        }
        protected override void OnStop()
        {
            Timer.Dispose();
            monitorThread.Join();
            Log("服务已停止,退出检控...");
            // 关闭 WinForms 项目
            if (winFormsProcess != null && !winFormsProcess.HasExited)
            {
                winFormsProcess.CloseMainWindow();
                if (!winFormsProcess.WaitForExit(5000))
                {
                    winFormsProcess.Kill();
                }
            }
        }

三、点击Service.cs 在Service.cs设计视图中右击添加安装程序

四、会出现一个serviceProcessInstaller1和serviceInstaller1两个组件,serviceInstaller1属性中的ServiceName是服务名可以修改成自己的,把serviceProcessInstaller1属性中的Account改为LocalSystem

五、重新生成一下项目

六、在项目的bin\Debug文件夹下添加文本文档名为InstallService然后写上以下代码,替换为你的服务的实际路径,然后把文本文档的后缀名改成bat(这是安装服务,要以管理员启动),这样就可以在服务中看见你自己写的服务了

installutil C:\Users\34349\Desktop\Anomalymonitoring\bin\Debug\Anomalymonitoring.exe

pause

七、在项目的bin\Debug文件夹下添加文本文档名为Uninstall然后写上以下代码,替换为你的服务的实际路径,然后把文本文档的后缀名改成bat(这是卸载服务,要以管理员启动)

installutil C:\Users\34349\Desktop\Anomalymonitoring\bin\Debug\Anomalymonitoring.exe /u
pause

注意:这个服务不能启动winfrom这种可视化项目文章来源地址https://www.toymoban.com/news/detail-787047.html

到了这里,关于C#写windows服务,实现把检测软件崩溃工具写成服务 自动运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [软件工具]opencv-svm快速训练助手教程解决opencv C++ SVM模型训练与分类实现任务支持C# python调用

    opencv中已经提供了svm算法可以对图像实现多分类,使用svm算法对图像分类的任务多用于场景简单且对时间有要求的场景,因为opencv的svm训练一般只需要很短时间就可以完成训练任务。但是目前网上没有一个工具很好解决训练问题,大部分需要自己编程去实现训练任务,这个对

    2024年02月06日
    浏览(58)
  • LMD-恶意软件检测工具

    LMD是Linux恶意软件扫描器,以GNU GLPv2许可发布。 官方地址:https://www.rfxn.com 下载软件包命令: wget https://www.rfxn.com/downloads/maldetect-current.tar.gz tar命令解包后进入其目录。 安装命令如下: ./install.sh 扫描命令如下: maldet --scan-all  /etc

    2024年02月10日
    浏览(48)
  • Windows Edge 下载软件被检测到病毒无法下载

    最顶上是我关闭了才下载成功, 我们会发现,你的软件被检测到病毒。不管点多少次重试在下载进度条到百分之百的时候,都会停止几秒然后无法下载,纯纯的浪费流量。 我们要运行软件被下载到本地,就需要去Windows安全中心,关闭“病毒和威胁防护”。 不过,你们不需要

    2024年02月11日
    浏览(46)
  • Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启

    官方Github;官方下载地址。没有Git加速的话很难下载,分享一下发布日期为2023.01.29的当前最新稳定版 v2.12.0 网盘连接。 包含文件: WinSW-x64.exe sample-minimal.xml sample-allOptions.xml 链接:https://pan.baidu.com/s/1sN3hL5HvFzzNwuz8npaQNw 提取码:vsvg 为什么要注册为服务 : 服务器重启后服务可

    2024年02月09日
    浏览(53)
  • 软件国际化的问题 C#得到当前windows系统的语言版本

    本以为跟国际化无缘,不在软件的考虑范围内,没想到偶尔一个项目还是绕不开,小记一下 System.Globalization.CultureInfo.InstalledUICulture.Name       这是获得英文的区域码,也就是zh-cn的这种,需要找区域码字典对照。 System.Globalization.CultureInfo.InstalledUICulture.NativeName     区域码对

    2024年02月08日
    浏览(45)
  • 【深度学习环境】Windows10系统+AutoDL算力平台|使用MobaXterm终端工具实现SSH远程连接服务器|实现PyCharm与服务器远程连接|远程连接(详细版)

    一般情况下,我们的本地文件项目直接使用本机的GPU/CPU在编译器上编译调试。但是由于深度学习中神经网络模型庞大,在计算时常常会出现爆显存的问题,较小的显存不能满足计算需求。因此通常使用一台有着“大显存”的服务器来代替本机“小显存”以完成运算,我们期待

    2024年02月05日
    浏览(69)
  • 软件分享:Cpu-Z电脑CPU检测工具介绍(附下载)

    目录 一、软件介绍 二、功能介绍 三、使用方法 1、通过 CPU-Z 查看 CPU 信息 2、缓存信息 3、主板信息 4、内存信息 5、内存规格信息(SPD) CPU是计算机中负责读取指令,对指令译码,并执行指令的核心部件。CPU自产生以来,在逻辑结构,运行效率以及功能外延上取得了巨大发

    2024年02月11日
    浏览(52)
  • 微软官方发布的C#开源、免费、实用的Windows工具箱

    今天分享一款由微软官方发布的C#开源、免费、实用的Windows工具箱(帮助用户调整和简化Windows系统的体验,从而提高工作效率):Microsoft PowerToys。 Microsoft PowerToys 是使用 C++ 和 C# 编程语言开发的。它利用了 Windows 操作系统的底层功能和 API,以及 Microsoft 开发的一些开源库和

    2024年02月04日
    浏览(85)
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测

    【官方框架地址】 https://github.com/ViewFaceCore/ViewFaceCore 【算法介绍】 SeetaFace6是由中国科技公司自主研发的一款人脸识别技术,它基于深度学习算法,能够快速、准确地识别出人脸,并且支持多种应用场景,如门禁系统、移动支付、安全监控等。SeetaFace6的识别准确率高达99%以上

    2024年01月21日
    浏览(54)
  • 【软件工具】之下载微软官方正版 windows 系统

    1、进入微软官网 微软官网地址:https://www.microsoft.com/zh-cn/,点击导航栏上的 Windows 按钮: 2、进入WINDOWS支持页面 进入 windows 页面后,拉倒页面的最底下,点击 WINDOWS支持 : 3、进入安装和更新页面 进入 【WINDOWS支持】 页面后面,点击 安装和更新 按钮: 4、进入windows镜像下载

    2024年02月07日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包