开机启动并隐藏 cmd 窗口程序在后台运行 - winsw 使用教程
前言
Windows 下手动添加开机启动的方式一般是创建快捷方式到启动文件夹,但某些程序是命令行式运行的,打开后会显示一个 cmd 窗口,而且窗口关闭程序就会停止。而 winsw 可以将 Windows 上的任一程序注册为服务,实现命令行程序开机启动和后台运行。
下载 winsw
从项目仓库的 release 页面下载,有 .NET2 和 .NET4 两个版本,Windows 10 建议下载 .NET4 版本。为了便于理解和方便后续的操作,下载后建议重命名为 winsw.exe
。
编写配置文件
官方提供了一个配置文件模版,里面有所有配置项和详细的注释。对于简单的使用不需要那么复杂:
1 | <configuration> |
配置项说明:
id
- 服务的ID。必须在所有服务中是唯一的,由字母数字字符组成。name
- 服务的显示名称。可以和id
一样,也需要在所有服务中是唯一的,可以包含空格和其他字符。description
- 描述。随便写,自己明白就行,或者不写也行。executable
- 可以是程序文件名,也可以是绝对路径。推荐放和程序在一起,直接写文件名就行。arguments
- 程序的启动参数,有就写,没有就删除。log mode
- 日志模式。默认是追加模式(append
),即无限制写入。如果不想让日志变得无限大建议设置为reset
。不需要日志则设置为none
。
创建一个与 winsw 程序本体名称一致的.xml
后缀的空白文档,如果 winsw 程序本体是 winsw.exe
,那么配置文件命名为 winsw.xml
,放在一起,然后把上面的内容复制进去,然后按需求进行修改。
下面是某个配置文件:
1 | <configuration> |
注册服务
写完配置文件,确定程序和 winsw.exe
、winsw.xml
在同一路径下,在这个路径以管理员权限打开 cmd
或者 Powershell
,输入 winsw.exe install
,如果不出意外,只会输出一条信息:
1 | INFO - Installing the service with id 'UnblockNeteaseMusic' |
UnblockNeteaseMusic
这里的字符应该是你自己写的程序的id
,这里仅用于演示。
启动服务
输入 winsw.exe start
启动服务,这样程序就在后台无窗口运行了,重启开机也会无窗口自动启动。停止运行则输入 winsw.exe stop
。你也可以在 Windows 的任务管理器或者服务中管理这个程序的服务。
卸载服务
如果不再需要这个服务,先停止服务,然后输入 winsw.exe uninstall
即可卸载服务。