Добавить скрипт python в автозагрузку windows

Adding a Python script to windows start up basically means the python script will run as the windows boots up. This can be done by two step process Step 1 Adding script to windows Startup folder After the windows boots up it runs equivalent to double clicking all the application present in

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Adding a Python script to windows start-up basically means the python script will run as the windows boots up. This can be done by two step process –

    Step #1: Adding script to windows Startup folder 
    After the windows boots up it runs (equivalent to double-clicking) all the application present in its startup directory. 

    Address: 

    C:Userscurrent_userAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup 
     

    By default the AppData folder under the current_user is hidden so enable hidden files to get it and paste the shortcut of the script in the given address or the script itself. Also the .PY files default must be set to python IDE else the script may end up opening as a text instead of executing. 

      Step #2: Adding script to windows Registry 
    This process can be risky if not done properly, it involves editing the windows registry key HKEY_CURRENT_USER from the python script itself. This registry contains the list of programs that must run once the user Login. just like few application which pops up when windows starts because the cause change in registry and add their application path to it.

    Registry Path:

    HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

    Below is the Python code : 

    Python3

    import winreg as reg

    import os            

    def AddToRegistry():

        pth = os.path.dirname(os.path.realpath(__file__))

        s_name="mYscript.py"    

        address=os.join(pth,s_name)

        key = HKEY_CURRENT_USER

        key_value = "SoftwareMicrosoftWindowsCurrentVersionRun"

        open = reg.OpenKey(key,key_value,0,reg.KEY_ALL_ACCESS)

        reg.SetValueEx(open,"any_name",0,reg.REG_SZ,address)

        reg.CloseKey(open)

    if __name__=="__main__":

        AddToRegistry()

    Note: Further codes can be added to this script for the task to be performed at every startup and the script must be run as Administrator for the first time.
     

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Adding a Python script to windows start-up basically means the python script will run as the windows boots up. This can be done by two step process –

    Step #1: Adding script to windows Startup folder 
    After the windows boots up it runs (equivalent to double-clicking) all the application present in its startup directory. 

    Address: 

    C:Userscurrent_userAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup 
     

    By default the AppData folder under the current_user is hidden so enable hidden files to get it and paste the shortcut of the script in the given address or the script itself. Also the .PY files default must be set to python IDE else the script may end up opening as a text instead of executing. 

      Step #2: Adding script to windows Registry 
    This process can be risky if not done properly, it involves editing the windows registry key HKEY_CURRENT_USER from the python script itself. This registry contains the list of programs that must run once the user Login. just like few application which pops up when windows starts because the cause change in registry and add their application path to it.

    Registry Path:

    HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

    Below is the Python code : 

    Python3

    import winreg as reg

    import os            

    def AddToRegistry():

        pth = os.path.dirname(os.path.realpath(__file__))

        s_name="mYscript.py"    

        address=os.join(pth,s_name)

        key = HKEY_CURRENT_USER

        key_value = "SoftwareMicrosoftWindowsCurrentVersionRun"

        open = reg.OpenKey(key,key_value,0,reg.KEY_ALL_ACCESS)

        reg.SetValueEx(open,"any_name",0,reg.REG_SZ,address)

        reg.CloseKey(open)

    if __name__=="__main__":

        AddToRegistry()

    Note: Further codes can be added to this script for the task to be performed at every startup and the script must be run as Administrator for the first time.
     

    1. Есть Python скрипт, сделать чтобы он висел в процессах
    2. Добавить его в стартап

    Мне нужно в самом python скрипте. Т.е чтобы при запуске скрипта он сам добавился в автозагрузку, и висел в процессах.

    windows От 7 и старше.

    Прошу помощи.

    jfs's user avatar

    jfs

    51.6k11 золотых знаков105 серебряных знаков302 бронзовых знака

    задан 9 фев 2017 в 20:01

    Pavel Durmanov's user avatar

    Pavel DurmanovPavel Durmanov

    5,6083 золотых знака20 серебряных знаков43 бронзовых знака

    3

    1. Чтобы скрипт висел в процессах необходимо, чтобы он не завершался после запуска. Например, содержал бесконечный цикл

      import time
      while True:
          # your code here
      
          # задержка, чтобы не перегружать процессор
          time.sleep(5)
      
    2. Одним из вариантом добавления Python-скрипта в автозапуск является размещение служебного .cmd-скрипта в папке Автозагрузки (Пуск —> Все программы —> Автозагрузка). Расположенный там исполняемый файл будет запускаться при старте системы.
      Пример скрипта

      rem изменение рабочего каталога скрипта с папки автозагрузки на папку Python-скрипта
      pushd pathtoscriptfolder
      
      rem вызов Python-скрипта
      start python script_name.py
      

    rem возвращение рабочего каталога обратно
    popd

    У скрипта можно создать ярлык и вынести его в удобное место.

    insolor's user avatar

    insolor

    44.1k15 золотых знаков52 серебряных знака92 бронзовых знака

    ответ дан 10 фев 2017 в 6:13

    and1er's user avatar

    3

    Добавление скрипта Python при запуске Windows в основном означает, что скрипт Python будет запускаться при загрузке Windows. Это можно сделать с помощью двухэтапного процесса —

    Шаг №1: Добавление скрипта в папку автозагрузки Windows
    После загрузки Windows запускается (эквивалент двойного щелчка) все приложение, находящееся в его стартовом каталоге.
    Адрес:

    C:Userscurrent_userAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

    По умолчанию папка AppData в текущем_пользователе скрыта, поэтому разрешите скрытым файлам получить ее и вставьте ярлык сценария в указанный адрес или сам сценарий. Также для файлов .PY по умолчанию должна быть установлена среда IDE python, иначе сценарий может открыться как текст вместо выполнения.

    Шаг № 2: Добавление скрипта в реестр Windows
    Этот процесс может быть рискованным, если не будет выполнен должным образом, он включает в себя редактирование ключа реестра Windows HKEY_CURRENT_USER из самого скрипта python. Этот реестр содержит список программ, которые должны запускаться после входа пользователя в систему. точно так же, как некоторые приложения, которые появляются при запуске Windows, потому что вызывают изменение в реестре и добавляют к нему свой путь к приложению.

    Путь к реестру:

    HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

    Ниже приведен код Python:

    import winreg as reg

    import os

    def AddToRegistry():

    pth = os.path.dirname(os.path.realpath(__file__))

    s_name = "mYscript.py"

    address = os.join(pth,s_name)

    key = HKEY_CURRENT_USER

    key_value = "SoftwareMicrosoftWindowsCurrentVersionRun"

    open = reg.OpenKey(key,key_value, 0 ,reg.KEY_ALL_ACCESS)

    reg.SetValueEx( open , "any_name" , 0 ,reg.REG_SZ,address)

    reg.CloseKey( open )

    if __name__ = = "__main__" :

    AddToRegistry()

    Примечание. В этот сценарий можно добавить дополнительные коды, чтобы задача выполнялась при каждом запуске, и сценарий должен запускаться от имени администратора в первый раз.

    Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

    Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение — базовый уровень.

    Appending a Python script to windows start-up basically indicates the python script will run as the windows boots up. This can be accomplished by two step processes —

    Step #1: Appending or Adding script to windows Startup folder

    After booting up of the windows, it executes (equivalent to double-clicking) all the application present in its startup folder or directory.

    Address

    C:Userscurrent_userAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

    By default, the AppData directory or folder under the current_user is hidden that enable hidden files to get it and paste the shortcut of the script in the given address or the script itself. Besides this the .PY files default must be set to python IDE else the script may end up opening as a text instead of executing.

    Step #2: Appending or adding script to windows Registry

    This process may be risky if not accomplished properly, it includes editing the windows registry key HKEY_CURRENT_USER from the python script itself. This registry consists of the list of programs that must execute once the user Login. Registry Path

    HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

    Below is the Python code

    # Python code to append or add current script to the registry
    # module to modify or edit the windows registry
    importwinreg as reg1
    importos

    defAddToRegistry() −

       # in python __file__ is denoeted as the instant of
       # file path where it was run or executed
       # so if it was executed from desktop,
       # then __file__ will be
       # c:userscurrent_userdesktop
       pth1 =os.path.dirname(os.path.realpath(__file__))
       # Python file name with extension
       s_name1="mYscript.py"
       # The file name is joined to end of path address
       address1=os.join(pth1,s_name1)
       # key we want to modify or change is HKEY_CURRENT_USER
       # key value is SoftwareMicrosoftWindowsCurrentVersionRun
       key1 =HKEY_CURRENT_USER
       key_value1 ="SoftwareMicrosoftWindowsCurrentVersionRun"
       # open the key to make modifications or changes to
       open=reg1.OpenKey(key1,key_value1,0,reg1.KEY_ALL_ACCESS)
       # change or modifiy the opened key
       reg1.SetValueEx(open,"any_name",0,reg1.REG_SZ,address1)
       # now close the opened key
       reg1.CloseKey(open)
    # Driver Code
    if__name__=="__main__":
    AddToRegistry()

    Rimush

    Как запустить python скрипт при старте Windows?


    • Вопрос задан

      более трёх лет назад

    • 6143 просмотра


    Комментировать

    Пригласить эксперта


    Ответы на вопрос 3

    dimonchik2013

    Dimonchik

    @dimonchik2013

    non progredi est regredi

    Панель управления — администрирование — планировщик заданий

    все пути — абсолютные, в т.ч. к Питону

    Как я понимаю, надо добавить файл (или ярлык) скрипта в эту папку:

    C:Documents and SettingsAll UsersStart MenuProgramsStartup

    Источник инфы


    Комментировать

    pyinstaller`ом в exe, затем в автозапуск или через планировщик


    Похожие вопросы


    • Показать ещё
      Загружается…

    05 февр. 2023, в 21:58

    2000 руб./за проект

    05 февр. 2023, в 21:43

    2000 руб./за проект

    05 февр. 2023, в 21:04

    500000 руб./за проект

    Минуточку внимания

    Главная страница » Автозапуск программ на python

    Автор Admin На чтение 1 мин Просмотров 267 Опубликовано 30.03.2022

    Автозапуск программ на python

    Автозапуск программ на python. В видео разберём, как добавить программу написанную на python и не только в автозагрузку.

    Мой Telegram канал

    Admin

    Admin

    Профили автора

    Добавить комментарий

    Имя *

    Email *

    Комментарий

    Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.

    Вам также может понравиться

    Работа в Word с помощью Python

    В видео научимся работать в Word с помощью Python.

    0127

    Расшифровка хэша md5 с помощью python

    В видео научимся расшифровывать хэш md5 с помощью python.

    0145

    Добавление текста на изображение с помощью python opencv

    В видео научимся добавлять текст на изображения с помощью

    0132

    Определитель лиц на python

    В видео научимся получать определять лица на фото с

    0109

    На чтение 2 мин Просмотров 570 Опубликовано 04.10.2017

    Содержание

    1. 1. Простой python-scrypt
    2. 2. Создание файла сервиса.
    3. 3. Включение нового добавленного сервиса.
    4. 4. Запуск/Остановка/Статус сервиса

    Иногда требуется какой-то скрипт или программу запускать как системный сервис. Это можно легко провернуть, если в вашем дистрибутиве используется система инициализации и управления демонами — systemd.

    Для примера, я создам простейший python-скрипт который будет слушать 9988 порт и добавлю его в автозагрузку при старте операционной системы.

    1. Простой python-scrypt

    sudo nano /usr/bin/dummy_service.py

    Код скрипта:

    #!/usr/bin/python3
     
    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(("localhost", 9988))
    s.listen(1)
     
    while True:
        conn, addr = s.accept()
        data = conn.recv(1024)
        conn.close()
        my_function_that_handles_data(data)

    2. Создание файла сервиса.

    Теперь создадим файл сервиса для с помощью которого расскажем systemd что нам требуется. Файл должен иметь расширение .service и находиться в директории /lib/systemd/system/

    sudo nano /lib/systemd/system/dummy.service

    Добавим информацию о нашем сервисе (можете изменить местоположение скрипта и описание сервиса):

    [Unit]
    Description=Dummy Service
    After=multi-user.target
    Conflicts=getty@tty1.service
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/python3 /usr/bin/dummy_service.py
    StandardInput=tty-force
    
    [Install]
    WantedBy=multi-user.target

    Мне кажется из содержимого всё и так понятно — какая строка и за что отвечает.

    3. Включение нового добавленного сервиса.

    Вы добавили, наконец-то, ваш сервис в систему. теперь необходимо перезапустить демон systemctl чтобы он прочел новый файл. Каждый раз как вы вносите изменения в .service файлы вам нужно перезапустить демон.

    sudo systemctl daemon-reload

    Теперь включим запуск сервиса при загрузке системы, и запустим сам сервис.

    sudo systemctl enable dummy.service
    sudo systemctl start  dummy.service

    4. Запуск/Остановка/Статус сервиса

    В конце проверим статус нашего нового сервиса:

    sudo systemctl status dummy.service

    Изображение 1Проверим что наш python-скрипт слушает нужный нам порт:

    sudo lsof -i | grep 9988

    Иллюстрация 2Команды для запуска, остановки и перезапуска сервиса:

    sudo systemctl stop dummy.service          #Для остановки сервиса 
    sudo systemctl start dummy.service         #Для запуска сервиса
    sudo systemctl restart dummy.service       #Для перезапуска сервиса

    ( 1 оценка, среднее 5 из 5 )

    Ychenyi

    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    1

    06.03.2021, 16:35. Показов 13377. Ответов 24

    Метки нет (Все метки)


    У меня есть программа (выводит просто пустое окно), скомпилировал в исполняемый файл с помощью pyinstaller
    вот смотрите, предположим сейчас оно открыто, я перезапущу пк и при повторном включении компьютера, нужно будет заново кликать по нему чтобы открыть
    а как сделать так, чтобы если оно было активно, то при перезапуске пк, автоматически открывалось?
    код в программе такой, если нужно:

    Python
    1
    2
    3
    4
    5
    6
    7
    
    import tkinter
    import time
    time.sleep(10)
    master = tkinter.Tk()
    canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
    canvas.pack()
    master.mainloop()

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



    0



    4036 / 2978 / 1074

    Регистрация: 21.03.2016

    Сообщений: 7,504

    06.03.2021, 16:43

    2

    Лучший ответ Сообщение было отмечено Ychenyi как решение

    Решение

    Цитата
    Сообщение от Ychenyi
    Посмотреть сообщение

    а как сделать так, чтобы если оно было активно

    а как оно может быть активно при перезапуске? процесс то будет убит.
    как вариант писать программу проверки которую закидываете в автозапуск. при запуске вашего файла создается текстовый файл где пишется допустим 1 и при закрытии вашей проги в файле перезаписывается 0. тогда программа из автозапуска будет проверять этот файл и если там 1 (был убит процесс а не закрыт вами) то тогда запускать вашу прогу. как это реализовать думайте сами.



    1



    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 16:44

     [ТС]

    3

    Цитата
    Сообщение от Semen-Semenich
    Посмотреть сообщение

    а как оно может быть активно при перезапуске? процесс то будет убит.

    тут я имел ввиду, что если прога активна была ДО перезапуска, то как сделать так, чтобы и после него она включилась самостоятельно



    0



    4036 / 2978 / 1074

    Регистрация: 21.03.2016

    Сообщений: 7,504

    06.03.2021, 16:48

    4

    выше описал алгоритм перезапуска



    0



    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 16:49

     [ТС]

    5

    Semen-Semenich, а можно ли это сделать в коде как нибудь??
    без закидывания в автозапуск?



    0



    Эксперт Python

    5403 / 3827 / 1214

    Регистрация: 28.10.2013

    Сообщений: 9,554

    Записей в блоге: 1

    06.03.2021, 16:52

    6

    Цитата
    Сообщение от Ychenyi
    Посмотреть сообщение

    без закидывания в автозапуск?

    Открой для себя реестр windows, где тоже есть автозапуск и туда также можно записывать любые свои данные. Собственно, приложения на windows так и поступают, сохраняя туда все что им нужно для работы.

    Ну а если у тебя не windows, то ты и так знаешь как планируют запуск приложения в линуксе (или не знаешь?).



    1



    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 16:54

     [ТС]

    7

    Garry Galler, Semen-Semenich, то бишь мне просто нужно файл.exe закинуть туда и он будет каждый раз открываться при запуске ПК или только тогда, когда файл.exe будет убит при перезапуске а не закрыт?



    0



    Эксперт Python

    5403 / 3827 / 1214

    Регистрация: 28.10.2013

    Сообщений: 9,554

    Записей в блоге: 1

    06.03.2021, 17:05

    8

    Цитата
    Сообщение от Ychenyi
    Посмотреть сообщение

    то бишь мне просто нужно файл.exe закинуть туда

    Нет Ты должен написать код. Реестр это не папка… и даже не мамка.



    0



    4036 / 2978 / 1074

    Регистрация: 21.03.2016

    Сообщений: 7,504

    06.03.2021, 17:06

    9

    Garry Galler, просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно.



    1



    Ychenyi

    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 17:45

     [ТС]

    10

    Garry Galler, код в этом же файле, где и основной код?

    Добавлено через 11 секунд

    Цитата
    Сообщение от Semen-Semenich
    Посмотреть сообщение

    просто прогу в автозапуск ему не катит. я так понял если прога работала и комп перезапустили то и прога должна запуститься а если не работала то и не должна. автозапуск будет ее запускать постоянно.

    все верно

    Добавлено через 16 минут

    Цитата
    Сообщение от Semen-Semenich
    Посмотреть сообщение

    и при закрытии вашей проги

    а как это именно в коде проверить??

    Добавлено через 18 минут
    Semen-Semenich, Garry Galler,
    вообщем , пытаюсь сделать так
    вопрос, как написать закрытие файла в

    Код

    else

    ?

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    import tkinter
    file = open("test.txt", "w")
    firstLine = file.readline()
    if firstLine == 1:
        continue
    else:
        
    file.write(1)
    master = tkinter.Tk()
    canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
    file.close()
    canvas.pack()
    master.mainloop()



    0



    3679 / 2259 / 490

    Регистрация: 07.11.2019

    Сообщений: 3,815

    06.03.2021, 17:46

    11

    Лучший ответ Сообщение было отмечено Ychenyi как решение

    Решение

    Semen-Semenich, такой вариант:
    программа стартанула, записала себя в автозапуск, перед «нормальным» завершением работы программы она удалила себя из автозапуска.



    1



    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 17:48

     [ТС]

    12

    а хотя, при первом запуске там же пустая строка, и поэтому он даже не откроется
    а если проверку сунуть после записи единицы, то при перезапуске пк, сначала единица опять запишется , а потом проверка и будет единица всегда
    помогите пожалуйста написать , чтобы работало

    Добавлено через 1 минуту
    u235, а как сделать так чтобы она себя туда записала и удалила?



    0



    Garry Galler

    Эксперт Python

    5403 / 3827 / 1214

    Регистрация: 28.10.2013

    Сообщений: 9,554

    Записей в блоге: 1

    06.03.2021, 17:56

    13

    Цитата
    Сообщение от Ychenyi
    Посмотреть сообщение

    а как сделать так чтобы она себя туда записала и удалила?

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    import atexit
    import time
     
    # эта функция будет вызвана только при нормальном завершении процесса
    def goodbye(name, adjective):
        # удалить себя из ветки автозапуска
        # здесь какой-то код удаления записи из реестра
        print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
     
    # зарегать 
    atexit.register(goodbye, 'Donny', 'nice')
     
     
    # здесь нужно написать код записи проги в autorun реестра
     
     
    # работа программы
    while 1:
        time.sleep(2)



    2



    Semen-Semenich

    4036 / 2978 / 1074

    Регистрация: 21.03.2016

    Сообщений: 7,504

    06.03.2021, 17:57

    14

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    import tkinter
    import time
     
    def fun(master = None, flag = '0'):
        with open('file_flag.txt','w') as f:
            f.write(flag)
        if flag == '1' and master:
            master.destroy()
            
    fun()
     
    time.sleep(10)
    master = tkinter.Tk()
    master.protocol('WM_DELETE_WINDOW', lambda : fun(master, '1'))
    canvas = tkinter.Canvas(master, bg='blue', height=300, width=600)
    canvas.pack()
    master.mainloop()

    если окно закрыть крестиком то в файле будет 1 а если убить процесс то в файле будет 0. теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск



    1



    Эксперт Python

    5403 / 3827 / 1214

    Регистрация: 28.10.2013

    Сообщений: 9,554

    Записей в блоге: 1

    06.03.2021, 18:05

    15

    Ну или как у Semen-Semenich, что почти тоже самое, только через оконные события.

    Цитата
    Сообщение от Semen-Semenich
    Посмотреть сообщение

    теперь пишете скрипт который читает этот файл и если там 1 то запускает этот. скрипт прописываете в автозапуск

    А зачем такие сложности? Сама прога и должна писать себя в реестр и удалять себя же. Или я не понял?



    0



    4036 / 2978 / 1074

    Регистрация: 21.03.2016

    Сообщений: 7,504

    06.03.2021, 18:09

    16

    Garry Galler, я тоже сразу ваш вариант не понял. получается при запуске прога прописывается в автозапуск если прога завершена корректно то удаляет себя из автозапуска. так конечно проще. просто с таким еще не сталкивался и не в курсе про atexit и написал свой велосипед. пойду изучать этот модуль.



    0



    194 / 160 / 41

    Регистрация: 13.05.2019

    Сообщений: 828

    06.03.2021, 18:11

    17

    Кидай экзешник в папку по этому пути: C:UsersuserAppDataRoamingMicrosoftWindowsSt art MenuProgramsStartup
    user замени на свой



    0



    38 / 39 / 7

    Регистрация: 13.11.2020

    Сообщений: 678

    06.03.2021, 18:15

     [ТС]

    18

    Matrix3007, и все??



    0



    194 / 160 / 41

    Регистрация: 13.05.2019

    Сообщений: 828

    06.03.2021, 18:23

    19

    Ychenyi, Я не пробовал. Попробуй, потом отпишись.



    0



    Garry Galler

    Эксперт Python

    5403 / 3827 / 1214

    Регистрация: 28.10.2013

    Сообщений: 9,554

    Записей в блоге: 1

    06.03.2021, 18:43

    20

    Лучший ответ Сообщение было отмечено Ychenyi как решение

    Решение

    Python
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    
    import atexit
    import time
     
    import winreg as reg  
    import os              
     
    def DeleteFromRegistry(value): 
        # key we want to change is HKEY_CURRENT_USER  
        # key value is SoftwareMicrosoftWindowsCurrentVersionRun 
        hive = reg.HKEY_CURRENT_USER 
        subKey = r"SoftwareMicrosoftWindowsCurrentVersionRun"
          
        # open the key to make changes to 
        hKey = reg.OpenKey(hive, subKey, 0,reg.KEY_ALL_ACCESS) 
     
        reg.DeleteValue(hKey, value)
        
        # now close the opened key 
        reg.CloseKey(hKey) 
     
    def AddToRegistry(value): 
      
        # in python __file__ is the instant of 
        # file path where it was executed  
        # so if it was executed from desktop, 
        # then __file__ will be  
        # c:userscurrent_userdesktop 
        script = os.path.realpath(__file__) 
        # joins the file name to end of path address 
        address = f"python.exe {script}"  
          
        # key we want to change is HKEY_CURRENT_USER  
        # key value is SoftwareMicrosoftWindowsCurrentVersionRun 
        hive = reg.HKEY_CURRENT_USER 
        subKey = r"SoftwareMicrosoftWindowsCurrentVersionRun"
          
        # open the key to make changes to 
        hKey = reg.OpenKey(hive, subKey ,0,reg.KEY_ALL_ACCESS) 
          
        # modifiy the opened key 
        reg.SetValueEx(hKey, value, 0,reg.REG_SZ,address) 
          
        # now close the opened key 
        reg.CloseKey(hKey) 
     
     
    def goodbye(name, adjective):
        DeleteFromRegistry("MyScript")
        print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
     
     
    atexit.register(goodbye, "MyScript", 'nice')
    AddToRegistry("MyScript")
     
    #---------------------------------------
    x = 0
     
    # пока прога работает - 30 секунд - она в автозапуске; как только завершается (корректно) - ее там уже нет.
    while x < 30:
        time.sleep(1)
        x+=1

    Добавлено через 2 минуты
    Matrix3007,
    Зачем давать неправильный совет? ТС-у не нужен просто автозапуск. Ему нужен автозапуск по условию.



    1



    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    06.03.2021, 18:43

    20

    Осуществить данную задачу можно двумя путями, первый состоит в том, чтобы записать значение в реестр (HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun), здесь подробно описан данный метод. Однако при этом нам будет необходимо разрешение на запись в реестр, и чтобы его получить придется постараться.

    Второй путь проще и не требует особых привилегий программе, для этого необходимо создать ярлык программы в C:UsersUserNameAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup (путь для Windows 7).

    Ниже показан код, позволяющий это сделать, при этом создается ярлык на исполняемый файл и сохраняется в выше указанную папку, и при желании его от туда можно убрать.

    import winshell
    
    import os
    import sys

    def set_startup():
    try:
    # get path and file name for application
    startFile = os.path.abspath(sys.argv[0])
    # get startup folder
    startup=winshell.startup()
    # create shortcut in startup folder
    winshell.CreateShortcut (
    Path=os.path.join (startup, "application.lnk"),
    Target=startFile,
    Icon=(startFile, 0),
    Description="My application",
    StartIn=os.path.abspath(None)
    )
    except :
    pass

    def remove_startup():
    try:
    startup=winshell.startup()
    # remove shortcut from startup folder
    if os.path.isfile(startup + '\application.lnk'):
    os.remove(startup + '\application.lnk')
    except :
    pass

    В коде использован пакет winshell, позволяющий получать доступ к специальным папкам Windows.

    Понравилась статья? Поделить с друзьями:

    Вот еще несколько интересных статей:

  • Добавить ярлык удаленного рабочего стола windows 10
  • Добавить символ рубля в windows 7
  • Добавить ярлык выключения на рабочий стол windows 10
  • Добавить сетевой диск в windows 10 командная строка
  • Добавить сетевой диск в windows 10 cmd

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии