GetCurrentDirectory C#错误

时间:2012-04-22 22:07:41

标签: c# directory

我编写了一个C#程序,它自己复制并移动到一个精确的源目录中。它第一次移动时工作正常,但第二次当前目录的值错误。要确定我使用的文件路径:

string current = Directory.GetCurrentDirectory();

程序第二次移动时,我再次调用GetCurrentDirectory,但“当前”的值仍然是旧路径,它会给我FileNotFound错误。

如何让GetCurrentDirectory()阅读新路径?

2 个答案:

答案 0 :(得分:1)

您需要在新流程中执行您的应用程序。您可能正在使用原始进程,并且其当前目录不会更改为您将应用程序复制到的任何位置。

我不知道你要用你的应用程序实现什么,但是肯定会将每个副本作为一个新进程执行,并允许当前进程自行终止。

答案 1 :(得分:0)

跟踪你移动它的位置。

GetCurrentDirectory()是执行程序的工作目录。只需移动可执行文件就不会改变(如果再次从新位置执行它,它会改变)。因此,要么创建一个新进程并在其新位置执行exe,要么只保留将其移动到的位置。后者要容易得多。

作为一个注释,复制exe文件对程序的运行实例没有任何影响,因为它仍然从“旧”位置运行(此时可能实际上已加载到内存中)。对于正在运行的程序,exe文件副本只是一个文件。你为什么这样做?

如果你想执行新的exe并退出旧的exe,那么使用this api并调用

Process.start("new/path/to/exe");
Environment.exit(0);

如果你只是在主,你可以简单地返回,而不是呼叫退出。 这应该工作,它可能会导致两个程序退出(如果这会杀死子进程),但我认为它没有。