Windows服务程序图文教程

本文详细介绍了如何使用Visual C#搭建Windows服务程序,并通过安装程序实现服务的自动安装和启动。包括新建服务项目、编写服务代码、添加安装程序、编译、安装与卸载服务的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows服务程序图文教程



1、新建服务项目


在Visual C# 下的选择WindowsService,输入项目名称,点击【OK】




将类名修改为WriteLog.cs



2、编写服务代码


右键点击WriteLog.cs,选择View Code(查看代码)



服务代码中需要重写两个方法:OnStart、OnStop,其中OnStart方法供服务启动时调用,OnStop方法供服务停止时调用。

代码如下:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;

namespace MyService
{
    public partial class WriteLog : ServiceBase
    {
        public WriteLog()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\log.txt", true);
            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Service WriteLog Start!");
            sw.Flush();
            sw.Close();
        }

        protected override void OnStop()
        {
            System.IO.StreamWriter sw = new System.IO.StreamWriter("D:\\log.txt", true);
            sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Service WriteLog Stop!");
            sw.Flush();
            sw.Close();
        }
    }
}


程序的目的是在服务启动时向D盘下的log.txt文件(若没有这个文件则创建)中写入一条启动日志,服务停止时追加写入一条停止日志


3、为服务添加安装程序


双击“WriteLog.cs”,VS中间将出现服务的设计区域



右键选择“AddInstaller”



出现serviceProcessInstaller1和serviceInstaller1(如果项目中有两个服务的话,就会出现两个serviceInstaller)



下图是解决方案浏览器的结构:



然后在serviceProcessInstaller1的属性页中指定服务的权限



这里选择LocalSystem,本地系统,这是服务的最高权限


在serviceInstaller1的属性页中填入服务的DisplayName(显示名称,即显示在Windows服务管理器中的名称),Description(服务的描述),ServiceName(服务的内部名称),同时指定服务的启动方式,分为Automatic(自动)、Manual(手动)、Disabled(禁用)。



这里选择Automatic,即开机启动


4、编译


右键点击MyService项目,选择Build即可编译



编译完成后,在项目的Debug文件夹里,即可看到服务的exe可执行程序



习惯性双击MyService.exe,会出现一个“Windows Service Start Failure”的提示




原来服务程序必须先用installutil.exe进行安装,然后在服务管理器中启动才能使用。


5、安装服务程序


进入CMD控制台,在.NET路径下找到installutil.exe



将服务程序的路径作为installutil.exe的输入参数传入(可以直接将文件拖进命令行即可出现绝对路径)并回车



服务安装成功。

右键点击“我的电脑”——>“管理”,在出现的“计算机管理”对话框中选择“服务和应用程序”——>“服务”



窗口右边即可以找到我们刚才已经安装的服务

可以看到现在服务的状态为空白,说明服务还未启动。右键点击安装的服务,选择“启动”,即可启动服务

启动后我们在D盘下找到了一个log.txt文件



手动停止服务,则在log.txt文件中有新增了一行日志。

明白了这个过程,就可以写一个批处理文件,双击即可执行安装服务程序而不需要手动在命令行中输入。

在MyService.exe所在路径下新建一个install.txt

内容如下:


C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installUtil.exe  MyService.exe

NetStart WriteLog 


将后缀名改为.bat

双击即可执行服务的安装并启动服务

 

6、卸载服务


与安装服务类似,只是在InstallUtil.exe 后面,服务程序所在路径的前面加上参数 /u,回车即可。在服务管理中刷新下即可发现WriteLog服务不在了。



同样也可以编写一个批处理文件卸载服务

在MyService.exe所在路径下新建一个uninstall.txt

内容如下:


C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\installUtil.exe/u MyService.exe


将后缀名改为.bat

双击即可执行服务的卸载

 

上面我们用命令行的形式来安装服务程序,这个过程显得较为繁琐,不利于使用者的操作。其实windows服务项目还可以做成安装程序的形式来安装,这样就比较方便了。下一篇我们就来介绍为windows服务项目添加安装程序。



内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值