问题前言:
项目开发完成后需要部署上线,首次肯定是手动部署跑项目,后期如果出现断电或其他原因导致服务器关机需要重启服务器的情况,这个时候再远程过去手动跑项目是很鸡肋的,通常会设置程序开机自启动,这样就很省心了。
想要实现开机程序自启的解决方法有很多,常见的方式有以下几种:
1、快捷键放入启动文件夹内;
2、计算机配置中指定启动脚本;
3、任务计划程序中配置启动任务;
......
但是如果电脑设置了账户密码,那么很不幸的告诉你,以上几种方式也并没有什么卵用。然后我经过半天测试和查找相关资料后终于发现了一种解决方式,可以实现系统重启后在不登录系统的情况下就那自启指定程序运行,网上的相关资料很多很杂,基本都有些小坑在,所以在这里记录下我的解决过程。
实现步骤:
我们主要使用到 Instrsrv.exe 和 Srvany.exe 这两个小工具,是Windows NT 资源包提供的,Instrsrv.exe作用:在Windows NT中安装或删除系统服务,Srvany.exe作用:允许一些Windows NT应用程序作为服务运行,简单了解下即可,接下来开始具体步骤(我使用的是Windows Server 2016系统操作)。
1、工具下载
首先根据这个链接下载工具(点我下载),下载完成后解压出来,里面的两个exe程序放在任意位置即可(有些资料说必须放在C:/Windows/System32或System64路径下才行,经过测试发现并没有这个必要),我放在了以下位置:
2、创建服务
按Win+R输入cmd打开命令窗口,输入命令:instsrv.exe全路径 自定义服务名 srvany.exe全路径 来创建需要的服务,例如以下我创建的过程:
返回提示:
- The service was successfuly added:表示创建成功!
- Unable to find the file at the given path:表示instsrv.exe和srvany.exe工具存放的位置不对(例如Windows是64位时,将工具放在C:\Windows\System32路径下就会出现这个错误)!
- This service has already been started:表示该服务名已经存在(如果是重复创建服务,可以在cmd命令窗口中输入:sc delete 服务器 命令删除服务)!
3、配置注册表
- 按Win+R输入regedit.exe快捷打开注册表,然后找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ ServerName 这个目录,其中ServerName是你自己的刚才创建的服务名;
- 单击服务--右键单击--新建--选择项(K),命名为Parameters;(必须设置)
- 单击新建的Parameters--右键单击--新建--字符串值(S),数值名称命名为 Application ,数值数据是要作为服务运行的程序地址全路径;(必须设置)
- 再新建一个字符串值,数值名称命名为 AppDirectory ,数值数据是要作为服务运行的程序所在文件夹路径;(必须设置)
- 再新建一个字符串值,数值名称命名为 AppParameters ,数值数据是要作为服务运行的程序启动所需要的参数。(可选,如不需要参数可忽略此步骤)
4、配置服务
按Win+R输入 services.msc 快捷打开服务,找到新建的服务后,选中服务--右键单击--属性--登录--勾选运允许服务与桌面交互,然后点击右下角应用--确认就完成了。
注意:配置完成后srvany.exe不可以移动也不可以删除!
到此为止,指定程序实现开机自启功能的实现步骤就结束了。祝各位好运!