• 把批处理(bat)做成Windows服务(Server)


    1、工具软件

      instsrv.exe 和 srvany.exe,下载:https://pan.baidu.com/s/1PI6qMjdVkuYyjRLokt7xRw 密码:fc1o

    2、编辑 bat

    bat代码示例:

    @echo
    :a
    python transfer.py
    ping 127.0.0.1 -n 60 >nul
    goto a
     

    3、命令方式增加服务

    服务名称 暂拟为 Transfer,管理员权限下的cmd 命令,格式:instsrv.exe 服务名 srvany.exe

    举例:D:instsrv.exe Transfer D:srvany.exe

    4、修改服务参数

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

    查找路径:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Transfer 

    (2)Transfer服务增加子项 Parameters

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

    本例中

    AppDirectory = "D:Coding ransfer"(程序所在文件主路径)

    Application = "D:Coding ransfer ransfer.bat"(程序运行的bat路径)

    5、查看服务列表,并启动 Transfer 服务

    查看服务列表(win+r运行services.msc),启动 Transfer  服务

    6、移除相关服务

    管理员权限下的cmd 命令,格式:instsrv.exe 服务名 remove

    举例:D:instsrv.exe Transfer remove

    7、懒人必备

    批处理实现服务自动增加和参数修改

    拷贝一下内容,并按需修改路径和服务名,写入bat,执行下就好

    @echo off
    echo 获取Administrator权限
    cacls.exe "%SystemDrive%System Volume Information" >nul 2>nul
    if %errorlevel%==0 goto Admin
    if exist "%temp%getadmin.vbs" del /f /q "%temp%getadmin.vbs"
    echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%getadmin.vbs"
    echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%getadmin.vbs"
    echo WScript.Quit >>"%temp%getadmin.vbs"
    "%temp%getadmin.vbs" /f
    if exist "%temp%getadmin.vbs" del /f /q "%temp%getadmin.vbs"
    exit

    :Admin
    echo 成功取得Administrator权限

    D:instsrv.exe Transfer D:srvany.exe

    reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaimaService3Parameters
    reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTransferParameters /v AppDirectory /d "D:Coding ransfer" /t reg_sz /f
    reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTransferParameters /v Application /d "D:Coding ransfer ransfer.bat" /t reg_sz /f
    参考资料

    https://jingyan.baidu.com/article/cd4c29791c5a16756e6e60a7.html 

  • 相关阅读:
    Jdbc、Mybatis、Hibernate各自优缺点及区别
    java中的线程池原理
    JVN的理解
    "=="和 equals 方法究竟有什么区别?
    nginx基础之【study one】
    C#,WPF中使用多文本显示数据,并对其数据进行关键字高亮等操作
    C#、WPF中如何自定义鼠标样式
    SSM(Spring + Springmvc + Mybatis)框架面试题
    java基础面试题
    C#关于TreeView树在节点数较多时总是会出现闪烁的问题方法记录
  • 原文地址:https://www.cnblogs.com/itjeff/p/14867955.html
Copyright © 2020-2023  润新知