Code: Alles auswählen
import sys, os
filename = "script.py"
folder = sys.argv[0].rstrip(filename)
os.chdir(folder)
Code: Alles auswählen
import sys, os
filename = "script.py"
folder = sys.argv[0].rstrip(filename)
os.chdir(folder)
Code: Alles auswählen
import os, sys
folder = os.path.dirname(os.path.abspath(sys.argv[0]))
Ne, aber von so einer Lösung hat auch niemand gesprochen. Keine Ahnung wie du nun auf sowas kommst.ice2k3 hat geschrieben:Und das soll dann ein gute Lösung sein?!
Nein. Es ist eigentlich nie gängig, dass das Programm sein Working Directory einfach so ändert. Der User hat das Programm in einem bestimmten Ordner gestartet und damit höcstwarscheinlich irgendetwas damit bezweckt, daher wäre es schlecht wenn das Programm eigenwillig entscheidet dass es doch lieber ein anderes Working Directory hätte.ice2k3 hat geschrieben:Ist das so gängig, aus sys.argv den Ordner zu lesen und diesen dann als "Working-Dir" zu setzen?
Ganz ehrlich, wie oft muss ich das denn noch sagen?!ice2k3 hat geschrieben: b) Nicht der Benutzer ruft es aus einem anderen Verzeichnis auf, sondern der Windows-Autostart
Code: Alles auswählen
import os
import sys
def register(folder):
start_file = "%s/start.bat" % folder
with open(start_file, "w") as f:
f.write("@echo off\n")
f.write("cd "%s"\n" % folder)
f.write("start /B dbremote.exe")
# Dann kommt Registry Eintrag auf Batch File
if __name__ == "__main__":
register(os.getcwd())
Es ist generell ein schlechtes vorgehen, daher ist es egal wer es aufruft. Und auch bei Autostart-Verknüpfungen kann der Benutzer auswählen, was das Arbeitsverzeichnis sein sollte.ice2k3 hat geschrieben:Ganz ehrlich, wie oft muss ich das denn noch sagen?!ice2k3 hat geschrieben: b) Nicht der Benutzer ruft es aus einem anderen Verzeichnis auf, sondern der Windows-Autostart
Aber nicht, wenn man es in der Registry macht...Leonidas hat geschrieben: Es ist generell ein schlechtes vorgehen, daher ist es egal wer es aufruft. Und auch bei Autostart-Verknüpfungen kann der Benutzer auswählen, was das Arbeitsverzeichnis sein sollte.
Nein, das Programm kopiert sich nirgendwo rein. Es wird nur in einem anderen Verzeichnis ausgeführt (C:\Dokumente und Einstellungen\%USERNAME%). Darum geht es auch in dieser Diskussion mit Leonidas gerade.INFACT hat geschrieben: Das mit der Registy finde ich nicht so gut, weil ich glaube, dass das programm sich selbst da rein kopiert [hab das mit os.getcwd() herausgefunden] (weiß aber nicht ob das richtig ist) und wenn man dll's braucht, dann funktioniert das Programm nicht. Wenn das nicht richtig ist, bitte korrigiert mich Wink
Wozu ich generell nicht raten kann, weil das einfach Userfeindlich ist und dort hauptsächlich irgendeine Software die man nicht haben will sich einträgt ohne dass der Otto-Normal-User es einfach so, gefahrlos rauslöschen kann. Da ist die Verknüpfung im Autostart besser. Und Verknüpfungen würde ich auch nicht in HKLM sondern wenn schon dann in HKCU anlegen.ice2k3 hat geschrieben:Aber nicht, wenn man es in der Registry macht...
Das musste mal den Leuten von Siemens erzählen ... deren PDM-System bringt dazu mal nichts von Haus aus mitLeonidas hat geschrieben:Datenbank-Server würde ich nicht in den Autostart schreiben sondern als Windows Service implementieren, analog zu Daemons unter Unices. Dann muss sich auch kein User anmelden, sondern dass System kann ganz ohne angemeldete User funktionieren.
Ist ja auch nicht Freie Software; in dem Bereich kann Freie Software durchaus punkten Und wir wissen ja alle das sie viel besser ist als propietäres ZeugHyperion hat geschrieben:Das musste mal den Leuten von Siemens erzählen ... deren PDM-System bringt dazu mal nichts von Haus aus mit
Ja, das habe ich mir auch schon überlegt, aber ich möchte mein Programm möglichst für beide Plattformen identisch haben.Leonidas hat geschrieben:Datenbank-Server würde ich nicht in den Autostart schreiben sondern als Windows Service implementieren, analog zu Daemons unter Unices. Dann muss sich auch kein User anmelden, sondern dass System kann ganz ohne angemeldete User funktionieren.