Windows服务是运行在Windows操作系统后台的应用程序,不需要用户登录即可自动启动,适合实现定时任务、后台数据同步、系统监控等长期运行的功能。使用C#开发Windows服务可以依托.NET框架的丰富类库,开发效率较高。

C#创建Windows服务项目
首先打开Visual Studio,选择创建新项目,在项目模板中搜索Windows_服务,选择对应的.NET版本模板后点击下一步,设置项目名称和存储路径完成项目创建。
创建完成后项目会自动生成一个继承自ServiceBase的服务类,默认名称为Service1,我们可以根据实际需求修改类名,比如改为DemoWindowsService。
编写Windows服务核心逻辑
Windows服务的核心逻辑主要在OnStart和OnStop方法中实现,前者在服务启动的时候执行,后者在服务停止的时候执行。如果需要实现定时任务,可以在OnStart中启动一个定时器。
下面是服务类的示例代码:
using System;
using System.ServiceProcess;
using System.Timers;
namespace DemoWindowsService
{
public partial class DemoWindowsService : ServiceBase
{
// 定义定时器,用于执行定时任务
private Timer workTimer;
public DemoWindowsService()
{
InitializeComponent();
// 设置服务名称
this.ServiceName = "DemoWindowsService";
}
// 服务启动时的执行逻辑
protected override void OnStart(string[] args)
{
// 初始化定时器,间隔设置为5秒
workTimer = new Timer(5000);
// 绑定定时执行的事件
workTimer.Elapsed += WorkTimer_Elapsed;
// 启动定时器
workTimer.Start();
// 记录服务启动日志,实际项目中可以写入文件或系统日志
WriteLog("服务启动成功,定时任务已开启");
}
// 定时器触发时执行的逻辑
private void WorkTimer_Elapsed(object sender, ElapsedEventArgs e)
{
// 这里编写具体的业务处理逻辑,比如数据同步、状态检查等
WriteLog("定时任务执行完成,当前时间:" + DateTime.Now.ToString());
}
// 服务停止时的执行逻辑
protected override void OnStop()
{
if (workTimer != null)
{
// 停止定时器
workTimer.Stop();
workTimer.Dispose();
}
WriteLog("服务已停止");
}
// 简单的日志记录方法,实际项目可替换为更完善的日志组件
private void WriteLog(string content)
{
string logPath = AppDomain.CurrentDomain.BaseDirectory + "service_log.txt";
System.IO.File.AppendAllText(logPath, DateTime.Now.ToString() + ":" + content + Environment.NewLine);
}
}
}
添加服务安装程序
服务编写完成后,还需要添加安装程序才能让系统识别并安装该服务。双击服务类的设计视图,在空白处右键选择添加安装程序,会自动生成两个组件:serviceProcessInstaller1和serviceInstaller1。
需要修改这两个组件的属性:
serviceProcessInstaller1的Account属性设置为LocalSystem,这样服务会以系统账户运行,拥有较高权限,避免权限不足导致的问题。serviceInstaller1的ServiceName属性设置为和服务类中定义的服务名称一致,比如DemoWindowsService。serviceInstaller1的DisplayName属性设置为服务在系统服务列表中显示的名称,比如演示Windows服务。serviceInstaller1的StartType属性设置为Automatic,表示服务会随系统自动启动,也可以根据需求设置为手动启动。
安装和启动Windows服务
编译项目生成exe文件后,需要使用系统自带的sc命令或者InstallUtil工具来安装服务。这里以InstallUtil工具为例,步骤如下:
首先以管理员身份打开命令提示符,然后切换到.NET框架的安装目录,比如.NET Framework 4.8的路径为C:WindowsMicrosoft.NETFramework64v4.0.30319,具体路径根据安装的.NET版本调整。
执行安装命令,格式如下:
InstallUtil.exe "你的项目生成的exe文件完整路径"
如果安装成功,会提示安装完成。如果安装失败,需要检查服务名称是否重复、权限是否足够等问题。
安装完成后,可以通过以下方式启动服务:
- 打开系统的服务管理界面,找到名称为
演示Windows服务的服务,右键选择启动。 - 使用命令启动,命令格式为:
sc start DemoWindowsService。
如果需要卸载服务,执行以下命令即可:
InstallUtil.exe /u "你的项目生成的exe文件完整路径"
调试Windows服务
Windows服务无法直接通过Visual Studio的F5键调试,需要采用附加进程的方式调试。首先启动服务,然后在Visual Studio中选择调试-附加到进程,找到对应的服务进程,勾选显示所有用户的进程,选中后点击附加,就可以在代码中打断点调试了。
注意事项
- Windows服务中不要编写需要用户交互的界面逻辑,因为服务运行在后台,没有用户桌面环境。
- 服务中的路径尽量使用绝对路径,避免使用相对路径,因为服务的运行目录可能不是exe文件所在目录。
- 如果服务需要访问网络资源,需要确保运行服务的账户有对应的网络访问权限。
- 修改服务代码后,需要先卸载旧服务,再重新编译安装新服务,否则可能出现更新不生效的问题。
C#Windows_ServiceWindows服务服务安装修改时间:2026-07-06 13:12:26