如何让python程序在windows下开机启动

说明

标题:如何让python程序在windows下开机启动;通过脚本让程序加入注册表启动项,实现自启
简述:通过将启动脚本写入注册表\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)

运行结果

posted @ 2023-05-26 11:03  沛苍冥  阅读(609)  评论(0编辑  收藏  举报