2009-05-19 10 views
4

Wenn ich eine reguläre Konsolenanwendung (oder eine andere Anwendung) habe und eine Datei mit Windows Explorer in die EXE-Datei ziehen (um die Datei als " Befehlszeileneingabe "), wird das aktuelle Verzeichnis auf ein anderes Verzeichnis (mein Heimatordner?) und nicht auf das Verzeichnis festgelegt, in dem sich die Anwendung befindet. Wenn ich die Anwendung durch einen Doppelklick starte, ist das aktuelle Verzeichnis korrekt eingestellt.Das Ziehen von Dateien in eine EXE-Datei legt ein anderes Arbeitsverzeichnis fest

Was ist der Grund dafür? Gibt es eine Möglichkeit, den Ordner der Anwendung als aktuelles Verzeichnis zu verwenden?

Antwort

2

aus einem Grunde sucht ich dies auf autoitscript.com gefunden:

[Die Anwendung] einfach erbt, was Explorer Arbeitsverzeichnis ist

Das mit meinen eigenen Beobachtungen konsistent ist, zum Beispiel mit programmierbaren Tasten auf Tastaturen.

Ich arbeite um durch das Zurücksetzen des Arbeitsverzeichnisses. In C#, können Sie es wie folgt tun:

System.Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

würden Sie auch, dies zu tun haben, wenn Sie eine Mono-Anwendung auf Linux zu starten, ohne die Befehlszeile.

0

Das ist genau der Grund, warum Ihre App nicht auf Arbeitsverzeichnisse angewiesen sein sollte. Der vollständige Pfad der Datei wird in der Befehlszeile angegeben. Parsen Sie bei Bedarf den Pfad von ihm.

+0

Dies ist nicht immer der Fall. Wenn ich unter Windows 7 'TestApp" test "' von der Kommandozeile aus führe, wäre Argument [0] "TestApp" nicht der vollständige Pfad. – 0xC0DEFACE

+0

Ich bezog mich auf den Pfad, den Windows für den angeklickten Dateinamen in dem anderen Parameter übergibt. Dies ist immer ein vollständiger Pfad, wenn der Pfad als Teil einer Dateierweiterungsregistrierung oder Shell-Erweiterung übergeben wird. –