Windows的服务功能初探介绍

在Windows中,对于一些不需要显示图形界面的应用程序,我们可以把它做成Windows服务,让它在后台运行,例如一些文件监视服务等。一台电脑中的Windows服务可以在“计算机-管理-服务应用程序-服务”中看到,如图:

在这里,我们可以启动或停止一个服务。
创建服务:
下面我们来创建一个文件监视功能的Windows服务。
用VS新建一个项目,模版选择“Windows服务”,在服务代码中会有两个方法:OnStart与OnStop,分别是服务的启动时的执行代码与服务停止时的执行代码。
public partial class WatchService : ServiceBase
    {
        public WatchService()
        {
            InitializeComponent();
        }
        FileSystemWatcher watcher;
        /// <summary>
        /// 服务开始时执行代码
        /// </summary>
        /// <param name="args"></param>
        protected override void OnStart(string[] args)
        {   
            WriteLog("服务开始");
            string path = @"D:/text";
            watcher = new FileSystemWatcher(path);
            // 监视新增文件
            watcher.NotifyFilter = NotifyFilters.FileName;
            //同时监视子目录
            watcher.IncludeSubdirectories = true;
            watcher.Created += new FileSystemEventHandler(watcher_Changed);
            watcher.EnableRaisingEvents = true;
        }
        /// <summary>
        /// 服务停止时执行代码
        /// </summary>
        protected override void OnStop()
        {
            WriteLog("服务停止");
        }
        private void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            try
            {
                WriteLog(e.Name + " " + e.ChangeType);
            }
            catch (Exception ex)
            {
                WriteLog(ex.ToString());
            }
        }   
        /// <summary>
        /// 写日志的方法
        /// </summary>
        /// <param name="msg"></param>
        private void WriteLog(string msg)
        {
            string path = @"D:/log.txt";
            using (StreamWriter sw = new StreamWriter(path, true))
            {
                sw.WriteLine(DateTime.Now.ToString() + " " + msg);
            }
        }
    }
 发布服务:
转到服务的界面窗体,点击右键,选择添加安装程序,会出现一个ProjectInstaller.cs。在其界面窗体中,选择serviceInstaller1,右键属性,可以设置服务启动方式,服务名称(服务名称不能与其它Windows服务名称重名),服务描述,服务显示名称等,如图:

  另一个serviceProcessInstaller1的属性可以设置服务的运行账户,如图:    

  完成这些设置后,重新生成服务,打开VS2010命令行工具,以管理员身份运行,输入命令InstallUtil.exe+服务程序地址,如InstallUtil.exe “D:/Service/FileWatchDemo.exe” 提示安装完成后,就可以在服务管理中看到刚刚安装的服务了。删除服务: InstallUtil.exe /u +"服务地址" InstallUtil.exe /u "D:/Service/FileWatchDemo.exe"   或 SC delete +服务名称,如 sc delete FileWatchService     作者 Gyoung

IT时代网(关注微信公众号ITtime2000,定时推送,互动有福利惊喜)所有原创文章版权所有,未经授权,转载必究。
创客100创投基金成立于2015年,直通硅谷,专注于TMT领域早期项目投资。LP均来自政府、互联网IT、传媒知名企业和个人。创客100创投基金对IT、通信、互联网、IP等有着自己独特眼光和丰富的资源。决策快、投资快是创客100基金最显著的特点。

相关文章
中芯国际联手国家队斥500亿投建12吋晶圆制造 什么信号?
中芯国际等被美列黑名单 外交部:坚决反对美方无端打压中国企业
中芯国际遭“断粮”背后:芯片产业链加速国产化
被美国列入“黑名单”?中芯国际:未收到此类官方消息

精彩评论