автозапуск программы python
есть программа, скомпилированная далее в .exe файл
пытаюсь сделать так, чтобы если оно было активно, то при перезапуске пк, автоматически открывалось
придумал такой вариант:
программа стартанула, записала себя в автозапуск, перед "нормальным" завершением работы программы она удалила себя из автозапуска.
как сделать так, чтобы программа сама себя добавила в автозапуск и при нормальном завершении удалила себя оттуда?
код программы:
import tkinter
master = tkinter.Tk()
canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
canvas.pack()
master.mainloop()
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
Например так:
import sys
import os
import tkinter
path = sys.argv[0]
file_name = path.split('\\')[-1]
startup_path = '"%Appdata%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"'
os.system(f'copy {path} {startup_path}') # копируем себя
root = tkinter.Tk()
root.mainloop()
os.system(f'del {startup_path+file_name}') # удаляем себя
Автор решения: Sonter
→ Ссылка
Вот удобная функция:
import os
import winshell
from win32com.client import Dispatch
def make_shortcut(name, target, path_to_save, w_dir='default', icon='default'):
print('make_shortcut')
if path_to_save == 'desktop':
'''Saving on desktop'''
# Соединяем пути, с учётом разных операционок.
path = os.path.join(winshell.desktop(), str(name) + '.lnk')
elif path_to_save == 'startup':
'''Adding to startup (windows)'''
user = os.path.expanduser('~')
path_to_save = os.path.join(r"%s/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/" % user,
str(name) + '.lnk')
else:
path_to_save = os.path.join(path_to_save, str(name) + '.lnk')
if icon == 'default':
icon = target
if w_dir == 'default':
w_dir = os.path.dirname(target)
# С помощью метода Dispatch, объявляем работу с Wscript
# (работа с ярлыками, реестром и прочей системной информацией в windows)
shell = Dispatch('WScript.Shell')
# Создаём ярлык.
shortcut = shell.CreateShortCut(path_to_save)
# Путь к файлу, к которому делаем ярлык.
shortcut.Targetpath = target
# Путь к рабочей папке.
shortcut.WorkingDirectory = w_dir
# Используем иконку.
shortcut.IconLocation = icon
# Cохраняем ярлык.
shortcut.save()