推荐用NSSM将第三方程序封装为服务并设为开机自启:下载nssm.exe,以管理员运行nssm install MyAppSvc配置路径、工作目录和显示名称,再执行sc config MyAppSvc start= auto设启动类型为自动,最后sc start MyAppSvc验证运行。

您需要让某个第三方程序(如 Python 脚本、Node.js 应用或自研 EXE)在 Windows 10 开机时自动运行并长期驻留后台,但该程序本身不是服务程序——此时不能直接用 sc create 注册,必须先将其封装为合法服务入口,再用 sc config 配置启动行为。
前提:确认程序具备服务兼容性
第三方程序必须满足两个硬性条件:能以命令行方式静默启动(不弹窗、不阻塞控制台)、支持后台持续运行(不能启动即退出)。若程序启动后立即关闭或依赖交互式桌面会话,则无法稳定作为服务运行。
例如:D:\app\server.exe 可直接双击运行且进程常驻;而 D:\app\gui_tool.exe 启动后弹出窗口并等待用户点击,则不适用。
【必须关闭 UAC 提权弹窗】 若程序启动时触发“是否允许此应用对设备进行更改”提示,会导致服务启动失败且无日志反馈。
方法一:用 NSSM 创建服务(推荐新手)
NSSM(Non-Sucking Service Manager)自带图形界面,自动处理路径空格、工作目录、环境变量和崩溃重启策略,避免手动配注册表出错。
1、从官网下载 nssm.exe(v2.24 或更新),解压后放入 C:\nssm\ 目录。
2、以管理员身份运行 CMD,执行:C:\nssm\nssm.exe install MyAppSvc → 弹出配置窗口。
3、在 “Path” 栏填入目标程序完整路径,如 D:\app\run.bat;在 “Startup directory” 填入其所在文件夹 D:\app\;Service name 自动设为 MyAppSvc。
4、切换到 “Details” 页,设置 Display name 为“我的后台服务”,Startup type 选 Automatic。
5、点击 “Install service”,完成注册。此时服务已存在,但尚未配置为开机自启——需下一步用 sc config 显式设置。
方法二:用 sc config 设置服务启动类型
这一步必须在服务已成功创建的前提下执行,否则报错 [SC] OpenService FAILED 1060。注意:sc config 不创建服务,只修改已有服务的属性。
第一步:确认服务名正确
打开 services.msc,找到刚注册的服务(如“MyAppSvc”),双击→“常规”页顶部显示的“服务名称”才是命令中要用的值,它可能与显示名称不同,例如显示为“我的后台服务”,服务名称却是 MyAppSvc。
第二步:以管理员身份运行 CMD
第三步:执行启动类型配置
sc config MyAppSvc start= auto —— 等号后必须有且仅有一个空格,这是 Windows sc 命令的语法铁律,少空格直接报错。
第四步:验证配置结果
执行 sc qc MyAppSvc,检查输出中 “START_TYPE” 行是否为 AUTO_START;再执行 sc query MyAppSvc,确认 STATE 为 4 RUNNING 或 1 STOPPED(未启动但配置已生效)。
方法三:强制服务开机自启并调试失败场景
如果执行 sc start MyAppSvc 后立即失败(STATE 变为 1 STOPPED),说明服务进程启动异常,需启用日志定位问题。
方法一(NSSM 用户):打开 NSSM GUI → 找到 MyAppSvc → 切换到 “File redirection” 页 → 勾选 “Output to file”,指定日志路径如 D:\app\svc.log → 点击 “Edit service” 保存。
方法二(纯 sc 用户):需改用 WinSW 或 srvany 封装,因为原生 sc 不提供日志功能;强行用 sc config 修改只会让错误更隐蔽。
启动失败常见原因:目标程序路径含中文或空格但未加引号、工作目录未指定导致找不到依赖 DLL、程序需要桌面交互权限但服务会话默认无桌面。
【关键动作】 修改服务配置后,必须执行 sc start MyAppSvc 手动触发一次,不能只等下次开机——只有实际启动过,才能暴露路径/权限/依赖等真实问题。

















