利用python+tkinter设置小程序的开机启动

参考博客:https://blog.csdn.net/weixin_43903378/article/details/94392277

设置开机启动有两种方式(我所知道的):
1、修改注册表
2、在系统文件夹的开始菜单文件下,如果找不到可以看这个,教程在这里

这里我用了第二个方法,并以tkinter作为媒介写了一个菜单窗口,在设置选项里面,上源码:

import sys
import tkinter
import os
import pythoncom
from win32com.shell import shell

def boot():
    global btstart
    if btstart.get() == True:  # 开机启动
        set_shortcut()
    else:  # 未勾选
        if os.path.exists('C:/Users/xxxxx/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/文件名.exe.lnk'):   # 将xxxxx改成自己的文件夹目录,或者改成C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\文件名,下同理
            os.remove('C:/Users/xxxxx/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/文件名.exe.lnk')   
def set_shortcut(): 
    try:
        filename = sys.argv[0]
        lnkname = r"C:/Users/xxx/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup" + r"/文件名.exe.lnk"  # 将要在此路径创建快捷方式

        shortcut = pythoncom.CoCreateInstance(
            shell.CLSID_ShellLink, None,
            pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)
        shortcut.SetPath(filename)

        shortcut.SetWorkingDirectory(os.path.dirname(os.path.realpath(sys.argv[0]))) 
        if os.path.splitext(lnkname)[-1] != '.lnk':
            lnkname += ".lnk"
        shortcut.QueryInterface(pythoncom.IID_IPersistFile).Save(lnkname, 0)

        return True
    except Exception as e:
        print(e.args)
        return False

win = tkinter.Tk()
menu = tkinter.Menu(win)
btstart = tkinter.BooleanVar()
setting = tkinter.Menu(menu,tearoff=False)
setting.add_checkbutton(label=u'开机启动',command=boot,variable=btstart)
menu.add_cascade(label='设置',menu=setting)
win.config(menu=menu)
win.mainloop()

当然,以上的开机菜单最好改成所有用户的菜单,电脑不同的话,用户(也可以通过getpass库的getuser方法获取当前用户名,不用获取管理员权限)也不一样,也就是百度经验中的第二种方法。(此时必须要用管理员方式打开,否则拒绝访问)

你可能感兴趣的:(自学旅程,Python相关)