将文件拖到.exe文件上会设置不同的工作目录

5
如果我有一个常规的控制台应用程序(或任何其他应用程序),并使用Windows资源管理器将文件拖放到.exe文件上(以便将文件用作“命令行输入”),则当前目录会设置为某个其他目录(我的主文件夹?)而不是应用程序所在的目录。如果我通过双击启动应用程序,则当前目录会正确设置。这是为什么呢?是否有一种方法可以使用应用程序文件夹作为当前目录?
2个回答

3

autoitscript.com上,我发现以下内容:

[该应用程序] 简单地继承了资源管理器(Explorer)的工作目录

这符合我的观察结果,例如使用可编程键盘时。

我通过重新设置工作目录来解决此问题。在C#中,您可以像这样操作:

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

如果您在Linux上启动Mono应用程序而没有使用命令行,则需要执行此操作。


0
这正是为什么你的应用程序不应该依赖于工作目录的原因。文件的完整路径将在命令行上指定。如果需要,从中解析路径即可。

这并非总是如此。如果我在Windows 7上从命令行运行TestApp "test",那么参数[0]将是"TestApp"而不是完整路径。 - 0xC0DEFACE
我指的是Windows在另一个参数中传递的所点击文件名的路径。当路径作为文件扩展名注册或shell扩展的一部分传递时,它始终是完整路径。 - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接