Seite 1 von 1

Verknüpfung erstellen "ausführen in"

Verfasst: Dienstag 1. Januar 2008, 21:50
von Frank aka Ch3ck3r
Hi Community.

Ich habe mir ein Programm geschrieben dass vor dem Start eines Spieles einige optionen in der Registry ändert. Das funktioniert schon ganz wundertbar allerdings habe ich ein Problem.

Wenn ich das spiel nun über subprocess oder os.spawn* starte bekomme ich die nachricht "... hat ein Problem festgestellt und muss beendet werden".

Nach einigen versuchen mit batch dateien und allem möglichen habe ich es dann geschafft das spiel über python zu starten in dem ich die Verknüpfung aufrufe.

Das Problem ist das diese Verknüpfung bei mir zwar existiert, wenn ich das Programm allerdings z.b. an meinen Freund schicke hat er die Verknüpfung vielleicht nicht. Also habe ich eine Verknüpfung erstellt

Code: Alles auswählen

import os,sys,win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
link = shell.CreateShortcut(r"wwp.lnk")
link.TargetPath = r"C:\Programme..."
link.Save()
Allerdings funktioniert diese Verknüpfung nicht. Sie wird erstellt und ist "richtig". Beim ausführen kommt allerdings wieder der Fehler "... hat ein problem festgestellt.."

Der einzige Unterschied zwischen dieser Verknüpfung und der anderen (mit der es funktioniert) ist, das bei der, bei der es funktioniert im feld "Ausführen in" etwas steht.

Wie kann ich also eine Verknüpfung erzeugen die nicht nur Ziel hat sondern auch Ausführen in hat?

Verfasst: Dienstag 1. Januar 2008, 22:10
von Nicht_zu_definieren

Code: Alles auswählen

link.WorkingDirectory = r"C:\Programm\Fubar"
ist vermutlich das was du suchst ;)

Verfasst: Dienstag 1. Januar 2008, 22:33
von Frank aka Ch3ck3r
Danke genau das ist es

:P

Verfasst: Mittwoch 2. Januar 2008, 13:19
von lunar
Den selben Effekt kannst du übrigens auch erreichen, indem du der Popen Funktion aus dem Subprocess Modul das Argument "cwd" mit auf den Weg gibst:

Code: Alles auswählen

subprocess.Popen(['/Pfad/zu/meinem/Spiel'], cwd='/Pfad/zum/Spielverzeichnis')
Das sollte den Fehler auch beheben, und ist allgemein eleganter als der Umweg über die Verknüpfung.