srvany.exe是windows server上创建自定义服务最直接、兼容性最好的方式之一,支持将普通exe、bat、python脚本等包装成系统服务,不依赖.net,纯原生支持server 2003至2025各版本;64位系统须用32位srvany.exe并放于syswow64目录,路径需无空格和中文;通过sc命令注册服务后,需在注册表对应服务项下新建parameters项,并配置application、appdirectory、appparameters三个字符串值;最后启动服务并验证进程运行状态及事件日志。
用 srvany.exe 是 windows server 上创建自定义服务最直接、兼容性最好的方式之一,尤其适合把普通 exe、bat、python 脚本等包装成系统服务。它不依赖 .net 或服务入口点,纯原生支持,适用于 server 2003 到 server 2025 各版本。
准备 srvany.exe 和目标程序
64 位系统必须使用 32 位版 srvany.exe,放到 C:\Windows\SysWOW64\(不是 System32);32 位系统放 System32 即可。确认路径无空格和中文。你的待托管程序(如 D:\app\start.bat 或 D:\tools\server.exe)需能独立运行,建议先手动双击测试通过。
用 sc 命令注册服务
以管理员身份打开 CMD 或 PowerShell,执行:
- sc create MySvc binpath= "C:\Windows\SysWOW64\srvany.exe" type= own start= auto displayname= "My Custom Service"
- 其中 MySvc 是服务内部名(唯一、无空格),displayname 是服务管理器里看到的名称
- 确保 binpath= 后面有空格,引号包裹完整路径,否则注册会失败
配置注册表指向你的程序
运行 regedit,定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySvc
右键 → 新建 → 项,命名为 Parameters;再在 Parameters 下新建三个字符串值:
- Application:填你程序的完整路径,如 D:\app\start.bat
- AppDirectory:填程序所在目录,如 D:\app\(末尾带反斜杠)
- AppParameters:可选,填启动参数,如 --port 8080;留空则不填
启动并验证服务
执行:
sc start MySvc
然后检查:
- 服务管理器(services.msc)中状态是否为“正在运行”
- 任务管理器 → 详细信息页,看是否有你程序的进程(如 cmd.exe 或 python.exe)在运行
- 若失败,查 Windows 事件查看器 → Windows 日志 → 系统,筛选来源为 SrvAny 的错误











