用winsw让Windows程序运行为服务

2020年3月2日 2453点热度 1人点赞 0条评论
使用场景

有时候我们需要在Windows下开机运行某些程序,这对于有图形界面的程序来说一般不是什么事,在选项中选中开机启动,然后它们就可以自动运行了。但是如果我们想运行一些命令行程序的话就没这么方便了,如 frp这类的工具。虽然可以写一个bat脚本,然后将它的快捷方式开机自启。不过这种方式有一个非常大的缺点,就是开机之后会显示一个命令行窗口!而且这个窗口还不能关,一关程序就停了。这个时候我们可以借助第三方工具winsw,它提供了xml文件可以进行服务的动态管理,方便不少。

一、下载winsw

首先要下载winsw。它是一个单个的可执行文件,我们到Github release这里就可以下载winsw了。一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。下载完之后最好把文件改成一个比较短小的名字,例如winsw.exe这样的,方便后面输入命令。

二、编写配置文件

我们以启动frp服务为例。先将winsw.exe放到和frp相同的文件夹下面,然后编写一个文件名为winsw.xml的XML文件作为winsw的配置文件。下面是我的配置文件内容:

<service>
    <id>frp</id>
    <name>frp</name>
    <description>frp remote control</description>
    <executable>frps</executable>
    <arguments>-c frps.ini</arguments>
    <logmode>reset</logmode>
</service>

三、注册、卸载服务

我们打开一个管理员权限的命令提示符或Powershell窗口,在程度目录下执行以下命令:
注册服务:

winsw install

启动服务:

winsw start

关闭服务:

winsw stop

重启服务:

winsw restart

卸载服务:

winsw uninstall

如果只是想简单添加开机启动,打开 “运行” 对话框(WIN+R),输入以下命令,回车或点击 “确定” 即可打开 “系统启动文件夹”。创建快捷方式,放到 “启动” 文件夹内即可添加开机启动。

shell:Common Startup

 

信仰飘扬

行尽天涯 静默山水间