Autostart unter Windows

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Sonntag 12. August 2007, 19:21

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Sonntag 12. August 2007, 19:56

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Sonntag 12. August 2007, 20:20

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 12. August 2007, 20:30

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Sonntag 12. August 2007, 21:21

Gut, ich denke ich habe es nun mit der Registry gelöst. Nun muss ich das ganze dann nur noch testen :lol:
Antworten