Windows环境中Python脚本开机自启动及其监控自启动

文摘   2024-11-07 12:25   湖北  

1 开机自启动

Windows 10/Windows Server 201X具有一个名为“启动”的已知文件夹,系统每次启动开始自动运行应用程序、快捷方式和脚本时都会检查该文件夹,而无需额外配置

要在Windows启动时运行脚本,先使用Windows+R快捷键打开“运行”对话框。

键入命令:shell:startup

C:\Users\lhy\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

测试脚本(.bat):

@echo off
chcp 65001
d:
cd \xxx
python xxx.py

将该文件放入 Startup 文件夹下,重启电脑即可。注意当文件的属性被设置为“隐藏”时,重启时可能会不执行

在运行上述Batch(BAT)脚本时,通常会弹出一个命令行窗口来显示脚本的执行。如果想在运行BAT脚本时关闭命令行窗口,可以使用VBScript创建一个新的VBScript(.vbs)文件,然后在该文件中使用以下代码来运行BAT脚本::

CreateObject("Wscript.Shell").Run "c:xxx\xxx.bat",0,True

具体可以参考:

在Windows下运行命令行程序,如何才能不显示命令行窗口,让程序保持后台运行?
https://blog.csdn.net/quicmous/article/details/136420097


运行bat时隐藏cmd窗口:
https://www.cnblogs.com/mq0036/p/14633154.html

2 运行监控自启动

上述脚本只能达到一个开机自启动,无法检查程序是否在运行以及重启程序,因此可采用下述脚本,注意需要将上述的.bat转换为.exe文件(网上有工具可自行查找):

@echo off
:start
choice /t 5 /d y /n >nul
tasklist|find /i "xx.exe"
if %errorlevel%==0 (
echo "yes"
) else (
echo "No"
start "" cmd /k "xxx\xx.exe"
)
goto start

其中:

### 定时5s
choice /t 5 /d y /n >nul
### 如果存在该进程
if %errorlevel%==0 (
### 如果不存在,则自行启动
start "" cmd /k "xxx\xx.exe"

也可以采用powershell脚本(.ps1)

$pythonPath = "C:\XXX\anaconda3\python.exe"
$scriptPath = "D:\XXX.py"

while ($true) {
Start-Process -FilePath $pythonPath -ArgumentList $scriptPath -NoNewWindow

while (Get-Process -Name "python" -ErrorAction SilentlyContinue) {
Start-Sleep -Seconds 5
}

Start-Sleep -Seconds 5
}

把应用程序与批处理文件加入到安全白名单中。加入到白名单中的文件目录,文件,安全防护工具将信任该软件,可以直接使用。

以360安全卫士为例,在信任区添加python文件目录,以及启动文件夹中的批处理文件。

或者将上述.bat或.ps1和.exe一起粘贴到Startup 文件夹,否则.exe可能会被删除,从而报内存不足的错误。

3 设置了开机启动,但没有自启

  • 问题:脚本加入启动项后,开机没有自动启动

  • 原因分析:win10系统,只要是图标右下角带盾牌标志的软件,加入系统的启动文件夹:如:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 里面,每次开机后都会启动失败!据说这个是win10出于系统安全考虑,加入了UAC,对系统管理员权限做了限制造成的。

  • 解决方案:

1 win+R打开运行窗口,运行打开组策略(家庭版没有组策略功能),输入:gpedit.msc

2 依次展开:计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制:以管理员批准模式运行所有管理员,设置为已禁用。

3 重启计算机

如果还不行,就在cmd里执行:

# 使用环境变量%ProgramData%或者%SYSTEMDRIVE%
echo %SYSTEMDRIVE%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
echo %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp
参考:
https://m.jb51.net/python/323335imo.htm
https://blog.csdn.net/weixin_44462773/article/details/135739385
https://blog.csdn.net/weixin_40277264/article/details/128862187

Python学习杂记
数据分析与挖掘、运筹优化、机器学习、AI 、数据可视化等。
 最新文章