2009-05-19 7 views
4

Si j'ai une application de console normale (ou toute autre application) et faites glisser un fichier sur le fichier .exe en utilisant Windows Explorer (afin d'utiliser le fichier comme " command-line-input "), le répertoire courant est défini sur un autre répertoire (mon dossier personnel?), plutôt que sur le répertoire où se trouve l'application. Si je démarre l'application en double-cliquant dessus, le répertoire en cours est correctement défini.Faire glisser des fichiers vers un fichier .exe définit un répertoire de travail différent

Pour quelle raison? Est-il possible d'utiliser le dossier de l'application en tant que répertoire en cours?

Répondre

2

Recherche d'une raison pour laquelle je trouve cela sur autoitscript.com:

[L'application] hérite simplement quel que soit le répertoire de travail Explorer est

Ceci est cohérent avec mes propres observations, par exemple avec des touches programmables sur les claviers.

Je contourne est en réinitialisant le répertoire de travail. En C#, vous pouvez le faire comme ceci:

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

Vous auriez également de le faire lorsque vous démarrez une application mono sur Linux sans utiliser la ligne de commande.

0

C'est exactement la raison pour laquelle votre application ne devrait pas compter sur les répertoires de travail pour commencer. Le chemin complet du fichier sera spécifié sur la ligne de commande. Parse le chemin de celui-ci si nécessaire.

+0

Ce n'est pas toujours le cas. Si sous Windows 7 j'exécute TestApp "test" depuis la ligne de commande, l'argument [0] sera "TestApp" et non le chemin complet. – 0xC0DEFACE

+0

Je faisais référence au chemin que Windows passe pour le nom de fichier cliqué dans l'autre paramètre. C'est toujours un chemin complet lorsque le chemin est transmis dans le cadre d'un enregistrement d'extension de fichier ou d'une extension shell. –

Questions connexes