本文介绍如何通过instsrv.exesrvany.exe创建一个Windows服务。

instsrv.exe: 服务注册工具。

srvany.exe: 注册程序的服务外壳。

你可以在这里下载它们。

手动创建

操作步骤

  1. 以管理员身份打开命令行窗口。

  2. 创建服务。

    1
    2
    3
    4
    5
    6
    7
    8
    $ c:\srvinst\instsrv.exe toppdtserver c:\srvinst\srvany.exe

    The service was successfuly added!

    Make sure that you go into the Control Panel and use
    the Services applet to change the Account Name and
    Password that this newly installed service will use
    for its Security Context.

    其中toppdtserver是服务名称。

  1. 打开注册表并找到子项

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\toppdtserver

  2. 右键toppdtserver节点,新建项Parameters

  3. 选中Parameters节点,在右侧新建字符串值。

    名称:Application, 类型:REG_SZ, 值为应用程序的路径。

  4. 关闭注册表编辑器。

  5. 在服务列表中启动服务。

  6. 大功告成!

脚本创建

创建服务批处理

1
2
3
4
5
6
7
set SERVICENAME=xxx
%~dp0instsrv %SERVICENAME% remove
%~dp0instsrv %SERVICENAME% %~dp0srvany.exe

REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%SERVICENAME%\Parameters" /v Application /t REG_SZ /d %~dp0start.bat /f

REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%SERVICENAME%\Parameters" /v AppDirectory /t REG_SZ /d %~dp0 /f

常见问题

  1. 启动服务时出现1053错误

    打开注册表编辑器,导航到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\, 在右侧界面中新增一个值:ServicesPipeTimeout, 值设置为60000.

Reference