1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Source Autostart

Dieses Thema im Forum "Releases & Sources" wurde erstellt von Botuser28, 31. Januar 2018.

  1. Botuser28

    Botuser28 Member

    Registriert seit:
    2. Januar 2018
    Beiträge:
    50
    Zustimmungen:
    10
    Punkte für Erfolge:
    8
    Code (Python):
    import getpass
    import os
    import sys

    USER_NAME = getpass.getuser()
    pfadee = os.path.abspath(sys.argv[0])
    def add_to_startup(file_path=""):
        if file_path == "":
            file_path = os.path.dirname(os.path.realpath(__file__))
        bat_path = 'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME
        with open(bat_path + '\\' + "sys.bat", "w+") as bat_file:
            bat_file.write('@echo off')
            bat_file.write('\n')
            bat_file.write('start %s' % pfadee)

    add_to_startup()

    Erklärung:
    Code (Text):

    import getpass
    import os
    import sys
     
    Das sollte klar sein, die Imports

    Code (Text):

    USER_NAME = getpass.getuser()
     
    Hier wird der Nutzername ausgelesen

    Code (Text):

    pfadee = os.path.abspath(sys.argv[0])
     
    Hier wird der Pfad ausgelesen von dem Script was läuft, man kann auch mit __file__ arbeiten, aber dann wird nie die EXE datei ausgegeben, sondern die PY datei in der Exe und es wird nicht der gesamte Pfad ausgegeben sondern nur bsp: Bot.py

    Code (Text):

    bat_path = 'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME
     
    Hiermit holen wir uns den Pfad vom Autostart Ordner

    Code (Text):

    with open(bat_path + '\\' + "sys.bat", "w+") as bat_file:
            bat_file.write('@echo off')
            bat_file.write('\n')
            bat_file.write('start %s' % pfadee)
     
    Mit dem Teil des Scriptes wird eine .bat Datei erstellt, in welche reingeschrieben wird
    Code (Text):
     @echo off
    start (Pfad der auszuführenden Datei)
     
    Auch hier wird wieder die Variable des Pfades verwendet, die Variable wird aber aufgelöst in dem Moment wo in die bat Datei geschrieben wird, d.h. in der bat Datei sind keine Variablen vorhanden, sondern der gesamte Pfad



    Das Script stelle ich hier rein, weil ich selbst relativ lange gebraucht habe bis ich eine vernünftige Lösung gefunden habe, die auch als compilierte exe Datei funktioniert.
    Ich hoffe es hilft euch :)
     
    Zuletzt bearbeitet: 1. Februar 2018
    SilverHazard, SigSegV und 3HMonkey gefällt das.
  2. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    68
    Zustimmungen:
    51
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Ein paar Tipps oder Empfehlungen von mir dazu:
    • Alles, was zur Funktion gehört, sollte in die Funktion rein:
      Der Benutzername und der Pfad werden außerhalb nicht benötigt, also würde ich beide auch in die Funktion verschieben
    • Was die Funktion von außerhalb braucht, sollte ihr auch explizit übergeben werden:
      Du gehst mit file_path in die richtige Richtung, nämlich dass der Pfad angegeben wird, schaust auch, ob der angegebene Pfad vom Default abweicht, und verwendest ihn dann bei der eigentlichen Logik aber nicht weiter.
      Ich würde entweder den Pfad als Parameter übergeben, sodass beliebige Dateien in den Autostart geschoben werden können, oder komplett innerhalb generieren, sodass die Datei der Funktion dort landet
    • Zumindest in meinem Python 3.6.0 funktioniert dein bat_path nicht, weil das "\" nicht escaped wird, ich musste sie entweder durch "\\" ersetzen oder ein r vor den String schreiben (Raw String). Alternativ sollte auch "/" funktionieren, Windows kommt damit eigentlich auch gut klar
    • Warum setzt die die Datei nach dem Starten auf "versteckt"?
    Meine Variante würde so aussehen:
    Code (Python):
    import getpass
    import os
    import sys

    def add_to_startup(file_path = sys.argv[0]):
        username = getpass.getuser()
        bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % username
        with open(bat_path + r'\sys.bat', "w+") as bat_file:
            bat_file.write('@echo off')
            bat_file.write('\n')
            bat_file.write('start %s' % file_path)

    add_to_startup("MyStartup.exe")
     
    CptVince gefällt das.
  3. Botuser28

    Botuser28 Member

    Registriert seit:
    2. Januar 2018
    Beiträge:
    50
    Zustimmungen:
    10
    Punkte für Erfolge:
    8
    ähm *unschuldig guck*
    Das verstecken ist noch aus einem anderen Teil Code ausversehen mit rüber gekommen ^^
    Der Code steht bei mir am Anfang vom Programm und da die Datei dann ausgeführt wird kann sie sich nicht verschieben, daher das batch script welches die Datei immer wieder startet.
    Filecopy funktoniert auch nicht, da man dann ja die Datei in einen anderen Ordner rein kopiert und da ich es bereits erlebt habe, dass Windows dann anfängt die Dateien mit einem (1) (2) (3) usw... zu kennzeichnen würde bei jedem Start eine Datei dazukommen und die Platte würde vermüllt werden...
    Bei der Version mit dem in die Batch schreiben kann das glücklicherweise nicht passieren, da ja bei jedem Start die Datei geleert wird und neu geschrieben wird, d.h. die Platte bleibt sauber ^^
    Ich benutze eigentlich immer nur py 2.7 wie das bei Py 3.6 funktioniert weis ich nicht deshalb
     

Diese Seite empfehlen

Die Seite wird geladen...