跳转至

在 Windows 上创建服务

你要创建一个 Windows 服务,主要有几种常见方式,取决于你要运行的是什么程序(Java、.NET、可执行文件、脚本等)。我先给你介绍通用的方法:


1. 用 sc 命令创建服务(最简单)

如果你有一个可执行程序(例如 C:\myapp\myapp.exe),可以直接用 sc

sc create MyService binPath= "C:\myapp\myapp.exe" start= auto DisplayName= "My Custom Service"

参数说明: - MyService → 服务的内部名字(不能有空格)。 - binPath → 程序路径。 - start= auto → 开机自启动(也可用 demand 手动启动)。 - DisplayName → 在服务管理器里显示的名字。

创建后可以用:

sc start MyService
sc stop MyService
sc delete MyService

2. 用 nssm(推荐)

nssm(Non-Sucking Service Manager)是一个开源工具,可以把任何程序变成 Windows 服务,比 sc 好用。

安装后执行:

nssm install MyService

会弹出一个 GUI,选择: - Path → 你的程序,例如 C:\myapp\myapp.exe - Startup directory → 程序目录 - Arguments → 启动参数(可选)

然后点 Install service


3. 用 PowerShell 注册服务

如果你要运行的是 PowerShell 脚本,可以先用 pwsh.exepowershell.exe 包装:

New-Service -Name "MyService" `
    -BinaryPathName "C:\Program Files\PowerShell\7\pwsh.exe -File C:\myapp\script.ps1" `
    -DisplayName "My PowerShell Service" `
    -StartupType Automatic

4. Java 程序

如果你是运行 Java(比如 Spring Boot 应用),推荐用 winsw(Windows Service Wrapper): 1. 下载 WinSW。 2. 写一个 XML 配置文件,指定 java -jar yourapp.jar。 3. 注册成服务。


⚡ 问题是:你是要把 现成的可执行文件 注册成服务,还是要把 Java 程序/脚本 变成服务?

我可以针对你具体的场景写一个完整配置(例如 Spring Boot + WinSW 或者 Python 脚本 + nssm)。你是想运行什么程序作为服务呢?

nssm install VilinkMonitorService "C:\usr\ssz\workspace\git\app\scm-python\sh\bin\vilink.bat"
nssm set VilinkMonitorService AppDirectory "C:\usr\ssz\win-services\vilink-monitor"
nssm set VilinkMonitorService AppParameters "monitor -a runtime -r"
nssm set VilinkMonitorService ObjectName ".\ssz" "xxx"

Example TODO