当前位置: 首页 > news >正文

使用 `srvany.exe` 创建 Windows 系统服务的详细教程

文章目录

  • 使用 Srvany 将任意程序注册为 Windows 系统服务
    • 一、前言
    • 二、准备工作
      • 1. 获取 srvany.exe
      • 2. 准备你的应用程序
    • 三、步骤详解
      • 步骤 1:创建服务(使用 sc 命令)
      • 步骤 2:配置注册表参数
        • 2.1 打开注册表编辑器
        • 2.2 定位到服务项
        • 2.3 创建 Parameters 项
        • 2.4 创建三个关键字符串值
      • 步骤 3:启动并验证服务
        • 3.1 启动服务
        • 3.2 验证运行状态
        • 3.3 检查程序是否真的在运行
    • 四、常用管理命令
    • 五、常见问题与解决
    • 六、进阶:使用 instsrv + srvany 组合(更推荐)
    • 七、替代方案对比
    • 八、总结

我来为您整理一篇关于使用srvany.exe创建 Windows 系统服务的详细教程。这是一个经典的将普通程序包装为系统服务的方法。


使用 Srvany 将任意程序注册为 Windows 系统服务

一、前言

在 Windows 系统中,只有特定的程序才能作为系统服务运行(通常是带有服务入口点的程序)。但很多时候,我们希望将普通的.bat批处理文件、.exe应用程序或自定义脚本作为服务运行,实现开机自启、后台运行、自动重启等功能。

Srvany.exe(Service Any)是 Windows Server 2003 Resource Kit 中的一个工具,它充当一个"服务外壳"——本身是一个合法的服务程序,可以加载并运行你指定的任意应用程序。


二、准备工作

1. 获取 srvany.exe

  • 从 Windows Server 2003 Resource Kit 中提取srvany.exe
  • 确认系统位数:
    • 32位系统:使用srvany.exe→ 放到C:\Windows\System32\
    • 64位系统:使用srvany.exe→ 放到C:\Windows\SysWOW64\(推荐)或System32\

⚠️重要:64位系统必须使用 32位的 srvany.exe 放在 SysWOW64 目录下,否则服务无法正常启动!

2. 准备你的应用程序

假设你要运行的程序结构如下:

D:\v2\ ├── Run.bat (要执行的批处理/程序) └── (其他依赖文件)

三、步骤详解

步骤 1:创建服务(使用 sc 命令)

管理员身份运行 CMD 或 PowerShell,执行:

sc create PMSV1 binpath=C:\Windows\SysWOW64\srvany.exe type=own start=auto displayname=PMSV1

命令参数说明:

参数说明
sc create创建服务的命令
PMSV1服务的内部名称(唯一标识,不可重复)
binpath=指向 srvany.exe 的完整路径
type=own独立进程运行(推荐)
start=auto开机自动启动
displayname=PMSV1服务的显示名称(在"服务"管理器中看到的名字)

成功提示:

[SC] CreateService 成功

步骤 2:配置注册表参数

这是最关键的一步!srvany.exe 需要通过注册表读取要运行的程序信息。

2.1 打开注册表编辑器

Win + R,输入regedit,回车。

2.2 定位到服务项

导航到以下路径:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PMSV1

注意:如果你看到的是ControlSet001而不是CurrentControlSet,也是正常的,它们是等效的。

2.3 创建 Parameters 项
  1. 右键点击PMSV1文件夹
  2. 选择新建 → 项
  3. 命名为Parameters
2.4 创建三个关键字符串值

Parameters项右侧空白处,右键 →新建 → 字符串值,依次创建:

名称类型数据值说明
AppDirectoryREG_SZD:\v2\程序的工作目录(结尾要有\
ApplicationREG_SZD:\v2\Run.bat要运行的程序完整路径
AppParametersREG_SZ(可为空)传递给程序的参数(可选)

配置完成后的结构应如你截图所示:

PMSV1 (服务项) └── Parameters (子项) ├── (Default) → (value not set) ├── AppDirectory → D:\v2\ ├── Application → D:\v2\Run.bat └── AppParameters → (空或你的参数)

步骤 3:启动并验证服务

3.1 启动服务
net start PMSV1

或打开服务管理器services.msc),找到PMSV1,右键启动。

3.2 验证运行状态
sc query PMSV1

查看STATE是否为RUNNING

3.3 检查程序是否真的在运行
  • 打开任务管理器 → 详细信息
  • 应该能看到srvany.exe在运行
  • 同时你的Run.bat或指定程序也应该作为子进程运行

四、常用管理命令

# 停止服务 net stop PMSV1 # 删除服务(先停止再删除) sc delete PMSV1 # 修改服务描述 sc description PMSV1 "这是一个自定义服务,用于运行v2程序" # 设置为手动启动 sc config PMSV1 start= demand # 设置为禁用 sc config PMSV1 start= disabled

五、常见问题与解决

问题原因解决方案
服务无法启动,错误 1053srvany.exe 位数与系统不匹配64位系统必须使用 32位 srvany.exe 放在 SysWOW64
服务启动后立即停止Application 路径错误或程序崩溃检查路径是否正确,尝试直接运行该程序看是否正常
程序界面不显示服务运行在 Session 0 隔离环境这是正常的,服务默认无界面。如需界面,需勾选"允许服务与桌面交互"(不推荐用于生产环境)
环境变量缺失服务环境与用户环境不同在 bat 文件中使用绝对路径,或手动设置 PATH

六、进阶:使用 instsrv + srvany 组合(更推荐)

如果你希望用图形化工具,可以使用instsrv.exe(同样来自 Resource Kit):

# 安装服务(自动创建 Parameters 结构) instsrv PMSV1 C:\Windows\SysWOW64\srvany.exe # 然后只需手动添加注册表项即可

七、替代方案对比

方案优点缺点
Srvany微软官方工具,稳定可靠较老,配置稍繁琐
NSSM(Non-Sucking Service Manager)功能强大,支持自动重启、日志等第三方工具,需额外下载
Windows 任务计划程序无需安装,原生支持不是真正的服务,用户登录后才运行
PowerShell New-Service现代方式,命令简单仍需配合 srvany 才能运行普通程序

八、总结

通过本文,你学会了:

  1. ✅ 使用sc create命令创建基于 srvany 的服务
  2. ✅ 在注册表中配置Parameters项的三个关键参数
  3. ✅ 管理和维护自定义服务

核心要点记住:

  • 64位系统 → srvany.exe 放SysWOW64
  • 注册表路径 →HKLM\SYSTEM\CurrentControlSet\Services\你的服务名\Parameters
  • 三个必填项 →AppDirectory(工作目录)、Application(程序路径)、AppParameters(参数)

💡提示:如果你的程序需要定期重启或更复杂的监控,建议考虑使用NSSM,它提供了 Web 界面和更丰富的功能,配置方式与 srvany 类似但更加强大。

希望这篇教程对你有帮助!如有问题,欢迎随时交流。

http://www.cnnetsun.cn/news/1322856.html

相关文章:

  • 鸿蒙应用开发全流程指南
  • M-LLM视频帧选择技术解析
  • FreeModbus 移植实战- 1-从零搭建嵌入式Modbus通信框架
  • SAP HANA 2.0升级实战全记录
  • [C#] 解决jsencrypt RSA加密后C#解密长度异常问题
  • LingBot-Depth在VSCode中的开发插件:提升3D编程效率
  • 负载均衡OJ系统:评测集群优化实战
  • 5分钟看懂DeepSeek V3和R1的核心区别:从模型架构到应用场景全解析
  • keysight85033E 标准机械校准套件,直流至 9 GHz,3.5 mm
  • 别再被ClickHouse的REPLACE语法坑了!手把手教你用EXPLAIN PLAN/SYNTAX排查查询逻辑
  • Windows 10 下 R 与 RStudio 的保姆级安装与配置指南
  • 洛谷P1029
  • Oracle Redo 日志操作手册
  • 比迪丽AI绘画Java面试实战:AIGC相关考点与解决方案
  • 龙虾[特殊字符] OpenClaw 保姆级完全卸载指南
  • 统信UOS系统故障排查:从黑屏报错到硬盘修复的完整指南
  • 自媒体人福音:AIVideo+ChatGPT,日更视频创作效率提升10倍
  • TradingAgents-CN:多智能体驱动的金融交易决策系统全攻略
  • 3步实现CAD建模效率提升90%:颠覆传统设计流程的开源工具
  • 5分钟搞定AI生成PPT:DeepSeek+Markdown+Kimi全流程保姆级教程
  • Ostrakon-VL-8B快速上手:Anaconda环境配置与依赖安装全攻略
  • Chatbot UI阶跃:从基础对话到智能交互的技术实现与优化
  • GEE实战:利用MODIS数据高效计算与批量导出区域月度kNDVI
  • AI绘画神器黑丝空姐-造相Z-Turbo:一键部署,简单操作出大片
  • 深入解析Linux系统资源限制:线程与文件描述符的优化配置
  • TradingAgents-CN智能交易框架:从理论到实践的全方位指南
  • 当AI工具人人都会用,你的商业认知才是真正的护城河
  • 从零到一:基于 Agora Web SDK NG 构建互动直播场景
  • 3月16日打卡
  • 【实战指南】Flowable - 从零搭建企业级工作流系统