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

使用 `srvany.exe` 创建 Windows 系统服务的详细教程 文章目录使用 Srvany 将任意程序注册为 Windows 系统服务一、前言二、准备工作1. 获取 srvany.exe2. 准备你的应用程序三、步骤详解步骤 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.exeService 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 binpathC:\Windows\SysWOW64\srvany.exe typeown startauto displaynamePMSV1命令参数说明参数说明sc create创建服务的命令PMSV1服务的内部名称唯一标识不可重复binpath指向 srvany.exe 的完整路径typeown独立进程运行推荐startauto开机自动启动displaynamePMSV1服务的显示名称在服务管理器中看到的名字成功提示[SC] CreateService 成功步骤 2配置注册表参数这是最关键的一步srvany.exe 需要通过注册表读取要运行的程序信息。2.1 打开注册表编辑器按Win R输入regedit回车。2.2 定位到服务项导航到以下路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PMSV1注意如果你看到的是ControlSet001而不是CurrentControlSet也是正常的它们是等效的。2.3 创建 Parameters 项右键点击PMSV1文件夹选择新建 → 项命名为Parameters2.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 才能运行普通程序八、总结通过本文你学会了✅ 使用sc create命令创建基于 srvany 的服务✅ 在注册表中配置Parameters项的三个关键参数✅ 管理和维护自定义服务核心要点记住64位系统 → srvany.exe 放SysWOW64注册表路径 →HKLM\SYSTEM\CurrentControlSet\Services\你的服务名\Parameters三个必填项 →AppDirectory工作目录、Application程序路径、AppParameters参数提示如果你的程序需要定期重启或更复杂的监控建议考虑使用NSSM它提供了 Web 界面和更丰富的功能配置方式与 srvany 类似但更加强大。希望这篇教程对你有帮助如有问题欢迎随时交流。