Ich habe mir ein kleines Python Programm geschrieben und möchte nun, dass sich dieses - wenn ich es so in meinem Einstellungsmenü festlege - automatisch zusammen mit Windows startet.
Deshalb möchte ich, dass mein Programm automatisch eine Verknüpfung in die Windows Registry erstellt, damit ich das nicht manuell machen muss.
Ich hab bis jetzt nichts dazu gefunden. Kann mir jemand helfen?
Wie kopiere ich mein script in die Windows Registry?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Reicht nich eine Verknüpfung in Autostart?
In der Registry gibt es meherere Orte, wo Autostart-Programme zu finden sind:
In der Registry gibt es meherere Orte, wo Autostart-Programme zu finden sind:
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKCU\Software\Microsoft\Windows\CurrentVersion\Run
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ok, stimmt, ist vielleicht sicherer, wenn ich nur eine Verknüpfung in Autostart erstelle.
Gibt es da schon fertige Funktionen oder Beispiel-Scripts dafür? Hab bis jetzt eigentlich nichts gefunden.
Gibt es da schon fertige Funktionen oder Beispiel-Scripts dafür? Hab bis jetzt eigentlich nichts gefunden.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es gibt dafür mehrere Möglichkeiten, für beide brauchst du pywin32 (formerly known as win32all).Anonymous hat geschrieben:Gibt es da schon fertige Funktionen oder Beispiel-Scripts dafür?
Also:
- mit WScript.Shell
- mit winshell (sieht auf den ersten Blick bequemer aus)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ok, danke, das hilft mir schon weiter.
Hab jetzt allerdings noch ne ziemliche Dummy-Frage
also ich hab zum ersten mal aus meinem Python script eine ausführbare .exe-Datei gemacht und ich darf sie ja nicht einfach in Autostart kopieren, sondern muss eine Verknüpfung erstellen.
Hmm, jetzt frag ich mich, wie man das macht ...
Hab jetzt allerdings noch ne ziemliche Dummy-Frage

also ich hab zum ersten mal aus meinem Python script eine ausführbare .exe-Datei gemacht und ich darf sie ja nicht einfach in Autostart kopieren, sondern muss eine Verknüpfung erstellen.
Hmm, jetzt frag ich mich, wie man das macht ...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Naja, an sich dürftest du auch die EXE in Autostart kopieren.. ist aber unüblich, stimmt.Kathrin hat geschrieben:also ich hab zum ersten mal aus meinem Python script eine ausführbare .exe-Datei gemacht und ich darf sie ja nicht einfach in Autostart kopieren, sondern muss eine Verknüpfung erstellen.
Hmm, jetzt frag ich mich, wie man das macht ...
Was meinst du mit, "wie man eine Verknüpfung macht"? Per Hand oder mit Python? Für eine Python-Lösung habe ich dir einige Links gegeben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich denke eine Verknüpfung kann man auch per Hand erstellen. IMHO ist es nur eine Text-Datei mit der Endung .lnk.... Wie so eine Aussieht, weiß ich aber jetzt nicht...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das Format einer .lnk-Datei ist binär, also würde ich vom "per Hand erstellen" Abstand nehmen.
Zum Anlegen per Hand, Du ziehst ein Icon mit der rechten Maustaste in den passeden (Autostart) Ordner und wärlst dort "Verknüpfung hier erstellen". Alternativ auch in den Ordner rechtsklicken und dort unter "Neu" -> "Verknüpfung" auswählen und vom Assistenten (auch als Wizard bekannt
) durch die Dialoge leiten lassen.
Zum Anlegen per Hand, Du ziehst ein Icon mit der rechten Maustaste in den passeden (Autostart) Ordner und wärlst dort "Verknüpfung hier erstellen". Alternativ auch in den Ordner rechtsklicken und dort unter "Neu" -> "Verknüpfung" auswählen und vom Assistenten (auch als Wizard bekannt

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
also ich habs jetzt hinbekommen mit Hilfe von winshell eine Verknüfung zu erstellen (Danke schonmal!)
... Problem ist nur, dass mein Programm nicht mehr komplett läuft, wenn ich es im autostart ausführe.
Ich habe meine exe-Datei mit py2exe erstellt und nun einen Ordner in dem alle benötigten Dateien sowie die exe-Datei selbst enthalten sind. Muss ich da beim Verknüpfen etwas besonders beachten? Wenn ich manuell eine Verknüpfung erstelle, muss ich ja auch nur eine Verknüpfung zur exe-Datei erstellen und mein Programm läuft.
Kann mir jemand sagen warum es mit winshell nicht klappt?
... Problem ist nur, dass mein Programm nicht mehr komplett läuft, wenn ich es im autostart ausführe.
Ich habe meine exe-Datei mit py2exe erstellt und nun einen Ordner in dem alle benötigten Dateien sowie die exe-Datei selbst enthalten sind. Muss ich da beim Verknüpfen etwas besonders beachten? Wenn ich manuell eine Verknüpfung erstelle, muss ich ja auch nur eine Verknüpfung zur exe-Datei erstellen und mein Programm läuft.
Kann mir jemand sagen warum es mit winshell nicht klappt?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!Anonymous hat geschrieben:Wenn ich manuell eine Verknüpfung erstelle, muss ich ja auch nur eine Verknüpfung zur exe-Datei erstellen und mein Programm läuft. Kann mir jemand sagen warum es mit winshell nicht klappt?
Wenn du manuell eine Verküpfung erstellst, dann wir automatisch der Ordner des verknüpften Programmes zum Arbeitsordner. Vielleicht kannst du mit "winshell" der Verknüpfung auch den Arbeitsordner (=ausführen in) übergeben.
Schau dir mal mit
Code: Alles auswählen
dir(winshell.CreateShortcut)
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hier ein Auszug aus der MSDN-Library: Vorsicht Visual Basic Script.
Zumindest interessant, wenn man den Shortcut mit dem Windows Scripting Host erstellt.
mfg
Gerold

Code: Alles auswählen
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "Ctrl+Alt+e"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
set oUrlLink = WshShell.CreateShortcut(strDesktop & "\Microsoft Web Site.url")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke für die Hilfe!
Habs jetzt folgendermaßen hinbekommen, falls es jemanden interessiert:
Jetzt suche ich nur noch nach einer Möglichkeit meinen Link wieder zu löschen (vielleicht auch mit winshell)
MfG,
Kathrin!
Habs jetzt folgendermaßen hinbekommen, falls es jemanden interessiert:
Code: Alles auswählen
import winshell
autostartDirectory = winshell.startup (1)
winshell.CreateShortcut (
Path=os.path.join (autostartDirectory, "myProg.exe.lnk"),
Target=r"c:\tests\myProg.exe",
Icon=(r"c:\tests\myProg.exe", 0),
Description="Link to myProg.exe",
StartIn="c:\tests"
MfG,
Kathrin!
Zuletzt geändert von Kathrin am Mittwoch 4. Januar 2006, 16:39, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Kathrin!Kathrin hat geschrieben:Jetzt suche ich nur noch nach einer Möglichkeit meinen Link wieder zu löschen (vielleicht auch mit winshell)
So ein Link ist ja nur eine einfache Datei. Dateien kannst du mit
Code: Alles auswählen
os.remove()
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
das hab ich mir eigentlich auch so gedacht, hat aber nicht geklappt.
(Normalerweise verwende ich auch os.remove)
OK, dann weiß ich wenigstens, dass es doch so funktionieren müsste ... vielleicht hat sich ein blöder Syntx-Fehler oder so reingeschlichen.
Danke!

(Normalerweise verwende ich auch os.remove)
OK, dann weiß ich wenigstens, dass es doch so funktionieren müsste ... vielleicht hat sich ein blöder Syntx-Fehler oder so reingeschlichen.
Danke!

- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Kathrin!Kathrin hat geschrieben: OK, dann weiß ich wenigstens, dass es doch so funktionieren müsste ... vielleicht hat sich ein blöder Syntx-Fehler oder so reingeschlichen.
So sollte es eigentlich funktionieren:
Code: Alles auswählen
os.remove(os.path.join(autostartDirectory, "myProg.exe.lnk"))
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich bekomme leider fogende Fehlermeldung

Code: Alles auswählen
OSError: [Errno 13] Permission denied: 'C:\\Dokumente und Einstellungen\\All Users\\Startmen\xfc\\Programme\\Autostart\\MyProg.exe.lnk'

- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hmmmh...Kathrin hat geschrieben:Ich bekomme leider fogende Fehlermeldung
OSError: [Errno 13] Permission denied: 'C:\\Dokumente und Einstellungen\\All Users\\Startmen\xfc\\Programme\\Autostart\\MyProg.exe.lnk'
In "C:\Dokumente und Einstellungen\All Users" dürfen nur Administratoren und evt. noch Hauptbenutzer etwas löschen. Vielleicht liegt es daran.
Am *os.remove()* liegt es nicht. Ich habe es soeben mit Win2000 ausprobiert. Ich konnte damit einen Link aus dem oben genannten Ordner löschen.
mfg
Gerold

http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Also daran liegt es nicht. Hab eigentlich volle admin Rechte.In "C:\Dokumente und Einstellungen\All Users" dürfen nur Administratoren und evt. noch Hauptbenutzer etwas löschen. Vielleicht liegt es daran.
Und manuell kann ich den Link auch löschen.
Versteh momentan auch überhauptnicht, warum mir das Löschen verweigert wird.

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Versuche mal mit sysinternal's ProcessExplorer nach zu sehen, ob eine Handle noch auf die Datei weißt: http://support.microsoft.com/kb/q232830/Kathrin hat geschrieben:Versteh momentan auch überhauptnicht, warum mir das Löschen verweigert wird.