Seite 1 von 1

Autostart unter Windows

Verfasst: Sonntag 12. August 2007, 19:21
von veers
Ich füge meine Programm gerade eine Autostart Funktion dazu. Unter GNU/Linux geht das ja herrlich einfach: http://standards.freedesktop.org/autost ... atest.html
Gibt es unter Windows etwas vergleichbares?

http://www.python-forum.de/topic-4792.h ... =autostart
Hier wird das ganze ja mit einer externen lib gemacht. Ich wäre jedoch froh wenn das ganze auch ohne eine weitere Abhängigkeit auskommen würde.

Ich brauche die folgenden Operationen:
Autostart Verknüpfung erstellen.
Prüfen ob Autostart Verknüpfung besteht.
Autostart Verknüpfung entfernen.

Re: Autostart unter Windows

Verfasst: Sonntag 12. August 2007, 19:56
von gerold
veers hat geschrieben:Ich brauche die folgenden Operationen:
Autostart Verknüpfung erstellen.
Prüfen ob Autostart Verknüpfung besteht.
Autostart Verknüpfung entfernen.
Hallo veers!

Entweder du legst eine Verknüpfung in den Autostart-Ordner des Startmenüs oder du legst einen Eintrag in die Registry.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
Die Schlüssel vom Typ Zeichenfolge (REG_SZ) werden beim Starten in alphabetischer Reihenfolge abgearbeitet und automatisch gelöscht.

Wie solche Einträge aussehen können, siehst du, wenn du dir den Registry-Ordner
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
ansiehst.

"regedit" heißt das Programm dafür.

Viele Setup-Programme bieten die Möglichkeit, beim Setup so einen Registry-Eintrag zu erstellen. Ansonsten kannst du ja auch mit dem mitgelieferten Python-Modul "_winreg" arbeiten.

EDIT:

Das hier sollte evt. noch Fragen beantworten: http://www.python-forum.de/topic-4792.html

mfg
Gerold
:-)

Re: Autostart unter Windows

Verfasst: Sonntag 12. August 2007, 20:20
von veers
gerold hat geschrieben: Hallo veers!

Entweder du legst eine Verknüpfung in den Autostart-Ordner des Startmenüs oder du legst einen Eintrag in die Registry.
Das tönt ähnlich der freedesktop Lösung, das ist soweit schon einmal gut. Nur wie finde ich diesen Ordner (die sind ja bei Windows bis Vista sogar lokalisiert O_o)? Und gibt es einen einfach weg solche Verknüpfungen aus einem Python Programm heraus zu erstellen? Ich vermute sehr schwer das es mit os.(sym)link nicht geht. Naja notfalls könnte ich wohl eine Batchdatei erstellen.

Ich würde das ganzen gerne in ein Modul packen und dann vergessen.

Dank und Gruss,
Jonas

Edit:
Bei MSDN finde ich das ganze auch nur für .NET

Re: Autostart unter Windows

Verfasst: Sonntag 12. August 2007, 20:30
von Leonidas
gerold hat geschrieben:Entweder du legst eine Verknüpfung in den Autostart-Ordner des Startmenüs oder du legst einen Eintrag in die Registry.
Hängt ab, wie du die Einträge anlegen willst, veers. Wenn ein Setup-Programm im Spiel ist, dann kann es recht einfach in den Autostart-Ordner eine Verknüpfung reinschreiben. Aus Python-Ebene ist es schwieriger, denn dazu müsste man entweder das Programm in den Ordner kopierten (ist aber nur bei Programmen die aus einer EXE-Datei bestehen eine brauchbare Möglichkeit) oder dort eine LNK-Datei anlegen, im Windows Slang "Verknüpfung" genannt. Verknüpfungen kannst du mit pywin32 anlegen, über ctypes könnte das womöglich auch gehen, das COM-Interface heißt jedenfalls IShellLink. Die dritte Möglichkeit ist es, eine BAT/CMD-Batchdatei in den Autostart-Ordner zu schreiben - aber da blinkt zumindest mal ein DOS-Fenster auf, das ist nicht ganz so schön.

Alos ist es unter Python eher gangbar, in die Registry zu schreiben, so wie Gerold beschrieben hat.

Verfasst: Sonntag 12. August 2007, 21:21
von veers
Gut, ich denke ich habe es nun mit der Registry gelöst. Nun muss ich das ganze dann nur noch testen :lol: