把任何运行程序安装为windows服务

本文目的

公司需求用到把命令行程序作为windows服务运行,不允许出现令人烦恼的小黑框。遂开始搜查该方面的工具,于是乎便记录下来谨防忘记。

1. 需求

单独的jar包程序,python脚本,以及任何可以用命令启动运行事物安装为windows服务程序,以实现开机自启。

2. 如何实现

github上一个3k多个star的项目,作者是kohsuke,下载链接:点击下载

若是windows10系统,建议下载最新版


笔者在这里下载了2.4.0版本作为说明示例。目录中,两个exe文件,一个是.net2版本,一个是.net4版本。pom是开发依赖库,不用在意它。


除了一个可执行文件外,还需要一个配置文件,最新的版本中配置文件也是和老版的一样是xml形式。较大的不同是新版的根节点是<service>,而老版本的是<configuration>,下面是几个基本配置项。

<service>

    <id> yourself service id </id>

    <name>yourself service name</name>

    <description>This service runs Jenkins continuous integration system.</description>

    <env name="JENKINS_HOME" value="%BASE%"/>

    <executable>java</executable>

    <arguments>-Xrs -Xmx256m -jar "my_winsw.jar" --httpPort=8080</arguments>

    <logmode>rotate</logmode>

</service>

重要的参数:

i. executable:运行命令,可以写全路径。若是配置了env,则会自动扫描该环境变量,只用命令即可。

ii. arguments: 运行参数,除了命令之外的参数都可以写在这里。

iii. logmode: 日志记录模块,详细看这里

这两个文件弄好之后,放在同一目录(c:\example)下。exe文件推荐改为与自己服务相关的名称。接下来是安装服务。我的exe改名为my_winsw.exe.

以管理员身份打开黑色命令行窗口,切换到c:\example,执行

my_winsw.exe install

启动服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行

net start "your_service_id"

停止服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行 

net stop "your_service_id"

重启服务:

以管理员身份打开黑色命令行窗口,切换到c:\example,执行 

net restart "your_service_id"

3. 优化

我们发现每次都要去打开命令行窗口才能对服务进行一些操作,很是麻烦。既然都是命令行,我们不妨把安装,启动,停止,重启等都保存为批处理文件。

重要:

在命令行中获取管理员权限

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"

例如安装.bat

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"

my_winsw.exe install

最后我们的目录呈一下状态:


至此完成,windows服务的安装。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文/杜尧 大胆的设想,完全的否定。设想未来的工作、生活,和谁走到最后。憧憬,从来都满满的是未来的味道。有那谁的发香...
    木土有阿杜阅读 1,766评论 0 2
  • 昨天下午我浏览网页选梳子,儿子说,我用我的钱给你买吧!我说那意思是你送给我?儿子点点头,“不超过600钱。” 儿子...
    轻风style阅读 358评论 0 0
  • 本该而立的年纪,却面临诸多的挑战 生活的,事业的,家人的 彷徨,迷茫,不理解 迟迟不能做决断 然后有一天,遇见了你...
    姗言两语一生幸阅读 130评论 0 1