说明
简述:通过将启动脚本写入注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run来实现开机自启
问题:这种开机启动比较奇怪,运行路径是cmd.exe的路径,所以执行需要自启的程序时,读取其他相对路径的文件会有错误
解决:执行启动前,切一下目录
启动脚本
import os
import sys
import time
import subprocess
def startup():
print("启动中...")
# sys.args[0]获取文件的真实路径,其他方法获取的会是cmd的路径
path=sys.argv[0].replace("startup.py","")
# 切换工作目录,不切换执行示例程序.exe的目录还是cmd的路径
os.chdir(path)
s_path = f"{os.getcwd()}\\示例程序.exe"
try:
subprocess.Popen(s_path)
except:
print("自启动失败,请手动操作...")
time.sleep(10)
print("启动完成...")
time.sleep(3)
startup()
加入启动项函数
需安装pywin32
pip install pywin32
import win32api
import win32con
# 写入注册表;name:名称;file_path:要启动的程序路径
def add_startup(name,file_path):
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
'Software\\Microsoft\\Windows\\CurrentVersion\\Run', 0, win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key,name,0,win32con.REG_SZ,file_path)
win32api.RegCloseKey(key)
将[示例程序.exe]和启动脚本放在一个目录
s_path=f"{os.getcwd()}\\startup.py"
add_startup("示例",s_path)