Windows的系统服务 - 炫Q香蕉派

Windows的系统服务

今天鬼哥在二叔群提到系统服务,主要想实现不登录就运行一些脚本的目的吧,以前做过类似的小程序,不过后来忘掉了,这次一定要记录下来,查询了一些相关资料,.Net提供了相关模板。
首先建立一个工程,我用的是VS2010。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.IO;

namespace TestService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        Timer timer;
        int counter;

        protected override void OnStart(string[] args)
        {
            EventLog.WriteEntry("MikuQ服务启动");
            counter = 0;
            timer = new Timer();
            timer.Interval = 10000;
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = true;
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            counter++;
            StreamWriter sr = new StreamWriter(@"D:\mikuq.txt", true);
            sr.WriteLine(counter.ToString());
            sr.Close();
        }

        protected override void OnStop()
        {
            EventLog.WriteEntry("MikuQ服务停止");
            timer.Enabled = false;
        }
    }
}

在Service1.cs设计页面,点击右键添加安装程序
在ProjectInstaller.cs设计页面中选择serviceInstaller1
在属性中设置

Description(系统服务的描述):MikuQ's test Service
DisplayName (系统服务中显示的名称):MikuQ(mikuq.com) Service
ServiceName(系统事件查看器里的应用程序事件中来源名称):MikuService

serviceProcessInstaller1属性设置Account下拉设置成LocalSystem,应该是最高权限了
在C:\Windows\Microsoft.NET\Framework\v2.0.50727找到InstallUtil.exe,复制到debug文件夹
Ctrl+Shift+B编译出TestService.exe,然后运行InstallUtil TestService.exe安装服务,安装服务需要管理员权限
如果需要卸载服务InstallUtil -u TestService.exe

参考资料:《C# 创建系统服务并定时执行

标签: none

添加新评论