作为开博首篇,为普及数字化技能的文章开写了。

在日常使用电脑当中,有些场景是需要把应用程序设置成系统服务,开机就能自动运行,通常“高手”们都是用脚本(比如:bat,vbs)来写一个加载exe,然后把这个脚本设置到开机运行。

这种方式,不是很容易维护,对于一般人来说简直是天书,在普及数字化技能的进程中,脚本不是我们优先学习的。

本文米八通过演示操作使用nssm这个软件(下载地址附在步骤当中),完成普通应用程序,或者带配置、参数应用程序注册成为系统服务,并且可以通过鼠标控制开机启动。

本次操作环境:
操作系统:Windows 11专业版
版本:22H2 CPU:i5-1035G1-x64
操作系统版本:22621.963
应用程序:frpc.exe
配件文件:frpc.ini
应用程序所在路径:D:\software\frp_0.44.0_windows_amd64\

我们先看下效果:

202301101744959.png截图是以frpc.exe这个应用程序来举例,它的启动是会带配置文件的,格式如下:frpc.exe -c frpc.ini,如果没有设定运行目录,就带上完整的路径:frpc.exe -c D:\software\frp_0.44.0_windows_amd64\frpc.ini,不过这些不用担心,nssm会帮我们搞定的,接着往下看。

第一步:下载nssm(下载压缩包有32位和64位的应用程序,一般新电脑都是64位的了,如果不确定就用32位的)。

点击这里直接下载】【软件官网】 | 【国内镜像地址下载

第二步:解压到你的电脑的目录。

我这里是:D:\software\nssm\

202301101957705.png第三步:运行nssm,调出对话框。因为nssm是用命令行的方式运行,所以直接双击是不行的。

按照这个操作方式快速进入命令行,启动nssm:

在nssm文件夹,按住Shift,同时按鼠标右键,在弹出的右键菜单选择:

202301102016413.png然后,再在Powershell窗口输入:./nssm install frpc_044,调出nssm的窗口,frpc_044是系统服务的名称,你可以根据自己的应用程序起名。

202301102019764.png第四步:在nssm UI窗口配置exe应用程序,执行目录和配置参数。如果你刚才的名字起错了,也可以在Service name那里修改过来。因为预先已经配置过frpc_044,这里用:frpc_043做演示。

202301102037233.png选择完成之后,点击:Install service,有下面的弹窗代表添加成功。

202301102041923.png第五步:启动nssm创建的系统服务项。

先找到服务的入口(右键开始菜单):

202301102042820.png选择,计算机管理:

202301102042040.png然后启动,frpc_043服务选项:

202301102043819.png第六步:检查进程是否存在,测试对应功能。

202301102045261.png至此,实操步骤完成。nssm可以作为守护进程存在,如果程序中途中断,也会自动重启的。

附上相关的维护命令作为扩展:

1、纯参数自动化安装:
带上程序路径: nssm install <service name> <program> [<arguments>]
例子:./nssm install frpc_043 D:\software\frp_0.44.0_windows_amd64\frpc.ext -c D:\software\frp_0.44.0_windows_amd64\frpc.ini

2、常见管理命令:
启动服务: nssm start <servicename>
例子:./nssm start frpc_043
停止服务: nssm stop <service name>
重启服务: nssm restart <servic ename>
暂停/继续服务: nssm pause <service name> nssm continue <service name>
服务状态:nssm status <service name>
以上,等同使用服务管理器操作和使用系统的命令。

3、高级进阶命令:
(a)修改命令: nssm edit <service name>
例子:./nssm edit frpc_043 会自动启动操作界面,直接更改即可。
(b)删除命令:
nssm remove <service name>
nssm remove <service name> confirm
第二个会全自动完成没有交互。

同类型的工具还有微软自己的srvany,作为微软自身的第三方系统服务维护工具,从使用角度来看,nssm更为胜一筹。