用C#写个邮件监控服务(一)

监控服务,首先当然是个服务了。至于什么是windows服务,这里就不多说了。正题

1. 创建服务项目

打开VS编程环境,在C#中创建windows服务项目

2.创建后属性中更改名称和服务名。

3.增加一个定时器 (这里的timer控件一定要是 System.Timers命名空间下的)

4. 增加安装

在设计页面点右键增加安装,之后你会看到以下的样子,并分别进行设定。

注意设定你的显示信息和服务名称,不是控件名。

同时也要设定StartType,我设为自动,这样一开机就会自动启用。

注意使用LocalSystem账号的设定

5.生成安装

选择Release的方式进行Build.

然后到BIN目录的Release文件夹copy相应的文件到一个文件夹。(如 : C:\myService\)

安装:

在此文件夹下编写install.bat

内容如下:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe   C:\myService\MonitorEmailService.exe
net start MonitorEmailService
pause

再写一个Uninstall.bat用于卸载。

net stop MonitorEmailService
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /uninstall C:\myService\MonitorEmailService.exe
pause

然后以管理员的身份运行install.bat。就会在服务中找到该服务了。

至此一个服务安装完成。

这里有几点需要注意的。

1. timer控件要是System.timers命名空间下的。

2. timer的事件不要直接在设计介面设定。 不然会出现读取的时间间隔配置会不起作用。最好写在OnStart()里

 protected override void OnStart(string[] args)
        {
            this.timer1 = new Timer();
            const string path = @"C:\myService\MonitorEmail.exe.config";
            string s = "";

            if (File.Exists(path))
            {
                s = this.GetSettings(path);
                if (s != "")
                {
                    int num = int.Parse(s) * 0x3e8;
                    this.timer1.Interval = (double)num;
                }
                else
                {
                    this.timer1.Interval = 600000.0;
                }
            }
            else
            {
                this.timer1.Interval = 600000.0;
            }
            // 不能直接在设计页面增加事件,否则按默认的时间间隔,如果没有显示设置间隔,则时间为100ms
            this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
            this.timer1.Enabled = true;

        }

3. 要添加安装程序产生ProjectInstaller类。

4. 安装服务时注意批处理中的framework版本要与生成的版本一致。

到这里为止,好像没有写任何关于监控邮件的意思。其实,最主要的代码是放在另一个exe程序,这里面只是起了调用的作用。

 public void timer1_Elapsed(object i, ElapsedEventArgs handler)
        {
            try
            {
                ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\myService\MonitorEmail.exe") { WindowStyle = ProcessWindowStyle.Hidden };
                Process.Start(startInfo);
            }
            catch (Exception exception)
            {
                this.WriteLog(exception.ToString());
            }
        }

如想了解。MonitorEmail.exe的具体实现,请留意下一后续的文章,当然,也看有没有读者有这方面的需求了。

时间: 2024-07-30 10:10:09

用C#写个邮件监控服务(一)的相关文章

一个用pyton写的监控服务端进程的软件hcm

使用udp实现,简单,方便,不用三次握手 1. 所有部署服务器进程的机器有一个代理进程hagent,用来监听hcm console中发送过来的命令 2.hcm需要提供以下命令 start :普通方式启动进程 stop :停止进程 reload :重新载入配置文件 resume :恢复方式启动进程(共享内存) tail:查看日志的末尾 deploy:直接更新服务器文件 rmshm:删除共享内存 autoresume:开启和关闭某个进程的自动拉起功能 3. hcm 监控所有的进程,发现进程不在时,以

nagios监控服务

   nagios监控系统 1: ngios工作原理 1.Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态.安装完成后,在nagios主目录下的/libe

Zabbix 监控服务

一.搭建Zabbix监控服务器1.部署服务运行环境(LAMP)rpm -q httpd mysql-server phprpm -q mysql php-mysqlservice httpd start ;chkconfig httpd onservice mysqld start ;chkconfig mysqld on [[email protected] ~]# vim /var/www/html/db.php<?php$db=mysql_connect("localhost&quo

【shell脚本】监控服务进程状态

今天公司LD让写个小脚本,监控一个进程是否存在,存在怎退出脚本,如果不存在就发一封邮件给指定邮箱,我是通过守护进程的运行状态来判断该服务的连接情况,并将测试结果显示到标准输出上. 为了方便监控,使用crontab使其每两小时执行一次. 代码: #!/bin/bash # #提示用户输入一个指定守护进程名称,并将其赋予变量n_proc #echo "Please input a name of process #read n_proc # #搜索变量n_proc中指定的守护进程的进程号,并赋值给变

使用Azure Monitor监控服务运行状态

在多数的运维工作中,我们除了要关注系统资源的使用率也要关注应用服务的健康状况,从而确保系统可以持续的对外提供服务.那么我们如何使用Azure Monitor来监控服务的健康状况呢.监视Windows和Linux服务的最佳选择之一是利用Azure自动化中的变更跟踪解决方案.使用变更跟踪解决方案,可以跟踪Windows/Linux系统上的更改.在Windows它支持跟踪文件.注册表.服务和已安装软件的更改:在linux中它支持跟踪文件,软件和守护进程的更改.默认情况下,变更跟踪解决方案会每隔30分钟

写一个python的服务监控程序

写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python站点下载源码.解压到Redhat上.然后执行以下的命令: # ./configure --prefix=/usr/local/python27 # make # make install 这样安装之后默认不会启用Python2.7.须要使用/usr/local/python27/bin/python2.7调用新版本号的python. 而

U-Mail邮件中继服务让邮件像情人零距离接触

一年一度的情人节到了,隔壁的小王同学一直倾慕班花丽丽多日,在难以遏制的情感冲动下,在经过反复思想斗争后,他终于决定迈出一步,买了一束花夹杂一封情书,踟蹰在丽丽家楼下,准备伺机送给心上人.但是不妨让我们来设想一下,小王同学估计得迈过许多道坎: 1.出门之际,自己父母会阻拦询问: 2.由于自己对丽丽不了解,花的选择和包装上不对丽丽胃口,没有按通用.流行的时髦标准来设置: 3.丽丽父母不准丽丽早恋,尤其是丽丽父母将那些纹身带耳环穿着打扮流里流气的人列为不受欢迎的"黑名单": 4.最后,很有可

zabbix邮件监控配置

参考博客:http://blog.chinaunix.net/uid/26118446.html  小钻风                  http://www.iyunv.com/thread-61736-1-1.html 运维网论坛帖子 搭建好zabbix监控服务系统后,就是增加邮件报警功能,还是费了点时间,因为先是能发送到163邮箱,不能发送到QQ邮箱,后又是以附件的形式发送邮件,而不是直接显示其报警内容: 用163做的测试: 使用外部邮箱账号发送报警邮件设置 一.关闭sendmail或

邮件发送服务AWS SES,Mailgun以及SendCloud(转)

原文:http://www.l4zy.com/posts/aws_ses-mailgun-sendcloud.html 电子邮件这一已经诞生很多年的互联网基础服务并没有随着时间的推移而慢慢消亡,实际上它的生命力比大多数人预料的要强得多,至少到目前为之它还是互联网不可缺少的一部分.因此邮件系统就成了大多数网站重要组件,我在开发SegmentFault邮件通知系统的时候有幸测试了目前比较常见的三大邮件发送服务. 这里可以大致介绍下这三大服务的特点 大致介绍 AWS SES 我们最早使用的就是它,价格