目录
场景说明:C#控制台应用程序(或其他exe),使其在服务器/电脑开机时自动启动并运行,并有一个bat脚本监控该exe的运行状况,未运行则启动exe。
三、创建Windows 任务计划程序,使exe程序开机后自动运行(需要管理员权限运行的程序也适用)
四、使用bat脚本检测exe程序是否在运行,若未在运行,启动该exe程序。
五、为bat脚本创建windows任务计划,使其开机启动运行/每天特定时刻运行
场景说明:C#控制台应用程序(或其他exe),使其在服务器/电脑开机时自动启动并运行,并有一个bat脚本监控该exe的运行状况,未运行则启动exe。
一、服务器设置来电自启
适用场景:工业服务器在许多场景下,不一定有人员操作,需要服务器来电后自动运行。
方法:BIOS设置中打开来电自启选项。
1.进入BIOS,不同品牌有不同的操作,具体品牌可以查询官方说明。DELL服务器是在开机/重启时左上角会出现BIOS选项时按下【F2】.。不确定BIOS什么时候出现可以一直快速按【F2】。
2.进入System Setup界面,选择System BIOS。进入System BIOS Settings,选择System Security(下拉寻找)。AC Power Recovery(即来电后电脑是否开机)选择【On】,意为来电后电脑/服务器开机。此处其他选项中Off的意思就是不关机;Last就是保持断电前的服务器状态,如果断电前关机,选择Last,那么来电后保持关机状态,断电前开机,选择Last,来电后就会开机。
3.点击Finish、Yes、OK等保存设置并退出BIOS。
二、服务器/电脑设置免密登录,开机后自动进入桌面
适用场景:工业上服务器来电自启后,需要按Ctrl+Alt+Del输入密码才能进入桌面,但服务器是无人员操作自动运行,需要开机后直接进入桌面。
方法:更改用户账户设置。
1.按【win】+【R】进入运行,输入“netplwiz”,点击确定。
2.取消勾选“要使用本机算计,用户必须输入用户名和密码”。
3.弹出输入用户名和密码的弹窗,正常输入密码(此处许多教程选择不输入任何密码,我实践后发现并不能成功,但是正常输入密码可以成功,大家自行尝试),点击确定,重启时就不需要密码自动进入桌面了。
三、创建Windows 任务计划程序,使exe程序开机后自动运行(需要管理员权限运行的程序也适用)
适用场景:(需要管理员权限的)exe程序需要在服务器上开机即运行。
方法:创建windows任务计划。
1. 打开“控制面板”并找到“管理工具”选项。在其中找到“任务计划程序”并点击打开。或直接在开始菜单旁搜索“任务计划程序”应用,并打开。
2. 在任务计划程序界面中,可以看到已创建的任务列表。如果要创建新任务,右键点击“任务计划程序(本都)”,选择“创建基本任务”或“创建任务”。输入任务名,描述可以描写该任务的功能。
3.选择任务的触发器为【计算机启动时】,这是任务何时启动的条件。其他场景下触发器可以是用户登录时、特定时间或特定事件。
4. 在选择触发器后,指定程序脚本为需要以管理员权限启动的exe程序,必须是exe,不能是快捷方式,我随便放了一个360浏览器的exe。
5. 完成时,勾选“当单击‘完成’时,打开此任务属性对话框”,就会自动弹出属性继续配置。如果没勾选需要自己右键点击这个任务,选择属性进入面板。
6.进入属性,点击“更改用户和组”
7.进入下图,点击“高级”
8.进入高级,点击【立即查找】,出现搜索结果,选择【Administrators】,点击确定
9.出现如下电脑名称\Administrators,点击确定
10. 返回属性页如下,勾选【使用最高权限运行】,点击【触发器】。(如果此处点击确定会退出属性面板)
11.进入触发器配置,双击该触发器进入编辑,或选中该触发器点击编辑
12.开始任务选择【登录时】,所有用户,高级设置按需选择,勾选【已启用】,点击确定。重启就可以看到成功了。
13.如果比较担心程序开机不运行,也可以增加一个每天特定时刻启动的触发器,多一重保险。在第11所示页面点击新建,选择【每天】,时间随意,高级设置按需选择,默认勾选【已启用】,点击确定。可以看到触发器有两个。 我已经测试过了,只有程序不在运行时,每天的这个触发器才会触发。程序在运行时,到触发器时间这个程序不会重复运行,不用担心每天都运行一个的情况。
四、使用bat脚本检测exe程序是否在运行,若未在运行,启动该exe程序。
适用场景:exe比较容易挂,需要自动重启该exe
方法:写一个bat脚本,运行该脚本就可以监测exe运行状态,并且为bat脚本也创建一个任务计划,使bat脚本开机自启/每天特定时刻启动,保证该exe正常运行。
bat脚本内容参考以下文章,名为“Windows脚本监测守护进程.bat”~
版权声明:本文为博主XXXANDLOKI原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/XXXANDLOKI/article/details/128854213
1.新建一个txt文本,bat脚本代码如下
@echo off
:run
tasklist /FI "IMAGENAME eq 你的程序.exe" 2>NUL | find /I /N "你的程序.exe">NUL
if "%ERRORLEVEL%"=="0" (
echo Program is running @REM 运行则输出Program is running
for /f "skip=3 tokens=2 " %%i in ('TASKLIST /FI "IMAGENAME eq 你的程序.exe" /FI "STATUS eq NOT RESPONDING"') do (
echo %Date% %time% %%i
taskkill /F /PID %%i /T @REM 进入这里就是无响应 自己 kill 掉
)
) else (
echo Program is NONONO running @REM 不在运行则输出Program is NONONO running
start ""/D"该exe所在路径如C:\Users"你的程序.exe @REM 表示运行该路径下的你的程序.exe
)
choice /t 10 /d y /n > null @REM 10表示10秒检测一次,按需修改
goto run
2.按需求修改
“你的程序.exe”需要替换成被检测的程序名.exe。
echo Program is running和echo Program is NoNoNo running可以自行替换。
“该exe所在路径如C:\Users”代表着exe程序所在位置,也需要自行替换成有效路径。
修改完成后首次保存该文本,文件类型选“所有文件”,在名称后加上.bat后缀保存即可,点击运行就成功了(非首次保存为bat有时会失败,可以新建空txt再进行首次保存为bat文件)。
3.其他:
下面这句,
start ""/D"该exe所在路径如C:\Users"你的程序.exe @REM 表示运行该路径下你的程序.exe
也可以替换成如下内容
start %CD%/你的程序.exe @REM 程序路径 %CD%表示当前路径
但是%CD%这个当前路径,有时运行exe出错会识别成C:\Windows\System32,大家看情况使用,或修改bat/exe路径使用。
五、为bat脚本创建windows任务计划,使其开机启动运行/每天特定时刻运行
参考第三点,为exe创建Windows 任务计划即可。这样保证exe和bat脚本都是开机自启/每天的特定时候触发器检测启动,保证exe正常运行~