• 用Windows服务运行任意程序


    昨天把mantis缺陷跟踪系统在办公室里搭了一套,批处理启动nginx+php+mysql。

    后来发现服务器必须登录才行,一注销就把nginx给关闭了,看来只能添加到系统服务里了。

    一开始用[sc create nginx binPath= c:/opt/start.bat],服务是添加进去了,但总是无法启动,后来分析一下,应该是服务程序要用SCxxxx等API函数与windows交互,所以启动失败(也有可能已经运行了,在任务管理器看不到,没给windows返回成功状态所以显示失败)。 后来在网上找到一个srvany.exe的程序,应该就是一个空壳服务程序,把服务添加成它: sc create nginx binPath= c:/opt/srvany.exe 然后在注册表里添加以下内容

    ====================================================

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/nginx/Parameters]

    "Application"="c://opt//start.bat"

    "AppParameters"=""

    "AppDirectory"="c://opt//"

    ====================================================

    这样启动服务时srvany会去指定路径调用程序,也能和windows正常交互服务的状态了。

    不过后来发现一个问题,在控制台的服务管理中,停止该服务的话只能停止srvany.exe,不会停止它启动的程序,以后有空自己做一个srvany程序吧。

  • 相关阅读:
    java io
    java 线程
    java 引用
    spring面试合集
    jvm(6):JMM
    jvm(n):JVM面试
    jvm(5):类加载机制
    jvm(4):类文件结构
    C# UDP编程简介
    Facebook 对 Memcache 伸缩性的增强
  • 原文地址:https://www.cnblogs.com/chaos77/p/4066235.html
Copyright © 2020-2023  润新知