首页 > 系统相关 >如何让python程序在windows下开机启动

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

时间:2023-05-26 11:11:18浏览次数:42  
标签:启动 python 示例 startup windows import 开机 path os

说明

简述:通过将启动脚本写入注册表\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)

运行结果

标签:启动,python,示例,startup,windows,import,开机,path,os
From: https://www.cnblogs.com/shikyo/p/17434205.html

相关文章

  • Python工具箱系列(三十三)
    Timescaledb在物联网时代,出现了大量以时间为中心海量产生的传感器数据,称为时序数据。这类数据的特点是:数据记录总有一个时间戳。数据几乎总是追加,不更新也不删除。大量使用近期的数据。很少更新或者回填时间间隔的缺失数据。与时间间隔频率关系不大。但累积的数据量大,可能会有峰值......
  • python升级pip失败的最终解决办法
    玩点python卡在pip安装包上了,我用的是pycharm,在它的交互命令行里使用python-mpipinstall--upgradepip始终报错!Traceback(mostrecentcalllast):File"d:\soft\python3.7\lib\site-packages\pip\_vendor\urllib3\response.py",line331,in_error_catcheryield......
  • Python工具箱系列(三十三)
    Timescaledb在物联网时代,出现了大量以时间为中心海量产生的传感器数据,称为时序数据。这类数据的特点是:数据记录总有一个时间戳。数据几乎总是追加,不更新也不删除。大量使用近期的数据。很少更新或者回填时间间隔的缺失数据。与时间间隔频率关系不大。但累积的数据量......
  • Python图片与Base64相互转换
    importbase64#必须的pic=open("img.png","rb")#读取本地文件pic_base=base64.b64encode(pic.read())#本地文件转Base64数据,此时会出现编码带b'' 的情况pic_base=pic_base.decode('utf-8')#修正格式pic.close()#关闭importbase64pic=open("img.png&q......
  • Python 函数重载
    函数重载是指可以使用相同的函数名,但是函数参数类型和/或数量不同的多个函数。Python不支持函数重载,因为Python是一种动态类型语言,函数参数类型不需要在代码中声明,并且Python中的函数参数数量也可以是可变的。这意味着在同一个作用域内定义两个或两个以上具有相同名称但参数......
  • 疑难杂症(已解决) | 为什么出现python中tkinter创建界面需要一闪而过才进入主窗口?
    一、具体问题如图所示,我编写了一个主窗口的程序(如下所示,有兴趣的可以自己复制后运行),发现需要先进入第一个窗口再进入主界面,这不符合逻辑。 代码区域(完整代码):fromtkinterimport*classWinGUI(Tk):def__init__(self):super().__init__()self......
  • Windows——on-screen menus are locked怎么解除
    出现OSDLOCKED是菜单被锁的,具体的清除方法如下:1、如果OSD已锁定,请持续按住Menu按钮(最左边第一个)10秒钟就可以解除锁定OSD。2、如果OSD未锁定,请持续按住Menu按钮10秒钟就可以锁定OSD。 简介:OSD是OnScreenDisplay的缩写,即屏幕菜单式调节显示。是在显示器......
  • windows server2016 操作系统修改默认远程端口
    一、需求   远程端口,windows默认的3389.linux的22,这种都是知名端口,如果IP地址暴露,很可能会被攻击,这时候就需要更改端口号。二、操作步骤2.1打开注册表   快捷键WIN+R,命令行窗口输入regedit2.2进入以下路径  这里是默认端口,修改为自己除1024以后,以及未被......
  • Python 数据库Insert语句脚本生成工具(SQL Server)
    编写这个小工具,是因为平时部署项目的时候,需要导出一些公共的数据(权限、参数设置等),覆盖插入正式环境。话不多说,直接上代码:importpyodbcimportwarningsimportdecimalimportwinregimportosimportconfigparserimporttimeimportdatetimewarnings.filterwarnings('igno......
  • python 判断列表是否为空
    python判断列表是否为空]'''判断列表是否为空'''if['a']:#不能写isTrueprint("不为空")if['a']isnotFalse:#等价于上面print("不为空")if[]:#不能写isprint("不为空")else:prin......