如果我有一个常规的控制台应用程序(或任何其他应用程序),并使用Windows资源管理器将文件拖放到.exe文件上(以便将文件用作“命令行输入”),则当前目录会设置为某个其他目录(我的主文件夹?)而不是应用程序所在的目录。如果我通过双击启动应用程序,则当前目录会正确设置。这是为什么呢?是否有一种方法可以使用应用程序文件夹作为当前目录?
在autoitscript.com上,我发现以下内容:
[该应用程序] 简单地继承了资源管理器(Explorer)的工作目录
这符合我的观察结果,例如使用可编程键盘时。
我通过重新设置工作目录来解决此问题。在C#中,您可以像这样操作:
System.Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
如果您在Linux上启动Mono应用程序而没有使用命令行,则需要执行此操作。
TestApp "test"
,那么参数[0]将是"TestApp"而不是完整路径。 - 0xC0DEFACE