C#创建Windows服务:从项目搭建到安装卸载完整指南

向北走
向北走
发布时间:2026-10-15| 4人浏览过
原创

在服务器或需要长期运行的场景中,Windows服务是理想的解决方案。它能在后台无界面运行,支持开机自启且不影响其他用户。本文将详细讲解如何使用C#从零创建一个Windows服务,配置其启动参数,并通过命令行工具完成服务的安装与卸载。

结果与目标

最终目标是生成一个可独立运行的后台程序,该程序能够在系统启动时按指定策略运行,并能通过标准管理工具进行启停控制。

准备条件

  • 开发环境:安装了 .NET Framework 4.x 的 Visual Studio。
  • 权限要求:执行安装/卸载命令时需使用管理员权限。
  • 路径知识:了解 InstallUtil.exe 的位置,通常位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319\。

真实操作顺序

第1步:创建Windows服务项目

目的:初始化具备服务基类的项目结构。

  1. 打开Visual Studio,新建项目。
  2. 模板选择“Windows 服务”。
  3. 将项目名称修改为 thinger.WindowsServiceDemo。

第2步:重命名服务类

目的:规范代码结构,便于区分。
默认生成的类名为 Service1,建议改为更有意义的名称如 MyService。

第3步:添加安装程序配置

目的:生成用于注册服务的 Installer 组件,这是Windows服务能被系统管理的必要前提。

  1. 在设计视图中右击 Service1(或 MyService)组件。
  2. 选择“添加安装程序”。系统将自动生成 ProjectInstaller.cs 及其设计器页面。
  3. 此时界面上会出现两个关键组件:
    - serviceProcessInstaller1:定义服务运行的安全上下文(账户)。
    - serviceInstaller1:定义服务本身的元数据(名称、显示名称等)。

第4步:配置服务属性

目的:设定服务的身份标识和启动行为。

  1. 配置 serviceInstaller1:
    选中该组件,在属性窗口中设置:
    - ServiceName:内部服务名(如 TestService),后续管理中常用到此名称。
    - Description:服务描述,用于在管理列表中显示说明。
    - StartType:启动模式,可选“自动”、“手动”或“禁用”。若需开机自启请选择“自动”。
  2. 配置 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系统中。

  1. 打开管理员CMD:
    点击开始菜单,搜索“cmd”,右键选择“以管理员身份运行”。
    导航至 InstallUtil.exe 所在目录,或直接使用该工具的绝对路径。
  2. 执行安装命令:
    输入命令:installutil <你的EXE绝对路径>
    例如:installutil D:\path\to\thinger.WindowsServiceDemo.exe
  3. 验证安装:
    打开“服务”管理器(Win+R 输入 services.msc),在服务列表中找到刚才设置的 ServiceName(如 TestService)。此时状态应为“已安装”,但尚未启动。
  4. 启动服务:
    在服务列表中双击该项,或右键选择“启动”。观察日志文件(如 D:\ServiceLog.txt)是否新增了启动记录。
  5. 验证日志:
    打开日志文件确认内容格式是否正确。

第8步:卸载服务

目的:清理不再需要的服务注册。

在管理员CMD中运行卸载命令,追加 -u 参数:

installutil -u <你的EXE绝对路径>

执行成功后,刷新“服务”管理器,该服务将从列表中消失。

完成判断

当你在“服务”管理器中看到自定义服务,并成功通过控制面板触发其启动/停止,且对应的日志文件或后台任务按计划执行时,即表示Windows服务已成功创建并投入使用。

简要总结

C#开发Windows服务的核心在于“项目类型选择”、“Installer配置”和“InstallUtil命令行操作”。通过上述步骤,你可以轻松构建出稳定、无交互的后台守护进程,满足服务器端长期运行的需求。

以上就是基于C#实现Windows服务的创建、安装、启动、停止和卸载的详细内容,更多关于C# Windows服务内容请搜索本站以前的文章或继续浏览下面的相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。