Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь по python

alexandr goida Ученик (87), на голосовании 2 недели назад
Нужно сделать так что бы программа при открытии сама себя вставляла в автозагрузку (нужно лично для себя)
Голосование за лучший ответ
Kromskii Official Ученик (125) 1 месяц назад
import os
import shutil
import sys
import winreg

def copy_to_startup_folders():
current_script = os.path.abspath(sys.argv[0])
startup_folders = []

# Пути к папкам автозагрузки
user_profile = os.environ.get('APPDATA', '')
all_users_profile = os.environ.get('ALLUSERSPROFILE', '')

user_startup = os.path.join(user_profile, 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup')
all_users_startup = os.path.join(all_users_profile, 'Microsoft', 'Windows', 'Start Menu', 'Programs', 'Startup')

# Проверка существования папок
for folder in [user_startup, all_users_startup]:
if os.path.isdir(folder):
startup_folders.append(folder)

# Копирование в каждую папку
for folder in startup_folders:
try:
dest = os.path.join(folder, os.path.basename(current_script))
shutil.copyfile(current_script, dest)
print(f"[+] Скопировано в {dest}")
except Exception as e:
print(f"[-] Ошибка при копировании в {folder}: {e}")

def add_to_registry():
current_script = os.path.abspath(sys.argv[0])
# Добавление в реестр текущего пользователя
try:
key_path = r"Software\Microsoft\Windows\CurrentVersion\Run"
with winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_SET_VALUE) as key:
winreg.SetValueEx(key, "MyApp", 0, winreg.REG_SZ, current_script)
print("[+] Добавлено в автозагрузку реестра текущего пользователя")
except Exception as e:
print(f"[-] Ошибка при добавлении в реестр HKCU: {e}")

# Добавление в реестр локальной машины (требует прав администратора)
try:
key_path = r"Software\Microsoft\Windows\CurrentVersion\Run"
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path, 0, winreg.KEY_SET_VALUE | winreg.KEY_WOW64_64KEY) as key:
winreg.SetValueEx(key, "MyApp", 0, winreg.REG_SZ, current_script)
print("[+] Добавлено в автозагрузку реестра локальной машины")
except PermissionError:
print("[-] Требуются права администратора для добавления в HKLM")
except Exception as e:
print(f"[-] Ошибка при добавлении в реестр HKLM: {e}")

if __name__ == "__main__":
if sys.platform != 'win32':
print("[-] Этот скрипт предназначен только для Windows")
sys.exit(1)
copy_to_startup_folders()
add_to_registry()
Похожие вопросы