C#创建Windows服务:从项目搭建到安装卸载完整指南
在服务器或需要长期运行的场景中,Windows服务是理想的解决方案。它能在后台无界面运行,支持开机自启且不影响其他用户。本文将详细讲解如何使用C#从零创建一个Windows服务,配置其启动参数,并通过命令行工具完成服务的安装与卸载。
结果与目标
最终目标是生成一个可独立运行的后台程序,该程序能够在系统启动时按指定策略运行,并能通过标准管理工具进行启停控制。
准备条件
- 开发环境:安装了 .NET Framework 4.x 的 Visual Studio。
- 权限要求:执行安装/卸载命令时需使用管理员权限。
- 路径知识:了解
InstallUtil.exe的位置,通常位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\。
真实操作顺序
第1步:创建Windows服务项目
目的:初始化具备服务基类的项目结构。
- 打开Visual Studio,新建项目。
- 模板选择“Windows 服务”。
- 将项目名称修改为
thinger.WindowsServiceDemo。

第2步:重命名服务类
目的:规范代码结构,便于区分。
默认生成的类名为 Service1,建议改为更有意义的名称如 MyService。
第3步:添加安装程序配置
目的:生成用于注册服务的 Installer 组件,这是Windows服务能被系统管理的必要前提。
- 在设计视图中右击
Service1(或MyService)组件。 - 选择“添加安装程序”。系统将自动生成
ProjectInstaller.cs及其设计器页面。
- 此时界面上会出现两个关键组件:
-serviceProcessInstaller1:定义服务运行的安全上下文(账户)。
-serviceInstaller1:定义服务本身的元数据(名称、显示名称等)。
第4步:配置服务属性
目的:设定服务的身份标识和启动行为。
- 配置 serviceInstaller1:
选中该组件,在属性窗口中设置:
-ServiceName:内部服务名(如TestService),后续管理中常用到此名称。
-Description:服务描述,用于在管理列表中显示说明。
-StartType:启动模式,可选“自动”、“手动”或“禁用”。若需开机自启请选择“自动”。
- 配置 serviceProcessInstaller1:
选中该组件,设置Account属性。通常建议设置为LocalSystem以获得最高权限运行,也可设为User以指定特定账户。
第5步:编写核心业务逻辑
目的:实现服务启动与停止时的具体行为。重写 OnStart 和 OnStop 方法。
切换至代码视图,示例逻辑如下:在日志文件中记录启动和停止时间。
public partial class MyService : ServiceBase
{
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
WriteInfo("服务启动");
}
protected override void OnStop()
{
WriteInfo("服务停止");
}
private string filePath = @"D:\ServiceLog.txt";
private void WriteInfo(string info)
{
using (FileStream stream = new FileStream(filePath, FileMode.Append))
{
using (StreamWriter writer = new StreamWriter(stream))
{
writer.WriteLine($"{DateTime.Now},{info}");
}
}
}
}
注:请确保 D: 盘有写入权限,或在生产环境中替换为更安全的日志路径。
第6步:编译生成
目的:输出最终的 .exe 文件供安装使用。
右键项目 -> 生成。注意查看输出目录(通常为 bin\Debug 或 Release)下的EXE文件路径。
第7步:安装与验证服务
目的:将编译好的服务注册到Windows系统中。
- 打开管理员CMD:
点击开始菜单,搜索“cmd”,右键选择“以管理员身份运行”。
导航至 InstallUtil.exe 所在目录,或直接使用该工具的绝对路径。
- 执行安装命令:
输入命令:installutil <你的EXE绝对路径>
例如:installutil D:\path\to\thinger.WindowsServiceDemo.exe
- 验证安装:
打开“服务”管理器(Win+R 输入services.msc),在服务列表中找到刚才设置的ServiceName(如 TestService)。此时状态应为“已安装”,但尚未启动。
- 启动服务:
在服务列表中双击该项,或右键选择“启动”。观察日志文件(如D:\ServiceLog.txt)是否新增了启动记录。
- 验证日志:
打开日志文件确认内容格式是否正确。
第8步:卸载服务
目的:清理不再需要的服务注册。
在管理员CMD中运行卸载命令,追加 -u 参数:
installutil -u <你的EXE绝对路径>
执行成功后,刷新“服务”管理器,该服务将从列表中消失。
完成判断
当你在“服务”管理器中看到自定义服务,并成功通过控制面板触发其启动/停止,且对应的日志文件或后台任务按计划执行时,即表示Windows服务已成功创建并投入使用。
简要总结
C#开发Windows服务的核心在于“项目类型选择”、“Installer配置”和“InstallUtil命令行操作”。通过上述步骤,你可以轻松构建出稳定、无交互的后台守护进程,满足服务器端长期运行的需求。
以上就是基于C#实现Windows服务的创建、安装、启动、停止和卸载的详细内容,更多关于C# Windows服务内容请搜索本站以前的文章或继续浏览下面的相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













