• Windows bat 脚本注册系统服务教程详解


    目录

    需求说明:

    一、Nssm(推荐) 

    二、Sc 命令

    命令格式:

    命令参数:

    案例演示:

    三、instsrv + srvany

    命令格式:

    案例演示:

    (1)打开注册表(win+r运行regedit)

    (2)给 kapacit 服务增加子项 Parameters

     (3)给子项 Parameters 增加两个字符串类型的参数 AppDirectory 和 Application,并指定参数值

    (4)启动服务

     (5)移除服务

    server.bat 使用方法


     

    需求说明:

            因为最近时长需要在Windows上使用bat脚本启动服务如influxdb、kapacitor等,想把命令行窗口隐藏起来,做成系统服务管理也方便。

    下面介绍3中方法来注册系统服务!!!

    一、Nssm(推荐) 

    使用 Nssm 工具注册系统服务是最为方便、有效的!!!

    可以查看我的这篇文章:Windows 和 Linux 下后台运行 Jar包_Stars.Sky的博客-CSDN博客_cmd后台启动jar包

    这里着重介绍另外两个方法。

    二、Sc 命令

            SC 是用来与服务控制管理器和服务进行通信的命令行程序。也可以将.bat 脚本或 .exe 程序注册成windos服务。

    命令格式:

    这里需要用管理员角色启动doc命令窗口。

    1. # 创建服务:
    2. sc create ServiceName binpath= 脚本路径.bat start= auto type= own displayname= 服务名
    3. (注意“=”后有个空格)
    4. # 删除服务:
    5. sc delete 服务名

    命令参数:

    • ServiceName:在注册表中为service key制定的名称。注意这个名称是不同于显示名称的(这个名称可以用net start和服务控制面板看到),而SC是使用服务键名来鉴别服务的。
    • binpath= BinaryPathName:指定一个进入服务二进制文件的路径。binpath= 没有默认值,必须要给出此字符串。
    • type= {own | share | interact | kernel | filesys | rec | adapt}:关于建立服务的类型,选项值包括驱动程序使用的类型,默认是share。

    • start= {boot| system| auto| demand| disabled}:关于启动服务的类型,选项值包括驱动程序使用的类型,默认是demand(手动)。

    • displayname= DisplayName:指定被用户界面程序用来标识服务的友好名称。

    案例演示:

    1. sc create influx binpath= D:\test\dbs\influxdb-1.8.2-1\influx_start.bat type= own start= auto displayname= influxdb01
    2. # influx_start.bat 内容:
    3. start cmd /c "cd /d D:\test\dbs\influxdb-1.8.2-1 && influxd.exe -config influxdb.conf"

    看到创建,在任务管理器打开服务列表,也出现了influx 服务:

    但是右击开始运行服务,报错:

            也确保了脚本单独执行是可以成功的,但是在这里不成功(可能sc命令大概率是不支持.bat 脚本注册服务的,只支持 .exe程序),便使用接下来的第三种方法了。

    三、instsrv + srvany

            instsrv.exe和srvany.exe是Microsoft Windows Resource Kits工具集中的两个实用工具,这两个工具配合使用可以将任何的exe应用程序作为window服务运行。

            srany.exe是注册程序的服务外壳,可以通过它让应用程序以system账号启动,可以使应用程序作为windows的服务随机器启动而自动启动,从而隐藏不必要的窗口。

    下载链接:https://pan.baidu.com/s/1gF5IseFL0vrJkkgwBNi7CA 
    提取码:yyds

    解压后有如下三个文件:

    命令格式:

    1. # 使用管理打开 cmd
    2. 绝对路径\instsrv.exe 服务名 绝对路径\srvany.exe
    3. 注意:必须输入两个.exe 文件的绝对路径,否则会报如下错误
    4. - The fully qualified path to the .EXE must be given

    案例演示:

    1. C:\Users\Administrator>D:\test\dbs\instsrv.exe kapacit D:\test\dbs\srvany.exe
    2. # 自定义服务名为 kapacit

    服务创建成功: 

    但还没完,需要到注册表修改服务参数:

    找到刚刚创建的服务路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kapacit 

    • (2)给 kapacit 服务增加子项 Parameters

    右击-新建-项

    命名为 Parameters

    •  (3)给子项 Parameters 增加两个字符串类型的参数 AppDirectory 和 Application,并指定参数值

    本例中:
        AppDirectory = "D:\test\dbs\kapacitor"(脚本所在的目录路径)
        Application = "D:\test\dbs\kapacitor\kapacitor_start.bat"(脚本所在的绝对路径)

    • (4)启动服务

    在任务管理器中启动服务即可成功!!!

    •  (5)移除服务

    1. sc delete kapacit
    2. 或者
    3. D:\test\dbs\instsrv.exe kapacit remove

    server.bat 使用方法

    右击编辑 server.bat 文件:

    只需要修改图片标注的地方,Crtl + S 保存,然后双击运行该文件即可自动注册好服务,就不需要上面那样麻烦的点击与修改。 

  • 相关阅读:
    图神经网络综述:模型与应用
    【无标题】
    Nginx部署Vue项目css文件能加载但是不生效
    【双向链表的插入和删除】
    120.(前端)商品管理增加基本信息优化——控制tabs切换下一级目录
    【无标题】
    Pyspark学习笔记小总
    【云原生】一文带你吃透FlexManager数据传入华为云IOT
    幻核退出 “数字藏品有何用”阶段性无解
    第48节—— redux 中的 compose——了解
  • 原文地址:https://blog.csdn.net/weixin_46560589/article/details/127734836